From 42c92a6bcba8e15ba41409c5d3e6c736877e5cac Mon Sep 17 00:00:00 2001 From: jbnadal Date: Tue, 28 Mar 2017 18:29:16 +0200 Subject: [PATCH] Bump buildroot to version 2017-02 TG-3 #closed --- bsp/buildroot/.br-external.mk | 10 + bsp/buildroot/.defconfig | 1 - bsp/buildroot/CHANGES | 408 +- bsp/buildroot/Config.in | 74 +- bsp/buildroot/Config.in.legacy | 374 +- bsp/buildroot/DEVELOPERS | 1696 +++++ bsp/buildroot/Makefile | 312 +- bsp/buildroot/Makefile.legacy | 3 - bsp/buildroot/arch/Config.in | 29 +- bsp/buildroot/arch/Config.in.aarch64 | 7 - bsp/buildroot/arch/Config.in.arm | 96 +- bsp/buildroot/arch/Config.in.mips | 94 +- bsp/buildroot/arch/Config.in.or1k | 5 + bsp/buildroot/arch/Config.in.sh | 3 +- .../board/acmesystems/aria-g25/genimage.cfg | 35 + .../board/acmesystems/aria-g25/post-image.sh | 14 + .../board/acmesystems/aria-g25/readme.txt | 69 +- .../acmesystems/arietta-g25/genimage.cfg | 12 +- .../acmesystems/arietta-g25/post-image.sh | 4 +- .../board/acmesystems/arietta-g25/readme.txt | 14 +- bsp/buildroot/board/arm/juno/readme.txt | 21 +- .../{linux-3.12.config => linux-4.4.config} | 4 +- .../{linux-3.12.config => linux-4.4.config} | 26 +- .../atmel/at91sam9260ek/linux-3.9.config | 98 - bsp/buildroot/board/atmel/readme.txt | 3 +- .../atmel/sama5d2_xplained_mmc/genimage.cfg | 1 + .../atmel/sama5d3_xplained_mmc/genimage.cfg | 1 + .../atmel/sama5d4_xplained_mmc/genimage.cfg | 1 + .../board/beagleboardx15/genimage.cfg | 26 + .../board/beagleboardx15/post-image.sh | 15 + bsp/buildroot/board/beagleboardx15/readme.txt | 49 + bsp/buildroot/board/beaglebone/genimage.cfg | 4 +- .../board/beaglebone/linux-3.12.config | 251 - .../board/beaglebone/linux-4.1-sgx.fragment | 12 + ...1-keep-jtag-clock-alive-for-debugger.patch | 16 + ...-flush-management-symbols-when-MULTI.patch | 34 - bsp/buildroot/board/beaglebone/post-image.sh | 3 +- bsp/buildroot/board/beaglebone/readme.txt | 72 +- bsp/buildroot/board/beaglebone/uEnv.txt | 3 +- .../boundarydevices/common/6x_bootscript.txt | 8 +- .../board/boundarydevices/common/genimage.cfg | 14 +- .../board/calao/qil-a9260/linux-3.4.7.config | 111 - .../at91bootstrap/0001-qil-a9260.patch | 603 -- .../patches/barebox/0001-qil-a9260.patch | 36 - .../patches/linux/0001-qil-a9260.patch | 27 - .../at91bootstrap-1.16-tny-a9g20-lpw.patch | 551 -- .../calao/tny-a9g20-lpw/linux-3.9.config | 187 - .../at91bootstrap-1.16-usb-a9260.patch | 603 -- .../board/calao/usb-a9260/linux-3.7.4.config | 97 - .../at91bootstrap-1.16-usb-a9263.patch | 851 --- .../board/calao/usb-a9263/linux-3.4.4.config | 102 - .../calao/usb-a9g20-lpw/linux-3.4.4.config | 105 - .../at91bootstrap/0001-usb-a9g20-lpw.patch | 610 -- .../patches/barebox/0001-usb-a9g20-lpw.patch | 12 - bsp/buildroot/board/congatec/qmx6/readme.txt | 36 - .../board/cubietech/cubieboard/boot.cmd | 4 - .../cubieboard/linux-cubieboard2.config | 749 --- .../board/cubietech/cubieboard/mkcubiecard.sh | 124 - .../board/cubietech/cubieboard/post-build.sh | 14 - .../board/cubietech/cubieboard/readme.txt | 62 - .../board/digilent/zybo/genimage.cfg | 29 + .../zybo}/post-image.sh | 14 +- bsp/buildroot/board/digilent/zybo/readme.txt | 76 + .../digilent/zybo/system.bit} | 0 bsp/buildroot/board/digilent/zybo/uEnv.txt | 5 + .../imx/genimage.cfg.template} | 13 +- .../board/freescale/common/imx/post-image.sh | 54 + .../common/mxs/genimage.cfg.template | 39 + .../board/freescale/common/mxs/post-image.sh | 54 + .../board/freescale/create-boot-sd.sh | 93 - .../board/freescale/imx23evk/readme.txt | 48 + .../board/freescale/imx25pdk/readme.txt | 2 +- .../freescale/imx28evk/create-boot-sd.sh | 97 - .../board/freescale/imx28evk/readme.txt | 7 +- .../freescale/imx31_3stack/linux.fragment | 1 + .../board/freescale/imx51evk/genimage.cfg | 41 - .../board/freescale/imx51evk/readme.txt | 2 +- .../board/freescale/imx53loco/genimage.cfg | 42 - .../board/freescale/imx53loco/post-image.sh | 14 - .../board/freescale/imx6q-sabresd/readme.txt | 57 + .../board/freescale/imx6sabre/readme.txt | 10 +- .../board/freescale/imx6ulevk/post-image.sh | 14 - .../board/freescale/imx6ulevk/readme.txt | 2 +- .../board/freescale/imx7dsdb/genimage.cfg | 41 - .../board/freescale/imx7dsdb/readme.txt | 2 +- .../board/freescale/mpc8315erdb/readme.txt | 30 +- .../board/freescale/p1010rdb/readme.txt | 45 +- .../board/freescale/p2020ds/linux-3.12.config | 374 -- .../p2020ds/linux-fix-c6187597-breakage.patch | 51 - .../board/freescale/p2020ds/readme.txt | 40 - .../board/freescale/warpboard/genimage.cfg | 41 - .../board/grinn/chiliboard/genimage.cfg | 31 + .../board/grinn/chiliboard/post-image.sh | 14 + .../board/grinn/chiliboard/readme.txt | 46 + .../liteboard}/genimage.cfg | 17 +- ...ts-imx6ul-Add-DTS-for-liteSOM-module.patch | 113 + ...ARM-dts-imx6ul-Add-DTS-for-liteBoard.patch | 190 + .../board/grinn/liteboard/post-image.sh | 14 + .../board/grinn/liteboard/readme.txt | 45 + .../board/hardkernel/odroidc2/boot.ini | 154 +- .../{linux-3.8.config => linux-3.14.config} | 97 +- bsp/buildroot/board/lego/ev3/genimage.cfg | 57 + bsp/buildroot/board/lego/ev3/linux.fragment | 7 + .../warpboard => lego/ev3}/post-image.sh | 2 +- bsp/buildroot/board/lego/ev3/readme.txt | 92 +- .../{linux-4.6.config => linux-4.8.config} | 3 + bsp/buildroot/board/nanopi-neo/boot.cmd | 8 + bsp/buildroot/board/nanopi-neo/genimage.cfg | 34 + bsp/buildroot/board/nanopi-neo/post-build.sh | 12 + bsp/buildroot/board/nanopi-neo/post-image.sh | 15 + bsp/buildroot/board/nanopi-neo/readme.txt | 43 + .../genimage-imx233_olinuxino.cfg | 28 - .../olimex/imx233_olinuxino/linux-3.18.config | 152 - .../imx233_olinuxino/linux-wifi.fragment | 18 + .../board/olimex/imx233_olinuxino/readme.txt | 85 +- .../board/orangepi/orangepi-one/boot.cmd | 8 + .../board/orangepi/orangepi-one/genimage.cfg | 36 + .../board/orangepi/orangepi-one/post-build.sh | 1 + .../board/orangepi/orangepi-one/post-image.sh | 1 + .../board/orangepi/orangepi-one/readme.txt | 29 + .../{orangepipc => orangepi-pc}/boot.cmd | 0 .../{orangepipc => orangepi-pc}/genimage.cfg | 0 .../board/orangepi/orangepi-pc/post-build.sh | 1 + .../board/orangepi/orangepi-pc/post-image.sh | 1 + .../{orangepipc => orangepi-pc}/readme.txt | 2 +- .../orangepi/{orangepipc => }/post-build.sh | 2 +- .../orangepi/{orangepipc => }/post-image.sh | 8 - .../{linux-4.7.config => linux-4.9.config} | 0 .../qemu/arm-versatile/linux-4.4-nommu.config | 46 + .../{linux-4.7.config => linux-4.9.config} | 0 .../patches/linux/versatile-nommu.patch | 30 + .../board/qemu/arm-versatile/readme.txt | 4 + .../{linux-4.7.config => linux-4.8.config} | 0 .../patches/linux/m68knommu-fix-signal.patch | 45 - .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.8.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../board/qemu/mips64r6-malta/readme.txt | 7 +- .../{linux-4.7.config => linux-4.9.config} | 0 .../board/qemu/mips64r6el-malta/readme.txt | 5 +- .../board/qemu/nios2-10m50/linux-4.9.fragment | 3 + .../board/qemu/nios2-10m50/readme.txt | 9 + .../board/qemu/or1k/linux-4.9.config | 30 + .../or1k/patches/linux/0001-ld-or1k.patch | 16 + .../or1k/patches/linux/0002-kallsyms.patch | 25 + bsp/buildroot/board/qemu/or1k/readme.txt | 9 + .../{linux-4.7.config => linux-4.9.config} | 0 .../board/qemu/ppc-g3beige/readme.txt | 2 +- .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 .../{linux-4.7.config => linux-4.9.config} | 0 bsp/buildroot/board/qemu/x86/linux-4.7.config | 1 - bsp/buildroot/board/qemu/x86/linux-4.9.config | 1 + .../{linux-4.7.config => linux-4.9.config} | 0 ....7-nommu.config => linux-4.8-nommu.config} | 0 .../{linux-4.7.config => linux-4.8.config} | 0 .../raspberrypi/genimage-raspberrypi.cfg | 2 +- .../raspberrypi/genimage-raspberrypi0.cfg | 2 +- .../raspberrypi/genimage-raspberrypi2.cfg | 2 +- .../raspberrypi/genimage-raspberrypi3.cfg | 3 +- bsp/buildroot/board/raspberrypi/post-image.sh | 16 +- bsp/buildroot/board/raspberrypi/readme.txt | 13 +- .../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 + .../board/solidrun/mx6cubox/boot.scr.txt | 7 + .../board/solidrun/mx6cubox/genimage.cfg | 29 + .../board/solidrun/mx6cubox/post-build.sh | 8 + .../mx6cubox}/post-image.sh | 0 .../board/solidrun/mx6cubox/readme.txt | 18 + .../0001-arc-vdk-Disable-halt-on-reset.patch | 32 + ...rc-vdk-Add-support-of-MMC-controller.patch | 70 + .../0003-arc-vdk-Add-support-of-UIO.patch | 48 + .../board/technexion/imx6ulpico/genimage.cfg | 41 - .../technexion/imx6ulpico/linux.fragment | 1 - .../patches/linux/0001-picowifi.patch | 66 - .../board/technexion/imx6ulpico/post-image.sh | 14 - .../board/technexion/imx6ulpico/readme.txt | 2 +- .../board/technologic/ts4900/genimage.cfg | 10 + .../board/technologic/ts4900/post-image.sh | 17 + .../board/technologic/ts4900/readme.txt | 52 + bsp/buildroot/board/udoo/mx6qdl/genimage.cfg | 48 + .../board/udoo/mx6qdl/linux.fragment | 1 + .../imx51evk => udoo/mx6qdl}/post-image.sh | 0 bsp/buildroot/board/udoo/mx6qdl/readme.txt | 17 + bsp/buildroot/board/udoo/neo/boot.scr.txt | 7 + bsp/buildroot/board/udoo/neo/genimage.cfg | 32 + .../patches/linux/0001-udoo_neo_support.patch | 560 ++ bsp/buildroot/board/udoo/neo/post-build.sh | 8 + .../imx7dsdb => udoo/neo}/post-image.sh | 1 + bsp/buildroot/board/udoo/neo/readme.txt | 16 + bsp/buildroot/board/wandboard/boot.scr.txt | 7 + bsp/buildroot/board/wandboard/genimage.cfg | 11 +- bsp/buildroot/board/wandboard/post-build.sh | 8 + bsp/buildroot/board/wandboard/post-image.sh | 2 - bsp/buildroot/board/wandboard/uboot-env.txt | 28 - bsp/buildroot/board/warp7/linux.fragment | 1 + bsp/buildroot/board/warp7/readme.txt | 104 + .../lib/firmware/brcm/brcmfmac43430-sdio.txt | 42 + bsp/buildroot/board/zynq/readme.txt | 48 +- bsp/buildroot/boot/Config.in | 2 + .../boot/arm-trusted-firmware/Config.in | 65 + .../arm-trusted-firmware.hash | 3 + .../arm-trusted-firmware.mk | 69 + bsp/buildroot/boot/at91bootstrap3/Config.in | 4 +- .../boot/at91bootstrap3/at91bootstrap3.hash | 2 +- bsp/buildroot/boot/barebox/Config.in | 4 +- .../boot/barebox/barebox-aux/Config.in | 3 +- bsp/buildroot/boot/barebox/barebox.hash | 6 +- bsp/buildroot/boot/barebox/barebox/Config.in | 3 +- .../boot/boot-wrapper-aarch64/Config.in | 8 +- .../boot-wrapper-aarch64.mk | 8 +- bsp/buildroot/boot/gummiboot/Config.in | 4 - .../boot/syslinux/0002-disable-pie.patch | 22 + ...mcpu-XXX-instead-of-obsolete-marcXXX.patch | 39 + ...mcpu-XXX-instead-of-obsolete-marcXXX.patch | 39 + bsp/buildroot/boot/uboot/Config.in | 32 +- bsp/buildroot/boot/uboot/uboot.hash | 2 +- bsp/buildroot/boot/uboot/uboot.mk | 118 +- .../boot/vexpress-firmware/Config.in | 6 + .../vexpress-firmware/vexpress-firmware.hash | 2 + .../vexpress-firmware/vexpress-firmware.mk | 20 + .../acmesystems_aria_g25_128mb_defconfig | 30 +- .../acmesystems_aria_g25_256mb_defconfig | 30 +- .../acmesystems_arietta_g25_128mb_defconfig | 40 +- .../acmesystems_arietta_g25_256mb_defconfig | 40 +- bsp/buildroot/configs/arm_juno_defconfig | 15 +- .../configs/armadeus_apf28_defconfig | 8 +- .../configs/armadeus_apf51_defconfig | 6 +- .../configs/armadeus_apf9328_defconfig | 6 +- .../configs/at91sam9260eknf_defconfig | 36 +- .../configs/at91sam9g20dfc_defconfig | 39 +- .../configs/at91sam9g45m10ek_defconfig | 30 +- bsp/buildroot/configs/at91sam9rlek_defconfig | 30 +- bsp/buildroot/configs/at91sam9x5ek_defconfig | 14 +- .../atmel_sama5d2_xplained_mmc_defconfig | 8 +- .../atmel_sama5d2_xplained_mmc_dev_defconfig | 8 +- .../configs/atmel_sama5d3_xplained_defconfig | 8 +- .../atmel_sama5d3_xplained_dev_defconfig | 8 +- .../atmel_sama5d3_xplained_mmc_defconfig | 8 +- .../atmel_sama5d3_xplained_mmc_dev_defconfig | 8 +- .../configs/atmel_sama5d3xek_defconfig | 26 +- .../configs/atmel_sama5d4_xplained_defconfig | 8 +- .../atmel_sama5d4_xplained_dev_defconfig | 8 +- .../atmel_sama5d4_xplained_mmc_defconfig | 8 +- .../atmel_sama5d4_xplained_mmc_dev_defconfig | 8 +- .../configs/atmel_sama5d4ek_defconfig | 30 - .../configs/beagleboardx15_defconfig | 27 + bsp/buildroot/configs/beaglebone_defconfig | 46 +- .../configs/beaglebone_qt5_defconfig | 43 + .../configs/calao_qil_a9260_defconfig | 20 - .../configs/calao_tny_a9g20_lpw_defconfig | 29 - .../configs/calao_usb_a9260_defconfig | 18 - .../configs/calao_usb_a9263_defconfig | 17 - .../configs/calao_usb_a9g20_lpw_defconfig | 17 - bsp/buildroot/configs/ci20_defconfig | 4 +- bsp/buildroot/configs/cubieboard_defconfig | 38 - .../configs/freescale_imx28evk_defconfig | 18 +- .../configs/freescale_imx31_3stack_defconfig | 12 +- .../freescale_imx6dlsabreauto_defconfig | 18 +- .../configs/freescale_imx6dlsabresd_defconfig | 17 +- .../freescale_imx6qsabreauto_defconfig | 18 +- .../configs/freescale_imx6qsabresd_defconfig | 18 +- .../freescale_imx6sololiteevk_defconfig | 17 +- .../configs/freescale_imx6sxsabresd_defconfig | 15 +- .../configs/freescale_imx6ulevk_defconfig | 8 +- .../configs/freescale_imx7dsabresd_defconfig | 8 +- .../configs/freescale_mpc8315erdb_defconfig | 9 - .../configs/freescale_p1010rdb_pa_defconfig | 8 - .../configs/freescale_p2020ds_defconfig | 24 - bsp/buildroot/configs/galileo_defconfig | 8 +- .../configs/grinn_chiliboard_defconfig | 28 + .../configs/grinn_liteboard_defconfig | 26 + bsp/buildroot/configs/imx23evk_defconfig | 34 + bsp/buildroot/configs/imx6q-sabresd_defconfig | 36 + bsp/buildroot/configs/imx6ulpico_defconfig | 17 +- bsp/buildroot/configs/kb9202_defconfig | 17 - bsp/buildroot/configs/lego_ev3_defconfig | 31 +- .../configs/linksprite_pcduino_defconfig | 8 +- bsp/buildroot/configs/mini2440_defconfig | 34 - .../minnowboard_max-graphical_defconfig | 6 +- .../configs/minnowboard_max_defconfig | 8 +- bsp/buildroot/configs/mx25pdk_defconfig | 10 +- bsp/buildroot/configs/mx51evk_defconfig | 2 +- bsp/buildroot/configs/mx53loco_defconfig | 10 +- bsp/buildroot/configs/mx6cubox_defconfig | 31 + .../configs/mx6sx_udoo_neo_defconfig | 31 + bsp/buildroot/configs/mx6udoo_defconfig | 29 + bsp/buildroot/configs/nanopi_neo_defconfig | 41 + bsp/buildroot/configs/nitrogen6sx_defconfig | 9 +- bsp/buildroot/configs/nitrogen6x_defconfig | 9 +- bsp/buildroot/configs/nitrogen7_defconfig | 7 +- bsp/buildroot/configs/odroidc2_defconfig | 7 +- .../olimex_a20_olinuxino_lime2_defconfig | 6 +- .../olimex_a20_olinuxino_lime_defconfig | 11 +- .../olimex_a20_olinuxino_lime_mali_defconfig | 12 +- .../configs/olimex_imx233_olinuxino_defconfig | 20 +- bsp/buildroot/configs/orangepi_one_defconfig | 29 + ...gepipc_defconfig => orangepi_pc_defconfig} | 12 +- .../configs/pc_x86_64_bios_defconfig | 8 +- bsp/buildroot/configs/pc_x86_64_efi_defconfig | 8 +- .../configs/qemu_aarch64_virt_defconfig | 8 +- .../configs/qemu_arm_versatile_defconfig | 8 +- .../qemu_arm_versatile_nommu_defconfig | 32 + .../configs/qemu_arm_vexpress_defconfig | 6 +- .../configs/qemu_m68k_mcf5208_defconfig | 10 +- .../configs/qemu_m68k_q800_defconfig | 8 +- .../configs/qemu_microblazebe_mmu_defconfig | 8 +- .../configs/qemu_microblazeel_mmu_defconfig | 8 +- .../configs/qemu_mips32r2_malta_defconfig | 8 +- .../configs/qemu_mips32r2el_malta_defconfig | 8 +- .../configs/qemu_mips32r6_malta_defconfig | 8 +- .../configs/qemu_mips32r6el_malta_defconfig | 8 +- .../configs/qemu_mips64_malta_defconfig | 8 +- .../configs/qemu_mips64el_malta_defconfig | 8 +- .../configs/qemu_mips64r6_malta_defconfig | 8 +- .../configs/qemu_mips64r6el_malta_defconfig | 8 +- .../configs/qemu_nios2_10m50_defconfig | 10 + bsp/buildroot/configs/qemu_or1k_defconfig | 19 + .../configs/qemu_ppc64_pseries_defconfig | 6 +- .../configs/qemu_ppc_g3beige_defconfig | 8 +- .../configs/qemu_ppc_mpc8544ds_defconfig | 8 +- .../configs/qemu_ppc_virtex_ml507_defconfig | 8 +- bsp/buildroot/configs/qemu_sh4_r2d_defconfig | 8 +- .../configs/qemu_sh4eb_r2d_defconfig | 8 +- .../configs/qemu_sparc64_sun4u_defconfig | 8 +- .../configs/qemu_sparc_ss10_defconfig | 8 +- bsp/buildroot/configs/qemu_x86_64_defconfig | 8 +- bsp/buildroot/configs/qemu_x86_defconfig | 8 +- .../configs/qemu_xtensa_lx60_defconfig | 8 +- .../configs/qemu_xtensa_lx60_nommu_defconfig | 8 +- bsp/buildroot/configs/qmx6_defconfig | 33 - bsp/buildroot/configs/raspberrypi0_defconfig | 2 +- bsp/buildroot/configs/raspberrypi2_defconfig | 2 +- bsp/buildroot/configs/raspberrypi3_defconfig | 5 +- bsp/buildroot/configs/raspberrypi_defconfig | 2 +- bsp/buildroot/configs/riotboard_defconfig | 2 + .../configs/snps_aarch64_vdk_defconfig | 8 +- ...k_defconfig => snps_archs38_vdk_defconfig} | 9 +- .../configs/snps_archs38_zebu_defconfig | 18 + bsp/buildroot/configs/snps_axs101_defconfig | 8 +- bsp/buildroot/configs/snps_axs103_defconfig | 8 +- bsp/buildroot/configs/ts4900_defconfig | 17 + bsp/buildroot/configs/udoo_quad_defconfig | 29 - bsp/buildroot/configs/wandboard_defconfig | 32 +- bsp/buildroot/configs/warp7_defconfig | 51 + bsp/buildroot/configs/warpboard_defconfig | 16 +- bsp/buildroot/configs/zynq_microzed_defconfig | 2 + bsp/buildroot/configs/zynq_zc706_defconfig | 2 + bsp/buildroot/configs/zynq_zed_defconfig | 2 + bsp/buildroot/configs/zynq_zybo_defconfig | 30 + .../docs/manual/adding-packages-asciidoc.txt | 11 +- .../docs/manual/adding-packages-directory.txt | 5 +- .../docs/manual/adding-packages-generic.txt | 22 +- .../docs/manual/adding-packages-kconfig.txt | 6 + ...dding-packages-linux-kernel-spec-infra.txt | 49 +- .../docs/manual/adding-packages-perl.txt | 13 +- .../docs/manual/adding-packages-python.txt | 8 +- .../docs/manual/adding-packages-virtual.txt | 6 - .../docs/manual/adding-packages-waf.txt | 85 + bsp/buildroot/docs/manual/adding-packages.txt | 2 + bsp/buildroot/docs/manual/appendix.txt | 38 +- .../docs/manual/br2-external-converting.txt | 39 + bsp/buildroot/docs/manual/common-usage.txt | 5 +- bsp/buildroot/docs/manual/configure.txt | 4 +- bsp/buildroot/docs/manual/contribute.txt | 19 +- .../manual/customize-directory-structure.txt | 13 +- .../docs/manual/customize-outside-br.txt | 338 +- .../docs/manual/customize-packages.txt | 25 +- bsp/buildroot/docs/manual/developers.txt | 46 + .../docs/manual/download-location.txt | 2 + bsp/buildroot/docs/manual/legal-notice.txt | 10 + bsp/buildroot/docs/manual/manual.html | 600 +- bsp/buildroot/docs/manual/manual.mk | 21 - bsp/buildroot/docs/manual/manual.pdf | Bin 601906 -> 499402 bytes bsp/buildroot/docs/manual/manual.text | 5825 ++--------------- bsp/buildroot/docs/manual/manual.txt | 4 +- bsp/buildroot/docs/manual/prerequisite.txt | 2 + bsp/buildroot/docs/website/download.html | 36 +- bsp/buildroot/docs/website/footer.html | 5 +- bsp/buildroot/docs/website/header.html | 2 +- .../website/images/free-electrons-logo.png | Bin 9968 -> 9174 bytes bsp/buildroot/docs/website/js/buildroot.js | 73 +- bsp/buildroot/docs/website/news.html | 243 +- bsp/buildroot/docs/website/sponsors.html | 75 +- bsp/buildroot/docs/website/support.html | 6 +- bsp/buildroot/fs/common.mk | 5 +- bsp/buildroot/fs/ext2/Config.in | 2 +- bsp/buildroot/fs/ext2/ext2.mk | 11 +- bsp/buildroot/fs/iso9660/iso9660.mk | 2 +- bsp/buildroot/fs/tar/tar.mk | 3 +- bsp/buildroot/fs/ubifs/ubi.mk | 6 +- bsp/buildroot/linux/Config.ext.in | 80 +- bsp/buildroot/linux/Config.in | 26 +- bsp/buildroot/linux/linux-ext-aufs.mk | 21 + .../linux/linux-ext-ev3dev-linux-drivers.mk | 12 + bsp/buildroot/linux/linux.mk | 50 +- bsp/buildroot/package/4th/4th.mk | 8 +- bsp/buildroot/package/Config.in | 110 +- bsp/buildroot/package/Config.in.host | 7 + bsp/buildroot/package/Makefile.in | 38 +- ...-__acl_-prefixes-to-internal-symbols.patch | 292 + bsp/buildroot/package/acpica/acpica.hash | 3 +- bsp/buildroot/package/acpica/acpica.mk | 2 +- bsp/buildroot/package/acpid/acpid.hash | 4 +- bsp/buildroot/package/acpid/acpid.mk | 2 +- bsp/buildroot/package/acpitool/Config.in | 9 +- .../adwaita-icon-theme.hash | 4 +- .../adwaita-icon-theme/adwaita-icon-theme.mk | 6 +- bsp/buildroot/package/aespipe/aespipe.hash | 2 +- bsp/buildroot/package/aespipe/aespipe.mk | 2 +- bsp/buildroot/package/agentpp/agentpp.hash | 2 +- bsp/buildroot/package/agentpp/agentpp.mk | 2 +- .../package/alljoyn-base/alljoyn-base.mk | 1 - .../package/alljoyn-tcl/alljoyn-tcl.hash | 2 +- .../package/alljoyn-tcl/alljoyn-tcl.mk | 2 +- bsp/buildroot/package/alljoyn/alljoyn.hash | 2 +- bsp/buildroot/package/alljoyn/alljoyn.mk | 2 +- .../package/alsa-lib/0003-dlmisc.patch | 10 +- .../0005-remove-powerpc64-workaround.patch | 67 + .../0006-ucm-parser-needs-limits.h.patch | 30 + bsp/buildroot/package/alsa-lib/alsa-lib.hash | 2 +- bsp/buildroot/package/alsa-lib/alsa-lib.mk | 2 +- bsp/buildroot/package/alsa-utils/Config.in | 3 - .../package/alsa-utils/alsa-utils.hash | 2 +- .../package/alsa-utils/alsa-utils.mk | 3 +- .../am335x-pru-package/am335x-pru-package.mk | 6 +- bsp/buildroot/package/am33x-cm3/am33x-cm3.mk | 2 +- .../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 + bsp/buildroot/package/amd-catalyst/Config.in | 81 + .../package/amd-catalyst/amd-catalyst.hash | 2 + .../package/amd-catalyst/amd-catalyst.mk | 174 + bsp/buildroot/package/amd-catalyst/gl.pc | 12 + .../package/angular-websocket/Config.in | 7 + .../angular-websocket/angular-websocket.hash | 2 + .../angular-websocket/angular-websocket.mk | 18 + bsp/buildroot/package/apache/Config.in | 28 + bsp/buildroot/package/apache/apache.hash | 2 +- bsp/buildroot/package/apache/apache.mk | 12 +- bsp/buildroot/package/arptables/arptables.mk | 2 +- bsp/buildroot/package/assimp/assimp.mk | 11 +- bsp/buildroot/package/atk/atk.hash | 4 +- bsp/buildroot/package/atk/atk.mk | 2 +- ...01-remove-unused-include-of-termio.h.patch | 52 + bsp/buildroot/package/atop/Config.in | 18 + bsp/buildroot/package/atop/atop.hash | 2 + bsp/buildroot/package/atop/atop.mk | 21 + bsp/buildroot/package/aubio/Config.in | 21 + bsp/buildroot/package/aubio/aubio.hash | 2 + bsp/buildroot/package/aubio/aubio.mk | 62 + bsp/buildroot/package/audit/Config.in | 5 +- bsp/buildroot/package/audit/audit.hash | 2 +- bsp/buildroot/package/audit/audit.mk | 6 +- .../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 + bsp/buildroot/package/aufs-util/Config.in | 35 + bsp/buildroot/package/aufs-util/aufs-util.mk | 59 + bsp/buildroot/package/aufs/Config.in | 16 + bsp/buildroot/package/aufs/aufs.mk | 22 + .../autoconf-archive/autoconf-archive.hash | 2 +- .../autoconf-archive/autoconf-archive.mk | 2 +- .../package/autossh/0001-honour-LDFLAGS.patch | 16 + bsp/buildroot/package/avrdude/avrdude.mk | 2 +- bsp/buildroot/package/axel/axel.mk | 4 +- bsp/buildroot/package/babeld/babeld.mk | 4 +- .../package/bash/0031-patchlevel-31.patch | 116 - .../package/bash/0032-patchlevel-32.patch | 55 - .../package/bash/0033-patchlevel-33.patch | 229 - .../package/bash/0034-patchlevel-34.patch | 94 - .../package/bash/0035-patchlevel-35.patch | 67 - .../package/bash/0036-patchlevel-36.patch | 61 - .../package/bash/0037-patchlevel-37.patch | 47 - .../package/bash/0038-patchlevel-38.patch | 92 - .../package/bash/0039-patchlevel-39.patch | 61 - .../package/bash/0040-patchlevel-40.patch | 51 - .../package/bash/0041-patchlevel-41.patch | 76 - .../package/bash/0042-patchlevel-42.patch | 59 - .../package/bash/0043-patchlevel-43.patch | 63 - .../package/bash/0044-patchlevel-44.patch | 52 - .../package/bash/0045-patchlevel-45.patch | 56 - .../package/bash/0046-patchlevel-46.patch | 59 - bsp/buildroot/package/bash/bash.hash | 2 +- bsp/buildroot/package/bash/bash.mk | 2 +- bsp/buildroot/package/bash/bash44-001.patch | 64 + bsp/buildroot/package/bash/bash44-002.patch | 73 + bsp/buildroot/package/bash/bash44-003.patch | 62 + bsp/buildroot/package/bash/bash44-004.patch | 88 + bsp/buildroot/package/bash/bash44-005.patch | 51 + bsp/buildroot/package/bash/bash44-006.patch | 63 + bsp/buildroot/package/bash/bash44-007.patch | 155 + bsp/buildroot/package/bash/bash44-008.patch | 88 + bsp/buildroot/package/bash/bash44-009.patch | 111 + bsp/buildroot/package/bash/bash44-010.patch | 53 + bsp/buildroot/package/bash/bash44-011.patch | 54 + bsp/buildroot/package/bash/bash44-012.patch | 165 + .../package/batman-adv/batman-adv.mk | 1 - bsp/buildroot/package/bcache-tools/Config.in | 5 +- ...1-Fix-Libs.private-flags-for-mbedtls.patch | 49 + bsp/buildroot/package/bctoolbox/Config.in | 15 + .../package/bctoolbox/bctoolbox.hash | 2 + bsp/buildroot/package/bctoolbox/bctoolbox.mk | 46 + .../0005-fix-doc-installation-path.patch | 24 + .../package/berkeleydb/berkeleydb.mk | 7 + bsp/buildroot/package/bind/bind.hash | 4 +- bsp/buildroot/package/bind/bind.mk | 11 +- ...01-fix-enable-install-libiberty-flag.patch | 46 - ...egv-on-initial-instructions-overflow.patch | 66 - .../package/binutils/2.24/120-sh-conf.patch | 29 - .../2.24/300-001_ld_makefile_patch.patch | 24 - .../2.24/300-012_check_ldrunpath_length.patch | 21 - .../2.24/900-xtensa-trampolines.patch | 846 --- .../901-xtensa-gas-first-frag-alignment.patch | 51 - ...xtensa-gas-ld-diff-relocation-signed.patch | 133 - ...-segfault-when-linking-linux-modules.patch | 47 - ...et-out-of-range-xtensa-ld-relaxation.patch | 79 - ...search-code-for-conditional-branches.patch | 90 - ...ptimize-check_section_ebb_pcrels_fit.patch | 502 -- ...7-xtensa-optimize-removed_by_actions.patch | 356 - ...xtensa-optimize-find_removed_literal.patch | 146 - ...-replace-action-list-with-splay-tree.patch | 826 --- ...ensa-optimize-trampolines-relaxation.patch | 345 - ...ized-symbol-refcounting-with-gc-sect.patch | 57 - ...-segfault-with-text-section-literals.patch | 56 - .../913-xtensa-add-auto-litpools-option.patch | 698 -- ...sa-fix-signedness-of-gas-relocations.patch | 99 - ...ensa-fix-.init-.fini-literals-moving.patch | 149 - .../binutils/2.25.1/800-microblaze-musl.patch | 22 + .../2.25.1/916-microblaze-pr21180.patch | 33 + .../2.26.1/0800-microblaze-musl.patch | 23 + .../2.26.1/0906-microblaze-pr21180.patch | 33 + .../2.27/0100-elf32-arm-no-data-fix.patch | 22 + .../package/binutils/2.27/0120-sh-conf.patch | 46 + ....c-fixup-xg_reverse_shift_count-typo.patch | 33 + .../0300-ld-makefile.patch | 0 .../0301-check-ldrunpath-length.patch | 0 .../0500-add-sysroot-fix-from-bug-3049.patch | 0 .../0600-poison-system-directories.patch | 0 ...dynamic-tag-VMA-and-size-from-dynami.patch | 36 + .../binutils/2.27/0905-bfin-rofixup-bug.patch | 21 + .../2.27/0906-microblaze-pr21180.patch | 33 + bsp/buildroot/package/binutils/Config.in.host | 18 +- .../0300-ld-makefile.patch | 41 + .../0301-check-ldrunpath-length.patch | 36 + .../0500-add-sysroot-fix-from-bug-3049.patch} | 19 +- .../0600-poison-system-directories.patch} | 215 +- bsp/buildroot/package/binutils/binutils.hash | 3 +- bsp/buildroot/package/binutils/binutils.mk | 42 +- bsp/buildroot/package/bitstream/bitstream.mk | 2 +- .../0001-iowatcher-link-with-lrt.patch | 31 + bsp/buildroot/package/blktrace/Config.in | 9 +- bsp/buildroot/package/blktrace/blktrace.mk | 4 +- bsp/buildroot/package/bluez5_utils/Config.in | 12 +- .../package/bluez5_utils/bluez5_utils.hash | 2 +- .../package/bluez5_utils/bluez5_utils.mk | 2 +- bsp/buildroot/package/bmon/bmon.hash | 2 +- bsp/buildroot/package/bmon/bmon.mk | 2 +- bsp/buildroot/package/boost/boost.mk | 6 +- bsp/buildroot/package/botan/botan.mk | 8 +- .../0002-fix-for-kernel-headers-3.8+.patch | 30 - .../bridge-utils/0003-sysfs-write-fixes.patch | 81 - bsp/buildroot/package/bridge-utils/Config.in | 2 +- .../package/bridge-utils/bridge-utils.hash | 5 +- .../package/bridge-utils/bridge-utils.mk | 5 +- bsp/buildroot/package/bsdiff/bsdiff.mk | 4 +- ...ll-static-library-and-headers-in-in.patch} | 14 +- ...nfigure-refactor-backtrace-detection.patch | 132 - ...ure-refactor-always_inline-detection.patch | 42 - ...ine-BTRFS_DISABLE_BACKTRACE-when-bui.patch | 42 + ...le-fix-undefined-PATH_MAX-under-musl.patch | 67 - bsp/buildroot/package/btrfs-progs/Config.in | 5 +- .../package/btrfs-progs/btrfs-progs.hash | 2 +- .../package/btrfs-progs/btrfs-progs.mk | 2 +- bsp/buildroot/package/bullet/bullet.hash | 2 +- bsp/buildroot/package/bullet/bullet.mk | 13 +- bsp/buildroot/package/busybox/0003-gzip.patch | 18 - bsp/buildroot/package/busybox/0004-ip.patch | 18 - bsp/buildroot/package/busybox/0005-ntpd.patch | 20 - ...ve-free-prev_hist-out-of-signal-path.patch | 48 - bsp/buildroot/package/busybox/Config.in | 3 + bsp/buildroot/package/busybox/S50telnet | 5 +- .../package/busybox/busybox-minimal.config | 444 +- bsp/buildroot/package/busybox/busybox.config | 452 +- bsp/buildroot/package/busybox/busybox.hash | 6 +- bsp/buildroot/package/busybox/busybox.mk | 11 +- bsp/buildroot/package/bzip2/Config.in | 2 +- bsp/buildroot/package/c-ares/c-ares.hash | 2 +- bsp/buildroot/package/c-ares/c-ares.mk | 2 +- .../ca-certificates/ca-certificates.hash | 4 +- .../ca-certificates/ca-certificates.mk | 6 +- bsp/buildroot/package/cairo/cairo.hash | 6 +- bsp/buildroot/package/cairo/cairo.mk | 2 +- bsp/buildroot/package/can-utils/Config.in | 5 + .../package/can-utils/can-utils.hash | 2 +- bsp/buildroot/package/can-utils/can-utils.mk | 2 +- bsp/buildroot/package/canfestival/Config.in | 2 +- .../0001-Add-missing-cstdio-include.patch | 29 + .../package/cantarell/cantarell.hash | 4 +- bsp/buildroot/package/cantarell/cantarell.mk | 2 +- ...crash-on-devices-without-RSA-support.patch | 43 + bsp/buildroot/package/cbootimage/Config.in | 16 + .../package/cbootimage/cbootimage.mk | 2 + ...t-to-sysroot-option-to-relative-path.patch | 43 + bsp/buildroot/package/ccache/ccache.hash | 4 +- bsp/buildroot/package/ccache/ccache.mk | 2 +- .../package/checkpolicy/checkpolicy.hash | 2 +- .../package/checkpolicy/checkpolicy.mk | 8 +- bsp/buildroot/package/chrony/chrony.hash | 6 +- bsp/buildroot/package/chrony/chrony.mk | 8 +- .../package/cifs-utils/cifs-utils.hash | 2 +- .../package/cifs-utils/cifs-utils.mk | 2 +- bsp/buildroot/package/circus/Config.in | 8 +- bsp/buildroot/package/circus/circus.mk | 1 - bsp/buildroot/package/cjson/Config.in | 4 +- bsp/buildroot/package/cjson/cjson.hash | 2 + bsp/buildroot/package/cjson/cjson.mk | 22 +- bsp/buildroot/package/clamav/clamav.mk | 1 + bsp/buildroot/package/classpath/Config.in | 9 +- .../cmake/0001-rename_cmake_rootfile.patch | 30 +- bsp/buildroot/package/cmake/cmake.hash | 4 +- bsp/buildroot/package/cmake/cmake.mk | 6 +- bsp/buildroot/package/collectd/Config.in | 50 +- bsp/buildroot/package/collectd/collectd.hash | 2 +- bsp/buildroot/package/collectd/collectd.mk | 31 +- .../0001-src-fix-build-with-musl-libc.patch | 37 - .../conntrack-tools/conntrack-tools.hash | 6 +- .../conntrack-tools/conntrack-tools.mk | 2 +- .../package/coreutils/coreutils.hash | 2 +- bsp/buildroot/package/coreutils/coreutils.mk | 5 +- bsp/buildroot/package/cpio/cpio.mk | 2 +- bsp/buildroot/package/cppzmq/Config.in | 6 +- bsp/buildroot/package/crudini/crudini.hash | 6 +- bsp/buildroot/package/crudini/crudini.mk | 5 +- .../cryptodev-linux/cryptodev-linux.hash | 4 +- .../cryptodev-linux/cryptodev-linux.mk | 8 +- ...-DoS-in-ASN.1-decoders-CVE-2016-9939.patch | 69 + bsp/buildroot/package/cryptopp/cryptopp.hash | 3 +- bsp/buildroot/package/cryptopp/cryptopp.mk | 8 +- bsp/buildroot/package/cryptsetup/Config.in | 13 +- .../package/cryptsetup/cryptsetup.hash | 2 +- .../package/cryptsetup/cryptsetup.mk | 2 +- ...03-Sanitize-the-installation-process.patch | 14 +- bsp/buildroot/package/cups/cups.hash | 2 +- bsp/buildroot/package/cups/cups.mk | 7 +- .../0001-configure.ac-remove-Werror.patch | 30 + bsp/buildroot/package/czmq/Config.in | 6 +- bsp/buildroot/package/darkhttpd/Config.in | 14 + bsp/buildroot/package/darkhttpd/S50darkhttpd | 45 + .../package/darkhttpd/darkhttpd.hash | 2 + bsp/buildroot/package/darkhttpd/darkhttpd.mk | 34 + .../package/darkhttpd/darkhttpd.service | 11 + .../package/dbus-glib/dbus-glib.hash | 2 +- bsp/buildroot/package/dbus-glib/dbus-glib.mk | 2 +- bsp/buildroot/package/dbus/S30dbus | 6 +- bsp/buildroot/package/dbus/dbus.hash | 2 +- bsp/buildroot/package/dbus/dbus.mk | 2 +- .../0001-io.cc-add-stdio.h-include.patch | 36 + bsp/buildroot/package/ddrescue/Config.in | 12 + bsp/buildroot/package/ddrescue/ddrescue.hash | 2 + bsp/buildroot/package/ddrescue/ddrescue.mk | 29 + .../package/debianutils/debianutils.hash | 4 +- .../package/debianutils/debianutils.mk | 4 +- .../dhcp/0001-dhcp-cross-compile.patch | 34 - .../package/dhcp/0003-bind-host-cc.patch | 40 - bsp/buildroot/package/dhcp/dhcp.hash | 4 +- bsp/buildroot/package/dhcp/dhcp.mk | 7 +- bsp/buildroot/package/dhcpcd/dhcpcd.hash | 2 +- bsp/buildroot/package/dhcpcd/dhcpcd.mk | 2 +- .../package/diffutils/diffutils.hash | 2 +- bsp/buildroot/package/diffutils/diffutils.mk | 2 +- ...-fix-client-gfx_state-initialisation.patch | 39 + bsp/buildroot/package/directfb/Config.in | 6 +- bsp/buildroot/package/directfb/directfb.mk | 2 +- bsp/buildroot/package/dmalloc/dmalloc.mk | 2 +- bsp/buildroot/package/dmidecode/dmidecode.mk | 4 +- bsp/buildroot/package/dmraid/Config.in | 6 +- bsp/buildroot/package/doc-asciidoc.mk | 2 +- .../package/docker-containerd/Config.in | 5 +- .../docker-containerd/docker-containerd.hash | 2 +- .../docker-containerd/docker-containerd.mk | 2 +- bsp/buildroot/package/docker-engine/Config.in | 5 +- .../package/docker-engine/docker-engine.hash | 2 +- .../package/docker-engine/docker-engine.mk | 14 +- ...heck-for-detecting-header-execinfo.h.patch | 58 - bsp/buildroot/package/domoticz/Config.in | 5 + bsp/buildroot/package/domoticz/domoticz.hash | 2 +- bsp/buildroot/package/domoticz/domoticz.mk | 2 +- ....c-Fix-undefined-PATH_MAX-under-musl.patch | 31 + .../package/dosfstools/Config.in.host | 2 +- .../dovecot-pigeonhole.hash | 4 +- .../dovecot-pigeonhole/dovecot-pigeonhole.mk | 2 +- bsp/buildroot/package/dovecot/Config.in | 9 +- bsp/buildroot/package/dovecot/dovecot.hash | 4 +- bsp/buildroot/package/dovecot/dovecot.mk | 16 +- .../package/drbd-utils/drbd-utils.mk | 4 +- bsp/buildroot/package/dstat/dstat.mk | 2 +- bsp/buildroot/package/dtc/dtc.mk | 10 +- .../dtv-scan-tables/dtv-scan-tables.mk | 11 +- bsp/buildroot/package/duma/duma.mk | 8 +- bsp/buildroot/package/dvb-apps/dvb-apps.mk | 6 +- ...-MCONFIG.in-handle-CLOCK_GETTIME_LIB.patch | 35 + .../0002-fuse2fs-might-need-librt.patch | 63 - .../0003-fuse2fs-needs-SYSLIBS.patch | 30 - bsp/buildroot/package/e2fsprogs/Config.in | 5 - .../package/e2fsprogs/e2fsprogs.hash | 4 +- bsp/buildroot/package/e2fsprogs/e2fsprogs.mk | 28 +- bsp/buildroot/package/e2tools/Config.in | 2 +- bsp/buildroot/package/easydbus/Config.in | 14 + bsp/buildroot/package/easydbus/easydbus.hash | 2 + bsp/buildroot/package/easydbus/easydbus.mk | 13 + bsp/buildroot/package/ed/ed.hash | 6 +- bsp/buildroot/package/ed/ed.mk | 9 +- .../0001-Allow-build-with-uClibc.patch | 40 + bsp/buildroot/package/efibootmgr/Config.in | 25 +- .../package/efibootmgr/efibootmgr.hash | 2 +- .../package/efibootmgr/efibootmgr.mk | 12 +- ...-avoid-the-multiple-definitions-bug-.patch | 29 + ...01-Workaround-rename-of-linux-nvme.h.patch | 32 - .../efivar/0002-Allow-build-with-uClibc.patch | 38 + ...-Make.rules-fix-build-with-make-3.81.patch | 45 - bsp/buildroot/package/efivar/Config.in | 31 +- bsp/buildroot/package/efivar/efivar.hash | 2 +- bsp/buildroot/package/efivar/efivar.mk | 12 +- bsp/buildroot/package/efl/Config.in | 116 +- bsp/buildroot/package/efl/efl.hash | 4 +- bsp/buildroot/package/efl/efl.mk | 110 +- bsp/buildroot/package/ejabberd/ejabberd.hash | 2 +- ...-.eo.h-files-from-includesub_HEADERS.patch | 45 - bsp/buildroot/package/elementary/Config.in | 15 - .../package/elementary/elementary.hash | 2 - .../package/elementary/elementary.mk | 48 - bsp/buildroot/package/elfutils/elfutils.mk | 22 +- ...-only-when-Wayland-support-is-enable.patch | 39 - bsp/buildroot/package/enlightenment/Config.in | 11 +- .../package/enlightenment/enlightenment.hash | 4 +- .../package/enlightenment/enlightenment.mk | 10 +- .../package/erlang-rebar/erlang-rebar.hash | 2 +- .../package/erlang-rebar/erlang-rebar.mk | 2 +- bsp/buildroot/package/erlang/erlang.mk | 14 + ...ages-cast-string_ordinal-init-values.patch | 33 + bsp/buildroot/package/espeak/espeak.mk | 4 +- bsp/buildroot/package/ethtool/ethtool.hash | 2 +- bsp/buildroot/package/ethtool/ethtool.mk | 2 +- ...0002-missing-defines-for-old-kernels.patch | 44 + ...ng.h-fix-getrandom-system-call-numbe.patch | 64 - bsp/buildroot/package/eudev/Config.in | 2 +- bsp/buildroot/package/eudev/eudev.hash | 4 +- bsp/buildroot/package/eudev/eudev.mk | 4 +- .../package/ev3dev-linux-drivers/Config.in | 12 + .../ev3dev-linux-drivers.mk | 11 + .../lego-linux-drivers.hash | 2 + bsp/buildroot/package/evemu/evemu.hash | 4 +- bsp/buildroot/package/evemu/evemu.mk | 2 +- bsp/buildroot/package/evtest/evtest.mk | 1 - bsp/buildroot/package/exim/exim.hash | 2 +- bsp/buildroot/package/exim/exim.mk | 4 +- bsp/buildroot/package/expedite/expedite.hash | 2 + bsp/buildroot/package/expedite/expedite.mk | 3 +- bsp/buildroot/package/ezxml/ezxml.mk | 11 +- bsp/buildroot/package/f2fs-tools/Config.in | 2 +- bsp/buildroot/package/fakedate/fakedate | 57 + bsp/buildroot/package/fakedate/fakedate.mk | 15 + .../fakeroot/0001-hide-dlsym-error.patch | 34 + bsp/buildroot/package/fbterm/0004-iconv.patch | 41 + bsp/buildroot/package/fbterm/fbterm.mk | 2 +- bsp/buildroot/package/fdk-aac/Config.in | 17 +- bsp/buildroot/package/feh/feh.hash | 2 +- bsp/buildroot/package/feh/feh.mk | 6 +- ...ub-palette-as-stored-on-normal-dvd-s.patch | 63 - ...h => 0001-bfin-disable-optimization.patch} | 0 ...t-returns-AVERROR_IO-we-are-done.-ff.patch | 32 - ...7-TV-Teletext-support-for-DVB-EBU-Te.patch | 47 - ...accept-mpegts-PMT-that-isn-t-current.patch | 46 - ...-PMT-unless-it-s-version-has-changed.patch | 48 - ...mps-as-well-as-PCR-timestamps-to-fin.patch | 105 - ...tream-durations-using-read_timestamp.patch | 74 - ...second-skew-between-streams-in-mov-b.patch | 33 - ...-mpegts-demuxer-on-some-malformed-mp.patch | 44 - ...-Speed-up-mpegts-av_find_stream_info.patch | 30 - ...va-playback-of-streams-that-don-t-st.patch | 77 - bsp/buildroot/package/ffmpeg/Config.in | 11 +- bsp/buildroot/package/ffmpeg/ffmpeg.hash | 2 +- bsp/buildroot/package/ffmpeg/ffmpeg.mk | 45 +- bsp/buildroot/package/file/file.hash | 2 +- bsp/buildroot/package/file/file.mk | 4 +- bsp/buildroot/package/filemq/Config.in | 6 +- bsp/buildroot/package/filemq/filemq.mk | 2 +- bsp/buildroot/package/fio/fio.mk | 4 +- ...ure-don-t-try-to-unset-g-from-CFLAGS.patch | 27 - ...onfigure.ac-relax-linux-OS-detection.patch | 35 + .../package/flac/0002-sigemptyset.patch | 18 - bsp/buildroot/package/flac/flac.hash | 2 +- bsp/buildroot/package/flac/flac.mk | 4 +- bsp/buildroot/package/fmlib/fmlib.mk | 2 +- bsp/buildroot/package/freerdp/freerdp.mk | 2 +- .../firmware-imx/firmware-imx.mk | 1 + .../freescale-imx/imx-codec/imx-codec.hash | 2 +- .../freescale-imx/imx-codec/imx-codec.mk | 2 +- .../imx-gpu-viv/imx-gpu-viv.hash | 2 +- .../freescale-imx/imx-gpu-viv/imx-gpu-viv.mk | 2 +- .../freescale-imx/imx-kobs/imx-kobs.hash | 2 +- .../freescale-imx/imx-kobs/imx-kobs.mk | 4 +- .../freescale-imx/imx-parser/imx-parser.hash | 2 +- .../freescale-imx/imx-parser/imx-parser.mk | 2 +- .../freescale-imx/imx-uuc/imx-uuc.hash | 2 +- .../package/freescale-imx/imx-uuc/imx-uuc.mk | 4 +- .../freescale-imx/imx-vpu/imx-vpu.hash | 2 +- .../package/freescale-imx/imx-vpu/imx-vpu.mk | 2 +- .../imx-vpuwrap/imx-vpuwrap.hash | 2 +- .../freescale-imx/imx-vpuwrap/imx-vpuwrap.mk | 2 +- .../kernel-module-imx-gpu-viv.hash | 2 +- .../kernel-module-imx-gpu-viv.mk | 2 +- bsp/buildroot/package/freeswitch/Config.in | 2 +- .../package/freeswitch/freeswitch.hash | 4 +- .../package/freeswitch/freeswitch.mk | 2 +- bsp/buildroot/package/freetype/freetype.hash | 2 +- bsp/buildroot/package/freetype/freetype.mk | 2 +- .../fwts/0001-build-do-not-use-Werror.patch | 69 + bsp/buildroot/package/fwts/Config.in | 27 + bsp/buildroot/package/fwts/fwts.hash | 2 + bsp/buildroot/package/fwts/fwts.mk | 16 + bsp/buildroot/package/fwup/fwup.mk | 4 +- .../package/gadgetfs-test/gadgetfs-test.mk | 4 +- bsp/buildroot/package/gauche/Config.in | 2 +- bsp/buildroot/package/gawk/gawk.hash | 2 +- bsp/buildroot/package/gawk/gawk.mk | 2 +- ...werpc-link-with-math-lib.patch.conditional | 127 - .../package/gcc/4.7.4/111-pr65730.patch | 37 - .../package/gcc/4.7.4/130-pr43538.patch | 25 - .../4.7.4/305-libmudflap-susv3-legacy.patch | 49 - .../gcc/4.7.4/810-arm-softfloat-libgcc.patch | 25 - .../gcc/4.7.4/830-arm_unbreak_armv4t.patch | 13 - .../843-gcc-4.7.3-Fix-PR-target-58595.patch | 102 - .../4.7.4/844-gcc-fix-build-with-gcc5.patch | 42 - .../gcc/4.7.4/851-PR-other-56780.patch | 244 - .../package/gcc/4.7.4/900-musl-support.patch | 587 -- ...059-libgcc-should-not-use-__write-fo.patch | 43 + ...059-libgcc-should-not-use-__write-fo.patch | 43 + ...473-Reduce-size-of-Cortex-A8-automat.patch | 68 + .../875-xtensa-implement-trap-pattern.patch | 67 + .../876-xtensa-Fix-PR-target-78603.patch | 37 + .../880-gcc-nios2-Add-IJMP_REGS-enum.patch | 103 + .../gcc/5.4.0/892-microblaze-uclibc.patch | 24 - .../910-microblaze-musl-and-uclibc.patch | 36 + .../gcc/5.4.0/911-ppc-musl-support.patch | 75 + ...41-mips-Add-support-for-mips-r6-musl.patch | 43 + .../{6.1.0 => 6.3.0}/100-uclibc-conf.patch | 0 .../301-missing-execinfo_h.patch | 0 .../810-arm-softfloat-libgcc.patch | 0 .../830-arm_unbreak_armv4t.patch | 0 ...473-Reduce-size-of-Cortex-A8-automat.patch | 69 + .../gcc/{6.1.0 => 6.3.0}/860-cilk-wchar.patch | 0 .../870-xtensa-Fix-PR-target-78118.patch | 320 + .../871-xtensa-Fix-PR-target-78603.patch | 37 + .../890-fix-m68k-compile.patch | 0 .../891-fix-m68k-uclinux.patch | 0 ...mkmap-symver-support-skip_underscore.patch | 16 +- ...in-use-the-generic-linker-version-in.patch | 20 +- ...DWARF-compilation-with-FDPIC-targets.patch | 16 +- .../gcc/6.3.0/895-bfin-define-REENTRANT.patch | 17 + .../940-uclinux-enable-threads.patch | 0 ...41-mips-Add-support-for-mips-r6-musl.patch | 43 + bsp/buildroot/package/gcc/Config.in.host | 109 +- .../301-missing-execinfo_h.patch | 0 .../860-cilk-wchar.patch | 0 .../940-uclinux-enable-threads.patch | 0 .../package/gcc/gcc-final/gcc-final.mk | 18 +- .../package/gcc/gcc-initial/gcc-initial.mk | 16 +- bsp/buildroot/package/gcc/gcc.hash | 8 +- bsp/buildroot/package/gcc/gcc.mk | 39 +- .../100-uclibc-conf.patch | 8 +- .../301-missing-execinfo_h.patch | 10 +- .../850-libstdcxx-uclibc-c99.patch | 46 +- .../gcc/musl-5.4.0/860-cilk-wchar.patch | 56 + ...libgcc-disable-split-stack-nothreads.patch | 14 + bsp/buildroot/package/gd/gd.hash | 2 +- bsp/buildroot/package/gd/gd.mk | 4 +- ...-Revert-sim-unify-SIM_CPU-definition.patch | 355 - ...ut-common-mach-model-defines-into-ar.patch | 155 + ...01-gdbserver-fix-uClibc-whithout-MMU.patch | 34 - ...rver-xtensa-drop-xtensa_usrregs_info.patch | 47 - ...-xtensa-fix-typo-in-XCHAL_HAVE_LOOPS.patch | 46 - .../0004-xtensa-implement-NPTL-helpers.patch | 267 - ...-Add-some-casts-for-building-on-musl.patch | 70 - ...Move-W_STOPCODE-to-common-gdb_wait-h.patch | 63 - .../gdb/7.9.1/0007-move-__SIGRTMIN.patch | 58 - bsp/buildroot/package/gdb/Config.in | 4 +- bsp/buildroot/package/gdb/Config.in.host | 20 +- bsp/buildroot/package/gdb/gdb.hash | 4 +- bsp/buildroot/package/gdb/gdb.mk | 24 +- .../package/gdk-pixbuf/gdk-pixbuf.hash | 4 +- .../package/gdk-pixbuf/gdk-pixbuf.mk | 4 +- ...mpilation-warnings-in-generated-code.patch | 65 + bsp/buildroot/package/genimage/Config.in.host | 2 +- bsp/buildroot/package/genimage/genimage.hash | 2 +- bsp/buildroot/package/genimage/genimage.mk | 3 +- bsp/buildroot/package/gflags/gflags.mk | 3 +- bsp/buildroot/package/git-crypt/Config.in | 15 + .../package/git-crypt/git-crypt.hash | 2 + bsp/buildroot/package/git-crypt/git-crypt.mk | 25 + bsp/buildroot/package/git/git.hash | 2 +- bsp/buildroot/package/git/git.mk | 4 +- .../glib-networking/glib-networking.hash | 4 +- .../glib-networking/glib-networking.mk | 4 +- ...wrong-vfork-aliases-in-libpthread.so.patch | 76 + ...fixes-to-the-vfork-aliases-in-libpth.patch | 122 + ...wrong-vfork-aliases-in-libpthread.so.patch | 76 + ...fixes-to-the-vfork-aliases-in-libpth.patch | 122 + bsp/buildroot/package/glibc/Config.in | 14 +- bsp/buildroot/package/glibc/glibc.hash | 1 + bsp/buildroot/package/glibc/glibc.mk | 8 +- bsp/buildroot/package/glibmm/glibmm.hash | 4 +- bsp/buildroot/package/glibmm/glibmm.mk | 4 +- bsp/buildroot/package/glmark2/Config.in | 6 + bsp/buildroot/package/glmark2/glmark2.hash | 2 +- bsp/buildroot/package/glmark2/glmark2.mk | 24 +- bsp/buildroot/package/glog/Config.in | 3 - bsp/buildroot/package/gmp/gmp.hash | 2 +- bsp/buildroot/package/gmp/gmp.mk | 4 +- bsp/buildroot/package/gnuchess/gnuchess.hash | 2 +- bsp/buildroot/package/gnuchess/gnuchess.mk | 2 +- ...01-configure-add-without-demo-option.patch | 63 +- bsp/buildroot/package/gnuplot/gnuplot.hash | 6 +- bsp/buildroot/package/gnuplot/gnuplot.mk | 3 +- bsp/buildroot/package/gnuradio/Config.in | 1 + bsp/buildroot/package/gnuradio/gnuradio.mk | 3 +- bsp/buildroot/package/gnutls/Config.in | 1 + bsp/buildroot/package/gnutls/gnutls.hash | 2 +- bsp/buildroot/package/gnutls/gnutls.mk | 13 +- .../package/go-bootstrap/go-bootstrap.hash | 2 +- .../package/go-bootstrap/go-bootstrap.mk | 2 +- bsp/buildroot/package/go/Config.in.host | 4 +- bsp/buildroot/package/go/go.hash | 2 +- bsp/buildroot/package/go/go.mk | 2 +- .../package/google-breakpad/Config.in | 16 +- .../google-breakpad/google-breakpad.hash | 2 + .../google-breakpad/google-breakpad.mk | 25 +- bsp/buildroot/package/gpm/gpm.mk | 5 +- bsp/buildroot/package/gpsd/gpsd.mk | 2 + bsp/buildroot/package/gptfdisk/Config.in | 6 +- bsp/buildroot/package/granite/granite.hash | 6 +- bsp/buildroot/package/granite/granite.mk | 4 +- .../package/graphite2/graphite2.hash | 4 +- bsp/buildroot/package/graphite2/graphite2.mk | 2 +- bsp/buildroot/package/grep/grep.hash | 2 +- bsp/buildroot/package/grep/grep.mk | 2 +- .../gsettings-desktop-schemas.hash | 4 +- .../gsettings-desktop-schemas.mk | 2 +- bsp/buildroot/package/gssdp/gssdp.hash | 4 +- bsp/buildroot/package/gssdp/gssdp.mk | 4 +- .../package/gstreamer/gst-ffmpeg/Config.in | 2 +- .../gstreamer/gst-plugins-bad/Config.in | 1 + .../gstreamer/gst-plugins-base/Config.in | 7 +- .../gst-plugins-base/gst-plugins-base.mk | 1 + .../package/gstreamer/gstreamer/gstreamer.mk | 2 +- bsp/buildroot/package/gstreamer1/Config.in | 1 + .../package/gstreamer1/gst-omx/gst-omx.hash | 4 +- .../package/gstreamer1/gst-omx/gst-omx.mk | 4 +- ...2src-Add-V4L2_PIX_FMT_XRGB555X-check.patch | 33 - .../package/gstreamer1/gst1-imx/Config.in | 91 +- .../package/gstreamer1/gst1-imx/gst1-imx.hash | 2 +- .../package/gstreamer1/gst1-imx/gst1-imx.mk | 69 +- .../gstreamer1/gst1-libav/gst1-libav.hash | 4 +- .../gstreamer1/gst1-libav/gst1-libav.mk | 4 +- .../gstreamer1/gst1-plugins-bad/Config.in | 43 + .../gst1-plugins-bad/gst1-plugins-bad.hash | 4 +- .../gst1-plugins-bad/gst1-plugins-bad.mk | 42 +- .../gst1-plugins-base/gst1-plugins-base.hash | 4 +- .../gst1-plugins-base/gst1-plugins-base.mk | 4 +- .../gstreamer1/gst1-plugins-good/Config.in | 2 + .../gst1-plugins-good/gst1-plugins-good.hash | 4 +- .../gst1-plugins-good/gst1-plugins-good.mk | 4 +- .../gst1-plugins-ugly/gst1-plugins-ugly.hash | 4 +- .../gst1-plugins-ugly/gst1-plugins-ugly.mk | 6 +- .../gstreamer1/gst1-rtsp-server/Config.in | 12 + .../gst1-rtsp-server/gst1-rtsp-server.hash | 2 + .../gst1-rtsp-server/gst1-rtsp-server.mk | 27 + .../gstreamer1/gst1-validate/Config.in | 1 + .../gst1-validate/gst1-validate.hash | 4 +- .../gstreamer1/gst1-validate/gst1-validate.mk | 5 +- ...ix-unaligned-access-support-for-the-.patch | 33 + .../gstreamer1/gstreamer1/gstreamer1.hash | 4 +- .../gstreamer1/gstreamer1/gstreamer1.mk | 31 +- bsp/buildroot/package/gtest/Config.in | 2 +- bsp/buildroot/package/gtest/gtest.hash | 4 +- bsp/buildroot/package/gtest/gtest.mk | 9 +- bsp/buildroot/package/gtkmm3/gtkmm3.hash | 4 +- bsp/buildroot/package/gtkmm3/gtkmm3.mk | 4 +- .../package/gtksourceview/gtksourceview.hash | 4 +- .../package/gtksourceview/gtksourceview.mk | 4 +- .../guile/0003-remove_unused_funcs.patch | 36 - ... 0003-workaround-ice-ssa-corruption.patch} | 0 bsp/buildroot/package/guile/guile.hash | 2 +- bsp/buildroot/package/guile/guile.mk | 7 +- bsp/buildroot/package/gupnp-av/gupnp-av.hash | 4 +- bsp/buildroot/package/gupnp-av/gupnp-av.mk | 2 +- .../package/gupnp-tools/gupnp-tools.hash | 4 +- .../package/gupnp-tools/gupnp-tools.mk | 2 +- bsp/buildroot/package/gupnp/Config.in | 2 +- bsp/buildroot/package/gupnp/gupnp.hash | 4 +- bsp/buildroot/package/gupnp/gupnp.mk | 4 +- bsp/buildroot/package/gvfs/gvfs.hash | 4 +- bsp/buildroot/package/gvfs/gvfs.mk | 5 +- bsp/buildroot/package/gzip/gzip.mk | 7 + bsp/buildroot/package/hans/hans.mk | 2 +- bsp/buildroot/package/harfbuzz/harfbuzz.hash | 4 +- bsp/buildroot/package/harfbuzz/harfbuzz.mk | 2 +- bsp/buildroot/package/hdparm/hdparm.hash | 4 +- bsp/buildroot/package/hdparm/hdparm.mk | 2 +- .../package/heimdal/0001-vendor.patch | 19 - ...ix-race-in-Makefile-with-kadm5_err.h.patch | 35 - bsp/buildroot/package/heimdal/heimdal.hash | 2 +- bsp/buildroot/package/heimdal/heimdal.mk | 6 +- bsp/buildroot/package/hiawatha/hiawatha.hash | 2 +- bsp/buildroot/package/hiawatha/hiawatha.mk | 2 +- bsp/buildroot/package/hiredis/Config.in | 12 + bsp/buildroot/package/hiredis/hiredis.hash | 2 + bsp/buildroot/package/hiredis/hiredis.mk | 48 + ...-Fix-last-fragment-length-validation.patch | 54 - ...-Fix-last-fragment-length-validation.patch | 51 - .../0003-vlan-fix-musl-build-error.patch | 60 - ...bc-conflict-with-Linux-kernel-header.patch | 60 - ...a-Credential-with-invalid-passphrase.patch | 85 - bsp/buildroot/package/hostapd/hostapd.hash | 2 +- bsp/buildroot/package/hostapd/hostapd.mk | 2 +- ...nfigure.in-fix-AM_INIT_AUTOMAKE-call.patch | 2 +- bsp/buildroot/package/hplip/hplip.hash | 2 +- bsp/buildroot/package/hplip/hplip.mk | 4 +- bsp/buildroot/package/htop/htop.mk | 14 +- bsp/buildroot/package/httping/httping.hash | 2 +- bsp/buildroot/package/httping/httping.mk | 2 +- bsp/buildroot/package/ibrcommon/ibrcommon.mk | 1 - bsp/buildroot/package/ibrdtn/ibrdtn.mk | 1 - bsp/buildroot/package/ibrdtnd/ibrdtnd.mk | 1 - bsp/buildroot/package/icu/icu.hash | 6 +- bsp/buildroot/package/icu/icu.mk | 7 +- bsp/buildroot/package/ifenslave/Config.in | 7 + .../package/ifenslave/ifenslave.hash | 3 + bsp/buildroot/package/ifenslave/ifenslave.mk | 20 + bsp/buildroot/package/ifupdown/ifupdown.hash | 4 +- bsp/buildroot/package/ifupdown/ifupdown.mk | 4 +- ...c-unbreak-build-without-JPEG-support.patch | 47 + .../package/imagemagick/imagemagick.hash | 2 +- .../package/imagemagick/imagemagick.mk | 2 +- .../imx-usb-loader/imx-usb-loader.hash | 2 +- .../package/imx-usb-loader/imx-usb-loader.mk | 2 +- bsp/buildroot/package/inadyn/Config.in | 2 + bsp/buildroot/package/inadyn/inadyn.conf | 14 +- bsp/buildroot/package/inadyn/inadyn.hash | 4 +- bsp/buildroot/package/inadyn/inadyn.mk | 13 +- .../input-event-daemon/input-event-daemon.mk | 2 +- bsp/buildroot/package/intltool/Config.in | 9 - bsp/buildroot/package/intltool/intltool.mk | 1 - bsp/buildroot/package/iodine/iodine.mk | 2 +- bsp/buildroot/package/iozone/Config.in | 2 +- bsp/buildroot/package/iperf3/iperf3.hash | 4 +- bsp/buildroot/package/iperf3/iperf3.mk | 2 +- .../package/ipkg/0001-fix-musl-build.patch | 50 - .../package/ipkg/0002-fix-nommu.patch | 24 - bsp/buildroot/package/ipkg/Config.in | 7 - bsp/buildroot/package/ipkg/ipkg-build | 127 - bsp/buildroot/package/ipkg/ipkg.hash | 2 - bsp/buildroot/package/ipkg/ipkg.mk | 13 - ...> 0001-Fix-missing-stddef.h-include.patch} | 23 +- ...-Make-the-package-autoreconfigurable.patch | 38 - .../0002-Avoid-wchar_t-redefinition.patch | 60 - ...missing-linux-param.h-header-include.patch | 39 - bsp/buildroot/package/ipmitool/ipmitool.hash | 2 +- bsp/buildroot/package/ipmitool/ipmitool.mk | 5 +- ...workaround-to-the-libc-compat.h-copy.patch | 38 + .../0001-Avoid-in6_addr-redefinition.patch | 79 - ...c_bpf.c-fix-building-with-musl-libc..patch | 37 - .../0003-tc-add-missing-limits.h-header.patch | 38 + .../iproute2/0004-iproute-no-iptables.patch | 48 - bsp/buildroot/package/iproute2/iproute2.hash | 2 +- bsp/buildroot/package/iproute2/iproute2.mk | 2 +- bsp/buildroot/package/iprutils/Config.in | 3 - .../package/ipsec-tools/ipsec-tools.mk | 2 +- bsp/buildroot/package/ipset/ipset.hash | 6 +- bsp/buildroot/package/ipset/ipset.mk | 2 +- .../iptables/0001-fix-build-with-musl.patch | 67 - ...les-config-parser.h-to-BUILT_SOURCES.patch | 39 - ...003-extensions-added-AR-substitution.patch | 33 - bsp/buildroot/package/iptables/iptables.hash | 6 +- bsp/buildroot/package/iptables/iptables.mk | 5 +- bsp/buildroot/package/iptraf-ng/Config.in | 1 - bsp/buildroot/package/iputils/iputils.mk | 2 +- .../package/irda-utils/irda-utils.mk | 2 +- bsp/buildroot/package/irssi/irssi.hash | 2 +- bsp/buildroot/package/irssi/irssi.mk | 2 +- bsp/buildroot/package/iw/iw.hash | 2 +- bsp/buildroot/package/iw/iw.mk | 6 +- .../jack2/0001-Add-support-for-nios2.patch | 34 - .../0001-Improve-check-for-ucontext.patch | 84 + bsp/buildroot/package/jack2/jack2.mk | 28 +- ...-available-instead-of-fpu_control.h.patch} | 86 +- bsp/buildroot/package/jamvm/Config.in | 2 + bsp/buildroot/package/jamvm/jamvm.mk | 9 + bsp/buildroot/package/jansson/jansson.hash | 2 +- bsp/buildroot/package/jansson/jansson.mk | 2 +- bsp/buildroot/package/janus-gateway/Config.in | 50 +- .../package/janus-gateway/janus-gateway.hash | 2 +- .../package/janus-gateway/janus-gateway.mk | 77 +- .../0001-Disable-C-compiler-check.patch | 28 + .../jasper/0001-fix-CVE-2014-9029.patch | 36 - .../jasper/0002-fix-CVE-2014-8138.patch | 18 - .../jasper/0003-fix-CVE-2014-8137-1.patch | 47 - .../jasper/0004-fix-CVE-2014-8137-2.patch | 18 - .../jasper/0005-fix-CVE-2014-8157.patch | 17 - .../jasper/0006-fix-CVE-2014-8158.patch | 334 - .../package/jasper/0007-preserve-cflags.patch | 27 - .../jasper/0008-fix-CVE-2016-2116.patch | 18 - .../jasper/0009-fix-CVE-2016-1577.patch | 18 - .../jasper/0010-fix-CVE-2016-1867.patch | 16 - .../jasper/0011-fix-CVE-2015-5221.patch | 23 - .../jasper/0012-fix-CVE-2015-5203.patch | 187 - bsp/buildroot/package/jasper/Config.in | 1 - bsp/buildroot/package/jasper/jasper.hash | 2 +- bsp/buildroot/package/jasper/jasper.mk | 29 +- bsp/buildroot/package/jemalloc/jemalloc.mk | 9 + bsp/buildroot/package/jimtcl/jimtcl.mk | 2 +- .../package/jpeg-turbo/jpeg-turbo.hash | 8 +- .../package/jpeg-turbo/jpeg-turbo.mk | 9 +- bsp/buildroot/package/jpeg/Config.in | 12 +- bsp/buildroot/package/jsmn/Config.in | 8 + bsp/buildroot/package/jsmn/jsmn.hash | 2 + bsp/buildroot/package/jsmn/jsmn.mk | 24 + .../package/json-glib/json-glib.hash | 4 +- bsp/buildroot/package/json-glib/json-glib.mk | 2 +- ...reat-conversion-warning-as-error-onl.patch | 37 - bsp/buildroot/package/jsoncpp/jsoncpp.hash | 2 +- bsp/buildroot/package/jsoncpp/jsoncpp.mk | 2 +- .../package/kexec-lite/kexec-lite.hash | 2 +- .../package/kexec-lite/kexec-lite.mk | 3 +- bsp/buildroot/package/kexec/kexec.hash | 2 +- bsp/buildroot/package/kexec/kexec.mk | 5 +- bsp/buildroot/package/keyutils/keyutils.mk | 4 +- bsp/buildroot/package/kismet/Config.in | 1 - bsp/buildroot/package/kmod/kmod.mk | 10 +- bsp/buildroot/package/kmsxx/kmsxx.mk | 6 + .../kodi-addon-xvdr/0001-xbmc-rebrand.patch | 19 - .../package/kodi-addon-xvdr/Config.in | 16 - .../kodi-addon-xvdr/kodi-addon-xvdr.hash | 2 - .../kodi-addon-xvdr/kodi-addon-xvdr.mk | 26 - ...vr_types.h-Fix-compilation-with-gcc6.patch | 30 + .../kodi/0012-Fix_includes_in_amcodec.patch | 38 + bsp/buildroot/package/kodi/Config.in | 24 +- bsp/buildroot/package/kodi/kodi.mk | 17 +- .../kvm-unit-tests/0001-remove-werror.patch | 17 + .../package/kvm-unit-tests/Config.in | 30 + .../package/kvm-unit-tests/kvm-unit-tests.mk | 57 + bsp/buildroot/package/kvmtool/kvmtool.mk | 2 +- .../package/latencytop/latencytop.mk | 2 +- bsp/buildroot/package/lcdapi/lcdapi.mk | 6 + ...cms2.pc.in-thread-library-dependency.patch | 26 + ...2-Added-an-extra-check-to-MLU-bounds.patch | 27 + bsp/buildroot/package/lcms2/lcms2.hash | 7 +- bsp/buildroot/package/lcms2/lcms2.mk | 6 +- bsp/buildroot/package/leafnode2/leafnode2.mk | 2 +- .../leveldb/0002-Add-install-recipe.patch | 36 +- bsp/buildroot/package/leveldb/leveldb.hash | 2 +- bsp/buildroot/package/leveldb/leveldb.mk | 12 +- bsp/buildroot/package/lft/lft.hash | 2 +- bsp/buildroot/package/lft/lft.mk | 2 +- .../0002-fix-gcc-6-conflicts-signbit.patch | 57 + bsp/buildroot/package/lftp/lftp.hash | 4 +- bsp/buildroot/package/lftp/lftp.mk | 2 +- .../0001-Include-stdint.h-where-needed.patch | 47 - bsp/buildroot/package/libamcodec/Config.in | 4 +- .../package/libamcodec/libamcodec.hash | 2 +- .../package/libamcodec/libamcodec.mk | 2 +- ...asplib_CPUTimer.h-Fix-time.h-include.patch | 39 + .../package/libasplib/libasplib.hash | 2 +- bsp/buildroot/package/libasplib/libasplib.mk | 18 +- bsp/buildroot/package/libass/libass.hash | 2 +- bsp/buildroot/package/libass/libass.mk | 2 +- bsp/buildroot/package/libatomic_ops/Config.in | 4 +- .../package/libatomic_ops/libatomic_ops.hash | 2 +- .../package/libatomic_ops/libatomic_ops.mk | 2 +- .../libcap-ng/0001-add-missing-include.patch | 22 - .../package/libcap-ng/libcap-ng.hash | 2 +- bsp/buildroot/package/libcap-ng/libcap-ng.mk | 4 +- bsp/buildroot/package/libcdio/libcdio.hash | 2 +- bsp/buildroot/package/libcdio/libcdio.mk | 2 +- bsp/buildroot/package/libcec/libcec.hash | 2 +- bsp/buildroot/package/libcec/libcec.mk | 11 +- bsp/buildroot/package/libcrossguid/Config.in | 6 +- bsp/buildroot/package/libcurl/Config.in | 5 + bsp/buildroot/package/libcurl/libcurl.hash | 2 +- bsp/buildroot/package/libcurl/libcurl.mk | 13 +- bsp/buildroot/package/libdrm/Config.in | 8 + bsp/buildroot/package/libdrm/libdrm.hash | 4 +- bsp/buildroot/package/libdrm/libdrm.mk | 8 +- .../libdvbcsa/0001-altivec-powerpc64.patch | 33 + bsp/buildroot/package/libdvbcsa/libdvbcsa.mk | 1 + bsp/buildroot/package/libenca/libenca.hash | 2 +- bsp/buildroot/package/libenca/libenca.mk | 5 +- bsp/buildroot/package/libepoxy/libepoxy.mk | 2 +- .../package/libevas-generic-loaders/Config.in | 41 - .../libevas-generic-loaders.hash | 2 - .../libevas-generic-loaders.mk | 38 - ...ure-add-disable-runtime-tests-option.patch | 23 +- bsp/buildroot/package/libevdev/libevdev.hash | 4 +- bsp/buildroot/package/libevdev/libevdev.mk | 2 +- .../0001-Disable-building-test-programs.patch | 13 +- bsp/buildroot/package/libevent/libevent.hash | 6 +- bsp/buildroot/package/libevent/libevent.mk | 10 +- .../0001-fix-missing-config.h.patch | 29 - ...=> 0001-m4-fix-detection-of-atomics.patch} | 0 .../package/libfastjson/libfastjson.hash | 2 +- .../package/libfastjson/libfastjson.mk | 2 +- .../package/libfreeimage/libfreeimage.mk | 4 +- .../package/libfribidi/libfribidi.mk | 10 +- bsp/buildroot/package/libftdi/libftdi.mk | 6 +- .../libgail/0001-Relax-X11-dependencies.patch | 42 - bsp/buildroot/package/libgail/Config.in | 31 - bsp/buildroot/package/libgail/libgail.hash | 2 - bsp/buildroot/package/libgail/libgail.mk | 22 - .../package/libgcrypt/libgcrypt.hash | 6 +- bsp/buildroot/package/libgcrypt/libgcrypt.mk | 2 +- bsp/buildroot/package/libgee/libgee.hash | 4 +- bsp/buildroot/package/libgee/libgee.mk | 2 +- bsp/buildroot/package/libglew/libglew.hash | 5 +- bsp/buildroot/package/libglew/libglew.mk | 2 +- ....pc-include-libmount-in-Libs.private.patch | 32 + bsp/buildroot/package/libglib2/Config.in | 2 + bsp/buildroot/package/libglib2/libglib2.hash | 4 +- bsp/buildroot/package/libglib2/libglib2.mk | 13 +- bsp/buildroot/package/libglob/Config.in | 4 + bsp/buildroot/package/libglob/libglob.hash | 2 + bsp/buildroot/package/libglob/libglob.mk | 48 + .../package/libgpg-error/libgpg-error.hash | 2 +- .../package/libgpg-error/libgpg-error.mk | 2 +- bsp/buildroot/package/libgpgme/libgpgme.hash | 2 +- bsp/buildroot/package/libgpgme/libgpgme.mk | 11 +- bsp/buildroot/package/libgpiod/Config.in | 20 + bsp/buildroot/package/libgpiod/libgpiod.hash | 2 + bsp/buildroot/package/libgpiod/libgpiod.mk | 20 + bsp/buildroot/package/libgsm/0001-misc.patch | 205 + bsp/buildroot/package/libgsm/Config.in | 10 + bsp/buildroot/package/libgsm/libgsm.hash | 2 + bsp/buildroot/package/libgsm/libgsm.mk | 45 + bsp/buildroot/package/libgtk2/libgtk2.hash | 4 +- bsp/buildroot/package/libgtk2/libgtk2.mk | 2 +- bsp/buildroot/package/libgtk3/Config.in | 8 +- bsp/buildroot/package/libgtk3/libgtk3.hash | 4 +- bsp/buildroot/package/libgtk3/libgtk3.mk | 4 +- ...lude-pthread.h-if-NO_THREADS-is-defi.patch | 26 - ...c-Add-a-check-for-newlocale-function.patch | 55 + .../0002-CMake-Link-with-librt-if-found.patch | 30 - bsp/buildroot/package/libiio/Config.in | 20 +- bsp/buildroot/package/libiio/libiio.hash | 4 +- bsp/buildroot/package/libiio/libiio.mk | 11 +- .../package/libimxvpuapi/libimxvpuapi.hash | 2 +- .../package/libimxvpuapi/libimxvpuapi.mk | 25 +- bsp/buildroot/package/libinput/libinput.hash | 4 +- bsp/buildroot/package/libinput/libinput.mk | 2 +- ...-This-is-unsafe-when-cross-compiling.patch | 67 + bsp/buildroot/package/libiscsi/libiscsi.hash | 2 +- bsp/buildroot/package/libiscsi/libiscsi.mk | 13 +- bsp/buildroot/package/libite/Config.in | 17 + bsp/buildroot/package/libite/libite.hash | 2 + bsp/buildroot/package/libite/libite.mk | 14 + bsp/buildroot/package/libjpeg/libjpeg.mk | 1 + bsp/buildroot/package/libksba/libksba.hash | 2 +- bsp/buildroot/package/libksba/libksba.mk | 2 +- .../package/liblockfile/liblockfile.mk | 4 +- bsp/buildroot/package/libmad/Config.in | 2 + .../package/libmicrohttpd/libmicrohttpd.hash | 2 +- .../package/libmicrohttpd/libmicrohttpd.mk | 2 +- .../package/libmnl/0001-uclinux.patch | 26 - bsp/buildroot/package/libmnl/libmnl.hash | 6 +- bsp/buildroot/package/libmnl/libmnl.mk | 3 +- .../libmpeg2/0003-fix-arm-detection.patch | 39 + .../libnet/0001-support-musl-libc.patch | 50 + bsp/buildroot/package/libnet/Config.in | 5 - .../libnetfilter_acct/0001-uclinux.patch | 26 - .../libnetfilter_acct/libnetfilter_acct.hash | 6 +- .../libnetfilter_acct/libnetfilter_acct.mk | 3 +- .../libnetfilter_conntrack.hash | 6 +- .../libnetfilter_conntrack.mk | 2 +- ...libnftnl_xfree-to-avoid-symbol-namin.patch | 565 +- bsp/buildroot/package/libnftnl/libnftnl.hash | 4 +- bsp/buildroot/package/libnftnl/libnftnl.mk | 2 +- ...igure-failure-when-building-without-.patch | 45 + bsp/buildroot/package/libnice/libnice.hash | 4 +- bsp/buildroot/package/libnice/libnice.mk | 4 +- bsp/buildroot/package/libnspr/libnspr.hash | 4 +- bsp/buildroot/package/libnspr/libnspr.mk | 2 +- .../libnss/0003-it-uninitialized-fix.patch | 24 + bsp/buildroot/package/libnss/libnss.hash | 4 +- bsp/buildroot/package/libnss/libnss.mk | 16 +- .../package/libopenh264/libopenh264.hash | 2 +- .../package/libopenh264/libopenh264.mk | 2 +- .../0001-remove-libnl-include-path.patch | 25 - ...ix-detect-of-if_bonding.h-on-uclinux.patch | 30 - bsp/buildroot/package/libpcap/libpcap.hash | 2 +- bsp/buildroot/package/libpcap/libpcap.mk | 10 +- bsp/buildroot/package/libpfm4/libpfm4.mk | 6 +- ...compatible-with-musl-fixes-musl-buil.patch | 53 - ...priority-with-sched_priority-fixes-m.patch | 82 - bsp/buildroot/package/libpjsip/libpjsip.hash | 6 +- bsp/buildroot/package/libpjsip/libpjsip.mk | 27 +- ...-p8-platform-config-fix-lookup-paths.patch | 38 + ...cmake-fix-paths-for-cross-compilatio.patch | 40 - .../package/libplatform/libplatform.hash | 2 +- .../package/libplatform/libplatform.mk | 8 +- ...0001-Disable-pngfix-and-png-fix-itxt.patch | 5 +- ...ix-to-symbol-names-in-version-script.patch | 9 +- bsp/buildroot/package/libpng/libpng.hash | 7 +- bsp/buildroot/package/libpng/libpng.mk | 2 +- bsp/buildroot/package/libraw/libraw.mk | 5 + bsp/buildroot/package/librtas/librtas.mk | 4 +- ...egex.c-support-old-compilers-for-the.patch | 47 + .../package/libselinux/libselinux.hash | 2 +- .../package/libselinux/libselinux.mk | 25 +- .../package/libsemanage/libsemanage.hash | 2 +- .../package/libsemanage/libsemanage.mk | 18 +- .../libsepol/0003-add-stdarg-include.patch | 18 - ...ve.patch => 0003-revert-ln-relative.patch} | 0 bsp/buildroot/package/libsepol/libsepol.hash | 2 +- bsp/buildroot/package/libsepol/libsepol.mk | 14 +- bsp/buildroot/package/libsigc/Config.in | 6 +- bsp/buildroot/package/libsigc/libsigc.hash | 4 +- bsp/buildroot/package/libsigc/libsigc.mk | 2 +- .../libsigrokdecode/libsigrokdecode.hash | 2 +- .../libsigrokdecode/libsigrokdecode.mk | 2 +- .../package/libsndfile/libsndfile.mk | 5 + .../package/libsodium/libsodium.hash | 2 +- bsp/buildroot/package/libsodium/libsodium.mk | 2 +- bsp/buildroot/package/libsoup/libsoup.hash | 4 +- bsp/buildroot/package/libsoup/libsoup.mk | 4 +- bsp/buildroot/package/libssh/Config.in | 3 +- bsp/buildroot/package/libssh/libssh.mk | 4 +- bsp/buildroot/package/libssh2/Config.in | 3 +- bsp/buildroot/package/libssh2/libssh2.mk | 4 +- ...gure-don-t-add-Werror-to-build-flags.patch | 28 + bsp/buildroot/package/libtasn1/libtasn1.hash | 2 +- bsp/buildroot/package/libtasn1/libtasn1.mk | 8 +- .../package/libtomcrypt/libtomcrypt.mk | 4 +- .../package/libtommath/libtommath.mk | 4 +- .../package/{libubox_ => libubox}/Config.in | 0 .../package/{libubox_ => libubox}/libubox.mk | 4 +- .../package/libunistring/libunistring.hash | 2 +- .../package/libunistring/libunistring.mk | 4 +- bsp/buildroot/package/libunwind/Config.in | 2 +- bsp/buildroot/package/libupnp/libupnp.hash | 2 +- bsp/buildroot/package/libupnp/libupnp.mk | 2 +- bsp/buildroot/package/libupnpp/libupnpp.hash | 4 +- bsp/buildroot/package/libupnpp/libupnpp.mk | 2 +- .../liburcu/0002-support-aarch64.patch | 21 - bsp/buildroot/package/liburcu/Config.in | 1 + bsp/buildroot/package/liburcu/liburcu.hash | 6 +- bsp/buildroot/package/liburcu/liburcu.mk | 5 +- .../package/libusb/0001-parallel-make.patch | 162 + bsp/buildroot/package/libusb/libusb.hash | 2 +- bsp/buildroot/package/libusb/libusb.mk | 6 +- bsp/buildroot/package/libuv/Config.in | 8 +- bsp/buildroot/package/libuv/libuv.hash | 2 +- bsp/buildroot/package/libuv/libuv.mk | 2 +- .../0002-ir-ctl-fixes-for-musl-compile.patch | 59 + bsp/buildroot/package/libv4l/libv4l.hash | 2 +- bsp/buildroot/package/libv4l/libv4l.mk | 6 +- .../libva-intel-driver.hash | 4 +- .../libva-intel-driver/libva-intel-driver.mk | 2 +- bsp/buildroot/package/libva/libva.hash | 4 +- bsp/buildroot/package/libva/libva.mk | 2 +- .../package/libvncserver/libvncserver.hash | 2 +- .../package/libvncserver/libvncserver.mk | 2 +- bsp/buildroot/package/libvpx/Config.in | 2 + .../package/libwebsockets/libwebsockets.hash | 2 +- .../package/libwebsockets/libwebsockets.mk | 2 +- .../package/libxkbcommon/libxkbcommon.hash | 4 +- .../package/libxkbcommon/libxkbcommon.mk | 2 +- .../libxml-parser-perl.hash | 2 +- .../libxml-parser-perl/libxml-parser-perl.mk | 2 +- ...ointer-paths-beginning-with-range-to.patch | 178 + ...w-namespace-nodes-in-XPointer-ranges.patch | 253 + .../libxmlrpc/0001-fix-gennmtab-build.patch | 2 +- ...x-shared-libraries-build-for-uClibc.patch} | 0 .../0002-fix-non-cplusplus-build.patch | 27 - .../0003-fix-ar-ranlib-handling.patch | 28 + .../libxmlrpc/0003-non-wchar-build.patch | 24 - .../0004-use-correct-curl-config.patch | 36 +- .../package/libxmlrpc/0006-narrowing.patch | 20 - .../package/libxmlrpc/libxmlrpc.hash | 2 +- bsp/buildroot/package/libxmlrpc/libxmlrpc.mk | 2 +- ...erread-in-xsltFormatNumberConversion.patch | 35 + bsp/buildroot/package/libxslt/Config.in | 2 +- bsp/buildroot/package/libxslt/libxslt.mk | 6 + bsp/buildroot/package/lightning/lightning.mk | 2 +- bsp/buildroot/package/lighttpd/lighttpd.hash | 2 +- bsp/buildroot/package/lighttpd/lighttpd.mk | 2 +- bsp/buildroot/package/links/links.hash | 2 +- bsp/buildroot/package/links/links.mk | 2 +- .../linux-backports/linux-backports.mk | 2 +- .../package/linux-firmware/Config.in | 20 + .../linux-firmware/linux-firmware.hash | 2 + .../package/linux-firmware/linux-firmware.mk | 41 +- .../package/linux-headers/Config.in.host | 75 +- .../package/linux-headers/linux-headers.mk | 3 - ...lly-compile-per-innetgr-availability.patch | 84 - bsp/buildroot/package/linux-pam/Config.in | 8 +- .../package/linux-pam/linux-pam.hash | 2 +- bsp/buildroot/package/linux-pam/linux-pam.mk | 7 +- bsp/buildroot/package/linux-pam/login.pam | 2 + .../package/linux-syscall-support/Config.in | 8 + .../linux-syscall-support.hash | 2 + .../linux-syscall-support.mk | 29 + .../linux-tools/Config.in} | 35 +- .../linux-tools}/linux-tool-cpupower.mk | 8 +- .../package/linux-tools/linux-tool-gpio.mk | 28 + .../package/linux-tools/linux-tool-iio.mk | 27 + .../linux-tools}/linux-tool-perf.mk | 18 +- .../linux-tools}/linux-tool-selftests.mk | 14 +- .../package/linux-tools/linux-tools.mk | 46 + .../package/liquid-dsp/liquid-dsp.mk | 2 +- ...inking-method-to-avoid-parallel-buil.patch | 46 - ...rel_symlink.py-can-also-use-python2.patch} | 0 ...re-check-for-clock_gettime-in-librt.patch} | 0 ...d-commandir-unless-we-have-usb.h-191.patch | 54 - ...-of-functions-killed-in-kernel-4.8.0.patch | 105 + bsp/buildroot/package/lirc-tools/Config.in | 5 +- .../package/lirc-tools/lirc-tools.hash | 6 +- .../package/lirc-tools/lirc-tools.mk | 6 +- bsp/buildroot/package/live555/live555.mk | 6 +- bsp/buildroot/package/lm-sensors/Config.in | 2 +- .../package/lm-sensors/lm-sensors.hash | 2 +- .../package/lm-sensors/lm-sensors.mk | 12 +- bsp/buildroot/package/lmbench/lmbench.mk | 4 +- bsp/buildroot/package/log4cpp/log4cpp.mk | 1 - ...r-LOGCXX-400-LOGCXX-404-LOGCXX-402-L.patch | 180 + ...fix-narrowing-conversion-compile-err.patch | 36 + bsp/buildroot/package/log4cxx/Config.in | 2 +- .../logrotate/0001-make-autoreconfable.patch | 20 - ...conf-checks-for-strndup-and-asprintf.patch | 61 - .../package/logrotate/logrotate.hash | 3 +- bsp/buildroot/package/logrotate/logrotate.mk | 11 +- bsp/buildroot/package/lrzsz/lrzsz.mk | 2 +- bsp/buildroot/package/lshw/lshw.mk | 4 +- bsp/buildroot/package/lsof/lsof.mk | 2 +- bsp/buildroot/package/lsqlite3/lsqlite3.hash | 2 +- bsp/buildroot/package/lsqlite3/lsqlite3.mk | 4 +- .../ltp-testsuite/0001-fix-uClibc-build.patch | 51 - ...le-tirpc_auth_authdes_-create-tests.patch} | 9 +- ...0002-uClibc-ng-has-no-profil-support.patch | 39 + .../0003-disable-profil-on-uClibc.patch | 27 - ..._UCLIBC_SV4_DEPRECATED__-enabled-for.patch | 84 + .../0004-disable-ustat-on-uClibc.patch | 70 - ...ed-and-not-available-for-uClibc-ng-l.patch | 157 + .../ltp-testsuite/0005-rpc-fix-uClibc.patch | 125 - bsp/buildroot/package/ltp-testsuite/Config.in | 2 +- .../package/ltp-testsuite/ltp-testsuite.hash | 6 +- .../package/ltp-testsuite/ltp-testsuite.mk | 8 +- .../0001-no-posix-fallocate-in-uclibc.patch | 37 - ...efile.am-remove-unneeded-static-flag.patch | 36 + ...id-support-detection-on-static-build.patch | 63 - ...x_lib_elfutils.m4-add-cache-variable.patch | 77 + .../package/lttng-babeltrace/Config.in | 17 +- .../package/lttng-babeltrace/Config.in.host | 14 + .../lttng-babeltrace/lttng-babeltrace.hash | 10 +- .../lttng-babeltrace/lttng-babeltrace.mk | 21 +- ...define-NT_GNU_BUILD_ID-if-not-define.patch | 34 + ...efile.am-define-C-and-C-compilers-fo.patch | 49 + bsp/buildroot/package/lttng-libust/Config.in | 2 +- .../package/lttng-libust/lttng-libust.hash | 9 +- .../package/lttng-libust/lttng-libust.mk | 13 +- .../package/lttng-modules/lttng-modules.hash | 5 +- .../package/lttng-modules/lttng-modules.mk | 3 +- ...ilure-when-__GLIBC_PREREQ-is-missing.patch | 55 - ...2-Fix-add-missing-sys-types.h-header.patch | 29 - bsp/buildroot/package/lttng-tools/Config.in | 5 +- .../package/lttng-tools/lttng-tools.hash | 5 +- .../package/lttng-tools/lttng-tools.mk | 16 +- .../package/lua-csnappy/lua-csnappy.hash | 2 +- .../package/lua-csnappy/lua-csnappy.mk | 2 +- .../lua-messagepack/lua-messagepack.hash | 4 +- .../lua-messagepack/lua-messagepack.mk | 2 +- .../lua/5.3.3/0012-fix-loop-parser.patch | 31 - .../lua/{5.3.3 => 5.3.4}/0001-root-path.patch | 2 +- .../0002-shared-libs-for-lua.patch | 0 .../lua/{5.3.3 => 5.3.4}/0004-lua-pc.patch | 2 +- .../lua/{5.3.3 => 5.3.4}/0011-linenoise.patch | 2 +- bsp/buildroot/package/lua/lua.hash | 4 +- bsp/buildroot/package/lua/lua.mk | 12 +- .../package/luafilesystem/luafilesystem.mk | 1 + bsp/buildroot/package/luajit/Config.in | 2 +- bsp/buildroot/package/luajit/luajit.mk | 10 +- bsp/buildroot/package/luarocks/luarocks.hash | 2 +- bsp/buildroot/package/luarocks/luarocks.mk | 7 +- bsp/buildroot/package/luv/Config.in | 8 +- bsp/buildroot/package/luvi/Config.in | 8 +- bsp/buildroot/package/lvm2/Config.in | 6 +- bsp/buildroot/package/lvm2/lvm2.hash | 2 +- bsp/buildroot/package/lvm2/lvm2.mk | 6 +- .../package/lxc/0001-drop-werror.patch | 16 - ...-Fix-redefinition-of-struct-in6_addr.patch | 43 - bsp/buildroot/package/lxc/lxc.hash | 2 +- bsp/buildroot/package/lxc/lxc.mk | 26 +- bsp/buildroot/package/lz4/lz4.mk | 10 +- bsp/buildroot/package/lzip/Config.in | 2 +- bsp/buildroot/package/lzip/lzip.hash | 4 +- bsp/buildroot/package/lzip/lzip.mk | 16 +- bsp/buildroot/package/lzlib/lzlib.mk | 2 +- ...es-as-the-external-inline-definition.patch | 102 + bsp/buildroot/package/m4/m4.hash | 2 +- bsp/buildroot/package/m4/m4.mk | 2 +- bsp/buildroot/package/madplay/madplay.mk | 8 + bsp/buildroot/package/makedevs/Config.in | 5 - bsp/buildroot/package/makedevs/makedevs.c | 47 +- bsp/buildroot/package/makedevs/makedevs.mk | 10 - .../0001-add-extra-check-for-librt.patch | 27 + bsp/buildroot/package/mariadb/S97mysqld | 77 + bsp/buildroot/package/mariadb/mariadb.hash | 5 + bsp/buildroot/package/mariadb/mariadb.mk | 116 + bsp/buildroot/package/mariadb/mysqld.service | 13 + .../package/matchbox-lib/matchbox-lib.mk | 4 +- bsp/buildroot/package/mbedtls/Config.in | 12 + bsp/buildroot/package/mbedtls/mbedtls.hash | 4 +- bsp/buildroot/package/mbedtls/mbedtls.mk | 11 +- bsp/buildroot/package/mc/mc.hash | 4 +- bsp/buildroot/package/mc/mc.mk | 2 +- bsp/buildroot/package/mediastreamer/Config.in | 2 +- .../package/mediastreamer/mediastreamer.hash | 3 +- .../package/mediastreamer/mediastreamer.mk | 9 +- .../package/memcached/memcached.hash | 6 +- bsp/buildroot/package/memcached/memcached.mk | 2 +- bsp/buildroot/package/memstat/memstat.mk | 2 +- bsp/buildroot/package/memtester/memtester.mk | 4 +- .../package/mesa3d-headers/mesa3d-headers.mk | 8 +- ...detection-with-musl-based-toolchains.patch | 65 + ...vert-order-for-wayland-scanner-check.patch | 39 + bsp/buildroot/package/mesa3d/Config.in | 37 +- bsp/buildroot/package/mesa3d/mesa3d.hash | 4 +- bsp/buildroot/package/mesa3d/mesa3d.mk | 34 +- bsp/buildroot/package/mfgtools/Config.in.host | 14 + bsp/buildroot/package/mfgtools/mfgtools.hash | 2 + bsp/buildroot/package/mfgtools/mfgtools.mk | 34 + bsp/buildroot/package/mfgtools/readme.txt | 69 + .../package/micropython-lib/Config.in | 1 + .../micropython-lib/micropython-lib.hash | 2 +- .../micropython-lib/micropython-lib.mk | 2 +- .../package/micropython/micropython.hash | 2 +- .../package/micropython/micropython.mk | 11 +- bsp/buildroot/package/mii-diag/mii-diag.mk | 4 +- bsp/buildroot/package/mimic/Config.in | 41 + bsp/buildroot/package/mimic/mimic.hash | 2 + bsp/buildroot/package/mimic/mimic.mk | 29 + bsp/buildroot/package/mkpasswd/Config.in.host | 2 + bsp/buildroot/package/mkpimage/mkpimage.c | 147 +- bsp/buildroot/package/mkpimage/mkpimage.mk | 6 +- bsp/buildroot/package/mksh/Config.in | 25 + bsp/buildroot/package/mksh/mksh.hash | 4 + bsp/buildroot/package/mksh/mksh.mk | 24 + bsp/buildroot/package/mmc-utils/mmc-utils.mk | 2 +- bsp/buildroot/package/moarvm/Config.in | 12 +- bsp/buildroot/package/moarvm/moarvm.hash | 2 +- bsp/buildroot/package/moarvm/moarvm.mk | 18 +- .../mobile-broadband-provider-info.hash | 4 +- .../mobile-broadband-provider-info.mk | 2 +- .../package/modem-manager/modem-manager.hash | 4 +- .../package/modem-manager/modem-manager.mk | 2 +- bsp/buildroot/package/mongoose/mongoose.mk | 4 +- bsp/buildroot/package/mongrel2/Config.in | 7 +- bsp/buildroot/package/mongrel2/mongrel2.mk | 2 +- bsp/buildroot/package/monit/monit.hash | 4 +- bsp/buildroot/package/monit/monit.mk | 9 +- bsp/buildroot/package/mono/mono.hash | 2 +- bsp/buildroot/package/mono/mono.mk | 12 +- bsp/buildroot/package/monolite/monolite.hash | 2 +- bsp/buildroot/package/monolite/monolite.mk | 2 +- bsp/buildroot/package/mosh/Config.in | 2 +- bsp/buildroot/package/mosh/mosh.hash | 4 +- bsp/buildroot/package/mosh/mosh.mk | 12 +- bsp/buildroot/package/mosquitto/Config.in | 2 + .../package/mosquitto/mosquitto.hash | 4 +- bsp/buildroot/package/mosquitto/mosquitto.mk | 2 +- ...-given-CFLAGS-LIBS-for-mysqlclient-l.patch | 31 + .../motion/0002-Rename-base64_encode.patch | 116 + bsp/buildroot/package/motion/Config.in | 17 + bsp/buildroot/package/motion/S99motion | 37 + bsp/buildroot/package/motion/motion.hash | 2 + bsp/buildroot/package/motion/motion.mk | 88 + bsp/buildroot/package/motion/motion.service | 10 + bsp/buildroot/package/mpd-mpc/mpd-mpc.hash | 4 +- bsp/buildroot/package/mpd-mpc/mpd-mpc.mk | 2 +- ...me-include-stdio.h-for-prctl-as-well.patch | 28 - bsp/buildroot/package/mpd/Config.in | 33 +- bsp/buildroot/package/mpd/mpd.hash | 3 +- bsp/buildroot/package/mpd/mpd.mk | 19 +- ...001-Fix-obsolete-ARC-asm-constraints.patch | 37 + bsp/buildroot/package/mpfr/mpfr.hash | 2 +- bsp/buildroot/package/mpfr/mpfr.mk | 2 +- bsp/buildroot/package/mpg123/mpg123.hash | 2 +- bsp/buildroot/package/mpg123/mpg123.mk | 2 +- bsp/buildroot/package/mplayer/Config.in | 5 +- bsp/buildroot/package/mplayer/mplayer.mk | 4 +- .../mpv/0002-fix-powerpc64-altivec.patch | 32 + ...0002-wscript-improve-stdatomic-check.patch | 47 - bsp/buildroot/package/mpv/Config.in | 5 + bsp/buildroot/package/mpv/mpv.hash | 3 +- bsp/buildroot/package/mpv/mpv.mk | 43 +- bsp/buildroot/package/mrouted/mrouted.mk | 4 +- bsp/buildroot/package/mtd/Config.in | 4 - .../package/mtdev2tuio/mtdev2tuio.mk | 2 +- .../musl/0001-avoid-kernel-if_ether.h.patch | 30 + ...ssion-in-tcsetattr-on-all-mips-archs.patch | 67 - bsp/buildroot/package/musl/Config.in | 3 +- bsp/buildroot/package/musl/musl.hash | 2 +- bsp/buildroot/package/musl/musl.mk | 2 +- bsp/buildroot/package/mutt/mutt.hash | 2 +- bsp/buildroot/package/mutt/mutt.mk | 2 +- bsp/buildroot/package/mxml/mxml.hash | 4 +- bsp/buildroot/package/mxml/mxml.mk | 2 +- bsp/buildroot/package/mysql/Config.in | 61 +- bsp/buildroot/package/mysql/mysql.mk | 126 +- bsp/buildroot/package/nano/nano.hash | 2 +- bsp/buildroot/package/nano/nano.mk | 4 +- bsp/buildroot/package/nanocom/nanocom.mk | 2 +- bsp/buildroot/package/ncftp/ncftp.hash | 2 +- bsp/buildroot/package/ncftp/ncftp.mk | 4 +- bsp/buildroot/package/ncmpc/ncmpc.hash | 4 +- bsp/buildroot/package/ncmpc/ncmpc.mk | 2 +- bsp/buildroot/package/ncurses/Config.in | 15 - bsp/buildroot/package/ncurses/ncurses.mk | 73 +- bsp/buildroot/package/neon/neon.hash | 2 +- bsp/buildroot/package/neon/neon.mk | 2 +- ...tunnel.c-do-not-include-netinet-ip.h.patch | 72 + bsp/buildroot/package/netplug/netplug.mk | 4 +- bsp/buildroot/package/netsniff-ng/Config.in | 7 +- .../package/netsniff-ng/netsniff-ng.hash | 2 +- .../package/netsniff-ng/netsniff-ng.mk | 2 +- ...ate-the-hard-coded-libnl-3-include-p.patch | 300 + bsp/buildroot/package/netsnmp/netsnmp.mk | 8 + .../nettle/0002-fix-CVE-2016-6489.patch | 181 - bsp/buildroot/package/nettle/nettle.hash | 2 +- bsp/buildroot/package/nettle/nettle.mk | 4 +- ..._ipv6ll_enabled-to-nm-platform-linux.patch | 87 - .../0002-accept-auto-mode-interfaces.patch | 26 - .../network-manager/network-manager.hash | 4 +- .../network-manager/network-manager.mk | 5 +- ...ead-of-CPP-to-generate-.depend-files.patch | 38 - ...us-I-usr-include-slang-from-CPPFLAGS.patch | 33 - bsp/buildroot/package/newt/newt.hash | 2 +- bsp/buildroot/package/newt/newt.mk | 4 +- .../package/nfacct/0001-uclinux.patch | 26 - bsp/buildroot/package/nfacct/nfacct.hash | 6 +- bsp/buildroot/package/nfacct/nfacct.mk | 3 +- bsp/buildroot/package/nftables/nftables.hash | 4 +- bsp/buildroot/package/nftables/nftables.mk | 4 +- bsp/buildroot/package/nginx-dav-ext/Config.in | 8 + .../package/nginx-dav-ext/nginx-dav-ext.hash | 2 + .../package/nginx-dav-ext/nginx-dav-ext.mk | 13 + bsp/buildroot/package/nginx-naxsi/Config.in | 3 + .../package/nginx-naxsi/nginx-naxsi.hash | 2 +- .../package/nginx-naxsi/nginx-naxsi.mk | 2 +- bsp/buildroot/package/nginx/nginx.hash | 2 +- bsp/buildroot/package/nginx/nginx.mk | 17 +- bsp/buildroot/package/ngrep/ngrep.mk | 3 +- bsp/buildroot/package/nload/Config.in | 1 - bsp/buildroot/package/nmap/nmap.hash | 4 +- bsp/buildroot/package/nmap/nmap.mk | 2 +- bsp/buildroot/package/nmon/Config.in | 11 + bsp/buildroot/package/nmon/nmon.hash | 5 + bsp/buildroot/package/nmon/nmon.mk | 28 + .../0001-remove-python-bz2-dependency.patch | 0 ...02-gyp-force-link-command-to-use-CXX.patch | 0 .../0003-fix-musl-USE-MISC-build-issue.patch | 0 .../0004-Fix-support-for-uClibc-ng.patch | 0 ...01-gyp-force-link-command-to-use-CXX.patch | 0 ...t-build-when-ssl-support-is-disabled.patch | 35 + bsp/buildroot/package/nodejs/Config.in | 8 +- bsp/buildroot/package/nodejs/nodejs.hash | 8 +- bsp/buildroot/package/nodejs/nodejs.mk | 9 +- ...move-kernel-headers-include-musl-fix.patch | 55 - bsp/buildroot/package/norm/norm.mk | 28 +- bsp/buildroot/package/ntfs-3g/ntfs-3g.hash | 1 + bsp/buildroot/package/ntfs-3g/ntfs-3g.mk | 1 + bsp/buildroot/package/ntp/Config.in | 2 + bsp/buildroot/package/ntp/ntp.hash | 6 +- bsp/buildroot/package/ntp/ntp.mk | 23 +- ...ze-path-to-gdlib-config-and-net-snmp.patch | 153 + .../package/nut/0001-foo-config.patch | 72 - .../0002-client-ups-add-missing-include.patch | 29 + .../package/nut/0002-parallel-build.patch | 24 - bsp/buildroot/package/nut/nut.hash | 2 +- bsp/buildroot/package/nut/nut.mk | 14 +- .../nvidia-driver/0001-use-LDFLAGS.patch | 48 + bsp/buildroot/package/nvidia-driver/Config.in | 6 +- .../package/nvidia-driver/nvidia-driver.hash | 4 +- .../package/nvidia-driver/nvidia-driver.mk | 206 +- bsp/buildroot/package/ocf-linux/ocf-linux.mk | 2 + bsp/buildroot/package/ocrad/ocrad.hash | 2 +- bsp/buildroot/package/ocrad/ocrad.mk | 11 +- bsp/buildroot/package/odhcploc/odhcploc.mk | 4 +- bsp/buildroot/package/odroid-mali/Config.in | 9 + .../package/odroid-mali/odroid-mali.mk | 21 +- .../{S50odroidc2_fb => S02odroidc2_fb} | 0 .../odroid-scripts/odroid-scripts.hash | 2 +- .../package/odroid-scripts/odroid-scripts.mk | 6 +- bsp/buildroot/package/ofono/ofono.hash | 2 +- bsp/buildroot/package/ofono/ofono.mk | 2 +- ...0002-Remove-replacing-I-with-isystem.patch | 106 + bsp/buildroot/package/ola/Config.in | 9 +- bsp/buildroot/package/ola/ola.hash | 3 +- bsp/buildroot/package/ola/ola.mk | 13 +- bsp/buildroot/package/olsr/Config.in | 10 +- bsp/buildroot/package/olsr/olsr.hash | 4 +- bsp/buildroot/package/olsr/olsr.mk | 2 +- .../omap-u-boot-utils/omap-u-boot-utils.mk | 2 +- .../package/on2-8170-libs/on2-8170-libs.mk | 2 +- bsp/buildroot/package/open2300/open2300.mk | 2 +- bsp/buildroot/package/openal/openal.hash | 4 + bsp/buildroot/package/openal/openal.mk | 9 +- bsp/buildroot/package/openblas/Config.in | 6 +- bsp/buildroot/package/openblas/openblas.mk | 3 + .../package/opencv/0001-atomic.patch | 134 +- .../package/opencv/0002-avoid-sysctl_h.patch | 48 +- ...c.h-Fix-compiling-VFP-assembler-code.patch | 37 + ...o-not-add-libdl-to-LINKER_LIBS-for-s.patch | 39 + bsp/buildroot/package/opencv3/Config.in | 2 + bsp/buildroot/package/opencv3/opencv3.mk | 5 + bsp/buildroot/package/opengl/libegl/Config.in | 4 + bsp/buildroot/package/openipmi/openipmi.hash | 3 +- bsp/buildroot/package/openipmi/openipmi.mk | 4 +- ...append-flags-found-by-pkg-config-if-.patch | 72 + ...-append-flags-found-by-pkg-config-if.patch | 49 + bsp/buildroot/package/openjpeg/openjpeg.hash | 2 +- bsp/buildroot/package/openjpeg/openjpeg.mk | 4 +- bsp/buildroot/package/openntpd/Config.in | 1 + bsp/buildroot/package/openocd/openocd.mk | 15 + ...-stack-libraries-to-lib-subdirectory.patch | 73 +- ...002-cmake-install-oplk-headers-files.patch | 8 +- .../0003-Add-top-level-CMakeLists.txt.patch | 10 +- ...Fix-compilation-on-Linux-kernels-4.7.patch | 35 + bsp/buildroot/package/openpowerlink/Config.in | 6 +- .../package/openpowerlink/openpowerlink.hash | 8 +- .../package/openpowerlink/openpowerlink.mk | 27 +- bsp/buildroot/package/openssh/S50sshd | 6 +- bsp/buildroot/package/openssh/openssh.hash | 4 +- bsp/buildroot/package/openssh/openssh.mk | 4 +- bsp/buildroot/package/openssl/openssl.hash | 4 +- bsp/buildroot/package/openssl/openssl.mk | 21 +- ...001-uClibc-ng-is-compatible-to-glibc.patch | 39 + bsp/buildroot/package/openswan/Config.in | 2 +- .../package/opentyrian/opentyrian.mk | 2 +- .../package/openvmtools/openvmtools.hash | 2 +- .../package/openvmtools/openvmtools.mk | 10 +- bsp/buildroot/package/openvpn/Config.in | 6 - bsp/buildroot/package/openvpn/openvpn.hash | 4 +- bsp/buildroot/package/openvpn/openvpn.mk | 8 +- .../package/openzwave/openzwave.hash | 3 +- bsp/buildroot/package/openzwave/openzwave.mk | 8 +- .../package/opkg-utils/Config.in.host | 6 + .../package/opkg-utils/opkg-utils.hash | 2 + .../package/opkg-utils/opkg-utils.mk | 21 + .../0002-Fix-FTBFS-problem-with-GCC-6.patch | 51 + bsp/buildroot/package/oprofile/Config.in | 12 +- bsp/buildroot/package/oprofile/oprofile.mk | 2 +- bsp/buildroot/package/opus/opus.hash | 2 +- bsp/buildroot/package/opus/opus.mk | 2 +- .../0000-ac_cache_check.patch | 0 .../0001-configure-ps-cache-check.patch | 0 .../0002-use-new-readline-iface.patch | 0 .../0003-ac_stack_direction-is-unset.patch | 0 .../0004-Fix-gen_lex_hash-execution.patch | 0 ...05-bison_3_breaks_mysql_server_build.patch | 0 .../0006-no-force-static-build.patch | 0 ...0007-dont-install-in-mysql-directory.patch | 0 .../package/{mysql => oracle-mysql}/S97mysqld | 11 +- .../{mysql => oracle-mysql}/mysqld.service | 3 + .../oracle-mysql.hash} | 2 + .../package/oracle-mysql/oracle-mysql.mk | 136 + bsp/buildroot/package/orc/orc.hash | 4 +- bsp/buildroot/package/orc/orc.mk | 2 +- bsp/buildroot/package/ortp/Config.in | 6 +- bsp/buildroot/package/ortp/ortp.hash | 2 +- bsp/buildroot/package/ortp/ortp.mk | 3 +- bsp/buildroot/package/owfs/owfs.mk | 9 + bsp/buildroot/package/p7zip/p7zip.mk | 2 +- bsp/buildroot/package/p910nd/p910nd.mk | 2 +- bsp/buildroot/package/paho-mqtt-c/Config.in | 11 + .../package/paho-mqtt-c/paho-mqtt-c.hash | 2 + .../package/paho-mqtt-c/paho-mqtt-c.mk | 20 + bsp/buildroot/package/pango/pango.hash | 4 +- bsp/buildroot/package/pango/pango.mk | 2 +- bsp/buildroot/package/pangomm/pangomm.hash | 4 +- bsp/buildroot/package/pangomm/pangomm.mk | 2 +- bsp/buildroot/package/patchelf/patchelf.hash | 2 +- bsp/buildroot/package/patchelf/patchelf.mk | 5 +- bsp/buildroot/package/pciutils/pciutils.hash | 2 +- bsp/buildroot/package/pciutils/pciutils.mk | 2 +- bsp/buildroot/package/pcre/pcre.hash | 2 +- bsp/buildroot/package/pcre/pcre.mk | 2 +- bsp/buildroot/package/perl-db-file/Config.in | 11 - .../package/perl-db-file/perl-db-file.hash | 3 - .../package/perl-db-file/perl-db-file.mk | 22 - bsp/buildroot/package/perl-gd/0002-lgd.patch | 4 +- .../package/perl-gd/0003-force.patch | 2 +- ...004-gdlib-config-is-now-configurable.patch | 2 +- bsp/buildroot/package/perl-gd/Config.in | 2 +- bsp/buildroot/package/perl-gd/perl-gd.hash | 4 +- bsp/buildroot/package/perl-gd/perl-gd.mk | 5 +- .../package/perl-gdgraph/perl-gdgraph.hash | 4 +- .../package/perl-gdgraph/perl-gdgraph.mk | 2 +- .../perl-json-tiny/perl-json-tiny.hash | 4 +- .../package/perl-json-tiny/perl-json-tiny.mk | 2 +- .../perl-libwww-perl/perl-libwww-perl.hash | 4 +- .../perl-libwww-perl/perl-libwww-perl.mk | 8 +- .../perl-mailtools/perl-mailtools.hash | 4 +- .../package/perl-mailtools/perl-mailtools.mk | 2 +- .../perl-module-build/perl-module-build.hash | 4 +- .../perl-module-build/perl-module-build.mk | 2 +- .../perl-mojolicious/perl-mojolicious.hash | 4 +- .../perl-mojolicious/perl-mojolicious.mk | 2 +- bsp/buildroot/package/perl-net-dns/Config.in | 2 +- .../package/perl-net-dns/perl-net-dns.hash | 4 +- .../package/perl-net-dns/perl-net-dns.mk | 2 +- bsp/buildroot/package/perl-net-http/Config.in | 4 +- .../package/perl-net-http/perl-net-http.hash | 4 +- .../package/perl-net-http/perl-net-http.mk | 6 +- .../perl-netaddr-ip/perl-netaddr-ip.hash | 4 +- .../perl-netaddr-ip/perl-netaddr-ip.mk | 2 +- .../perl-path-tiny/perl-path-tiny.hash | 4 +- .../package/perl-path-tiny/perl-path-tiny.mk | 2 +- bsp/buildroot/package/perl-try-tiny/Config.in | 4 +- .../package/perl-try-tiny/perl-try-tiny.hash | 4 +- .../package/perl-try-tiny/perl-try-tiny.mk | 2 +- .../perl-xml-libxml/perl-xml-libxml.hash | 4 +- .../perl-xml-libxml/perl-xml-libxml.mk | 2 +- ...1-fix-static-build-with-gdbm-gettext.patch | 20 + bsp/buildroot/package/perl/perl.hash | 12 +- bsp/buildroot/package/perl/perl.mk | 39 +- bsp/buildroot/package/php-amqp/Config.in | 12 + bsp/buildroot/package/php-amqp/php-amqp.hash | 2 + bsp/buildroot/package/php-amqp/php-amqp.mk | 26 + .../package/php-imagick/php-imagick.hash | 2 +- .../package/php-imagick/php-imagick.mk | 2 +- bsp/buildroot/package/php-ssh2/Config.in | 2 - bsp/buildroot/package/php-zmq/Config.in | 6 +- .../php/0006-Fix-php-fpm.service.in.patch | 35 - .../php/0007-avoid-bfin-gcc-segfault.patch | 16 + ...close-phpdbg_load_module_or_extensio.patch | 47 - ...onstraints-in-aarch64-multiply-macro.patch | 28 + .../0009-Call-apxs-with-correct-prefix.patch | 49 + bsp/buildroot/package/php/Config.ext | 12 - bsp/buildroot/package/php/Config.in | 53 +- bsp/buildroot/package/php/php-fpm.conf | 3 - bsp/buildroot/package/php/php.hash | 2 +- bsp/buildroot/package/php/php.mk | 32 +- bsp/buildroot/package/pifmrds/pifmrds.mk | 2 +- bsp/buildroot/package/pkg-autotools.mk | 18 +- bsp/buildroot/package/pkg-cmake.mk | 6 +- bsp/buildroot/package/pkg-download.mk | 32 +- bsp/buildroot/package/pkg-generic.mk | 59 +- bsp/buildroot/package/pkg-kconfig.mk | 21 +- bsp/buildroot/package/pkg-perl.mk | 22 +- bsp/buildroot/package/pkg-utils.mk | 114 +- bsp/buildroot/package/pkg-waf.mk | 125 + ...all-variables-sysroot-prefix-problem.patch | 18 +- bsp/buildroot/package/poco/Config.in | 4 +- bsp/buildroot/package/poco/poco.mk | 9 +- bsp/buildroot/package/polarssl/polarssl.mk | 2 +- ...-all-paths-that-use-an-absolute-path.patch | 131 + .../0002-Add-PREFIX-to-host-paths.patch | 211 + .../0003-Remove-hardcoded-arch-variable.patch | 43 + ...python-install-arguments-to-be-a-var.patch | 42 + ...0005-Check-to-see-if-DBUS-is-enabled.patch | 56 + .../package/policycoreutils/Config.in | 61 + .../policycoreutils/policycoreutils.hash | 2 + .../policycoreutils/policycoreutils.mk | 122 + ...id-shell-comparaison-in-libtiff-test.patch | 23 - bsp/buildroot/package/poppler/Config.in | 9 + bsp/buildroot/package/poppler/poppler.hash | 2 +- bsp/buildroot/package/poppler/poppler.mk | 27 +- .../package/portaudio/portaudio.hash | 2 +- bsp/buildroot/package/portaudio/portaudio.mk | 2 +- .../package/postgresql/postgresql.hash | 4 +- .../package/postgresql/postgresql.mk | 18 +- ...net-in.h-above-linux-header-includes.patch | 22 + bsp/buildroot/package/pppd/pppd.mk | 8 +- .../package/pps-tools/pps-tools.hash | 2 +- bsp/buildroot/package/pps-tools/pps-tools.mk | 2 +- .../package/pptp-linux/pptp-linux.mk | 2 +- bsp/buildroot/package/privoxy/Config.in | 5 + bsp/buildroot/package/privoxy/privoxy.hash | 6 +- bsp/buildroot/package/privoxy/privoxy.mk | 2 +- ...02-use-pkgconfig-for-ncursesw-cflags.patch | 2 +- .../package/procps-ng/procps-ng.hash | 4 +- bsp/buildroot/package/procps-ng/procps-ng.mk | 4 +- bsp/buildroot/package/proftpd/proftpd.hash | 6 +- bsp/buildroot/package/proftpd/proftpd.mk | 3 +- ...ROTOBUF_ATOMICOPS_ERROR-syntax-error.patch | 61 - ...ure.ac-check-if-libatomic-is-needed.patch} | 4 +- bsp/buildroot/package/protobuf/protobuf.hash | 2 +- bsp/buildroot/package/protobuf/protobuf.mk | 5 +- .../package/proxychains-ng/proxychains-ng.mk | 2 +- .../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 + ...0001-Fix-mixed-tab-space-indentation.patch | 105 + ...002-Fix-missing-parentheses-at-print.patch | 190 + ...0003-Make-it-compatible-with-python3.patch | 215 + bsp/buildroot/package/pseudo/pseudo.hash | 2 + bsp/buildroot/package/pseudo/pseudo.mk | 29 + bsp/buildroot/package/ptpd2/ptpd2.mk | 6 + ...1-check-cxx_long_long_type-existence.patch | 33 + bsp/buildroot/package/pugixml/Config.in | 19 + bsp/buildroot/package/pugixml/pugixml.hash | 2 + bsp/buildroot/package/pugixml/pugixml.mk | 15 + bsp/buildroot/package/pure-ftpd/Config.in | 19 + bsp/buildroot/package/pure-ftpd/pure-ftpd.mk | 8 + bsp/buildroot/package/putty/putty.mk | 2 +- .../package/python-argh/python-argh.hash | 7 +- .../package/python-argh/python-argh.mk | 4 +- bsp/buildroot/package/python-arrow/Config.in | 7 + .../package/python-arrow/python-arrow.hash | 3 + .../package/python-arrow/python-arrow.mk | 14 + bsp/buildroot/package/python-attrs/Config.in | 8 + .../package/python-attrs/python-attrs.hash | 3 + .../package/python-attrs/python-attrs.mk | 14 + .../python-autobahn/python-autobahn.hash | 6 +- .../python-autobahn/python-autobahn.mk | 4 +- bsp/buildroot/package/python-babel/Config.in | 8 + .../package/python-babel/python-babel.hash | 3 + .../package/python-babel/python-babel.mk | 14 + .../python-beautifulsoup4.hash | 7 +- .../python-beautifulsoup4.mk | 4 +- .../package/python-bitstring/Config.in | 6 + .../python-bitstring/python-bitstring.hash | 2 + .../python-bitstring/python-bitstring.mk | 14 + .../package/python-bottle/python-bottle.hash | 7 +- .../package/python-bottle/python-bottle.mk | 6 +- .../package/python-cbor/python-cbor.hash | 6 +- .../package/python-cbor/python-cbor.mk | 4 +- .../python-certifi/python-certifi.hash | 6 +- .../package/python-certifi/python-certifi.mk | 4 +- .../package/python-cffi/python-cffi.hash | 7 +- .../package/python-cffi/python-cffi.mk | 4 +- .../package/python-chardet/Config.in | 6 + .../python-chardet/python-chardet.hash | 3 + .../package/python-chardet/python-chardet.mk | 14 + .../python-configobj/python-configobj.hash | 7 +- .../python-configobj/python-configobj.mk | 4 +- .../package/python-configshell-fb/Config.in | 2 +- .../python-configshell-fb.mk | 4 +- .../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 + bsp/buildroot/package/python-crcmod/Config.in | 8 + .../package/python-crcmod/python-crcmod.hash | 3 + .../package/python-crcmod/python-crcmod.mk | 14 + .../package/python-crossbar/Config.in | 5 +- .../python-cryptography.hash | 7 +- .../python-cryptography.mk | 4 +- .../package/python-cssutils/Config.in | 8 + .../python-cssutils/python-cssutils.hash | 3 + .../python-cssutils/python-cssutils.mk | 14 + bsp/buildroot/package/python-daemon/Config.in | 2 +- .../package/python-daemon/python-daemon.hash | 5 +- .../package/python-daemon/python-daemon.mk | 7 +- .../package/python-dataproperty/Config.in | 1 + .../python-dataproperty.hash | 7 +- .../python-dataproperty.mk | 4 +- .../python-dateutil/python-dateutil.hash | 7 +- .../python-dateutil/python-dateutil.mk | 5 +- .../package/python-django/python-django.hash | 5 +- .../package/python-django/python-django.mk | 4 +- .../package/python-docutils/Config.in | 9 + .../python-docutils/python-docutils.hash | 3 + .../python-docutils/python-docutils.mk | 15 + .../python-dominate/python-dominate.hash | 5 +- .../python-dominate/python-dominate.mk | 5 +- .../python-engineio/python-engineio.mk | 1 - .../package/python-flask-babel/Config.in | 12 + .../python-flask-babel.hash | 3 + .../python-flask-babel/python-flask-babel.mk | 14 + .../python-flask-jsonrpc.hash | 6 +- .../python-flask-jsonrpc.mk | 4 +- .../package/python-flask/python-flask.hash | 6 +- .../package/python-flask/python-flask.mk | 4 +- .../package/python-futures/Config.in | 7 + .../python-futures/python-futures.hash | 3 + .../package/python-futures/python-futures.mk | 14 + .../package/python-gunicorn/Config.in | 13 + .../python-gunicorn/python-gunicorn.hash | 3 + .../python-gunicorn/python-gunicorn.mk | 26 + .../python-html5lib/python-html5lib.hash | 6 +- .../python-html5lib/python-html5lib.mk | 6 +- .../package/python-incremental/Config.in | 6 + .../python-incremental.hash | 3 + .../python-incremental/python-incremental.mk | 14 + .../python-ipaddress/python-ipaddress.hash | 6 +- .../python-ipaddress/python-ipaddress.mk | 5 +- .../package/python-ipy/python-ipy.hash | 5 +- .../package/python-ipy/python-ipy.mk | 5 +- .../package/python-jinja2/python-jinja2.hash | 6 +- .../package/python-jinja2/python-jinja2.mk | 14 +- .../python-json-schema-validator.hash | 5 +- .../python-json-schema-validator.mk | 4 +- .../package/python-jsonschema/Config.in | 6 + .../python-jsonschema/python-jsonschema.hash | 3 + .../python-jsonschema/python-jsonschema.mk | 15 + .../package/python-libconfig/Config.in | 7 +- .../package/python-logbook/Config.in | 6 + .../python-logbook/python-logbook.hash | 3 + .../package/python-logbook/python-logbook.mk | 13 + .../package/python-lxml/python-lxml.hash | 2 +- .../package/python-lxml/python-lxml.mk | 2 +- .../python-markdown/python-markdown.hash | 5 +- .../python-markdown/python-markdown.mk | 4 +- .../package/python-markdown2/Config.in | 6 + .../python-markdown2/python-markdown2.hash | 2 + .../python-markdown2/python-markdown2.mk | 13 + .../package/python-mbstrdecoder/Config.in | 6 + .../python-mbstrdecoder.hash | 3 + .../python-mbstrdecoder.mk | 14 + .../python-mistune/python-mistune.hash | 6 +- .../package/python-mistune/python-mistune.mk | 4 +- .../package/python-mutagen/Config.in | 20 + .../python-mutagen/python-mutagen.hash | 3 + .../package/python-mutagen/python-mutagen.mk | 14 + ...01-use-exec-in-py3-compatible-manner.patch | 36 + .../package/python-mwclient/Config.in | 8 + .../python-mwclient/python-mwclient.hash | 3 + .../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 | 19 + .../python-mwscrape2slob.hash | 2 + .../python-mwscrape2slob.mk | 12 + .../python-netifaces/python-netifaces.hash | 6 +- .../python-netifaces/python-netifaces.mk | 4 +- .../python-networkmanager.hash | 6 +- .../python-networkmanager.mk | 4 +- .../python-paho-mqtt/python-paho-mqtt.hash | 6 +- .../python-paho-mqtt/python-paho-mqtt.mk | 4 +- .../package/python-paramiko/Config.in | 8 +- .../python-paramiko/python-paramiko.hash | 7 +- .../python-paramiko/python-paramiko.mk | 4 +- bsp/buildroot/package/python-pathpy/Config.in | 8 + .../package/python-pathpy/python-pathpy.hash | 3 + .../package/python-pathpy/python-pathpy.mk | 14 + .../package/python-pathvalidate/Config.in | 2 + .../python-pathvalidate.hash | 7 +- .../python-pathvalidate.mk | 4 +- .../python-pexpect/python-pexpect.hash | 6 +- .../package/python-pexpect/python-pexpect.mk | 4 +- .../package/python-pillow/python-pillow.hash | 7 +- .../package/python-pillow/python-pillow.mk | 4 +- .../python-posix-ipc/python-posix-ipc.hash | 5 +- .../python-posix-ipc/python-posix-ipc.mk | 4 +- .../python-prompt-toolkit.hash | 6 +- .../python-prompt-toolkit.mk | 4 +- ...-disable-unneeded-build-dependencies.patch | 37 - .../python-protobuf/python-protobuf.hash | 3 +- bsp/buildroot/package/python-psutil/Config.in | 5 + .../package/python-psutil/python-psutil.hash | 4 +- .../package/python-psutil/python-psutil.mk | 4 +- bsp/buildroot/package/python-pudb/Config.in | 11 + .../package/python-pudb/python-pudb.hash | 3 + .../package/python-pudb/python-pudb.mk | 14 + .../package/python-pydal/python-pydal.hash | 5 +- .../package/python-pydal/python-pydal.mk | 5 +- .../package/python-pyelftools/Config.in | 7 + .../python-pyelftools/python-pyelftools.hash | 4 + .../python-pyelftools/python-pyelftools.mk | 14 + .../python-pygments/python-pygments.hash | 6 +- .../python-pygments/python-pygments.mk | 4 +- bsp/buildroot/package/python-pyicu/Config.in | 13 + .../package/python-pyicu/python-pyicu.hash | 3 + .../package/python-pyicu/python-pyicu.mk | 15 + bsp/buildroot/package/python-pylru/Config.in | 6 + .../package/python-pylru/python-pylru.hash | 3 + .../package/python-pylru/python-pylru.mk | 14 + .../python-pymysql/python-pymysql.hash | 7 +- .../package/python-pymysql/python-pymysql.mk | 4 +- .../python-pyopenssl/python-pyopenssl.hash | 6 +- .../python-pyopenssl/python-pyopenssl.mk | 4 +- .../python-pyparsing/python-pyparsing.hash | 6 +- .../python-pyparsing/python-pyparsing.mk | 6 +- .../package/python-pyqrcode/Config.in | 11 + .../python-pyqrcode/python-pyqrcode.hash | 3 + .../python-pyqrcode/python-pyqrcode.mk | 14 + bsp/buildroot/package/python-pyqt/Config.in | 10 +- .../package/python-pyqt/python-pyqt.mk | 3 - .../0001-configure-skip-qtdetail.patch | 29 + .../python-pyqt5/0002-fix-qt-5.6.2.patch | 28 + ...uttonHint-and-WindowCancelButtonHint.patch | 27 + bsp/buildroot/package/python-pyqt5/Config.in | 11 + .../package/python-pyqt5/python-pyqt5.hash | 3 + .../package/python-pyqt5/python-pyqt5.mk | 79 + .../python-pyroute2/python-pyroute2.hash | 6 +- .../python-pyroute2/python-pyroute2.mk | 8 +- .../python-pysnmp-apps.hash | 5 +- .../python-pysnmp-apps/python-pysnmp-apps.mk | 4 +- .../python-pysnmp-mibs.hash | 5 +- .../python-pysnmp-mibs/python-pysnmp-mibs.mk | 6 +- .../package/python-pysnmp/python-pysnmp.hash | 5 +- .../package/python-pysnmp/python-pysnmp.mk | 6 +- .../package/python-pytablereader/Config.in | 19 + .../python-pytablereader.hash | 3 + .../python-pytablereader.mk | 14 + .../package/python-pytablewriter/Config.in | 3 + .../python-pytablewriter.hash | 7 +- .../python-pytablewriter.mk | 4 +- .../package/python-pytz/python-pytz.hash | 7 +- .../package/python-pytz/python-pytz.mk | 4 +- bsp/buildroot/package/python-pyusb/Config.in | 2 - .../package/python-pyusb/python-pyusb.hash | 5 +- .../package/python-pyusb/python-pyusb.mk | 5 +- .../package/python-pyxb/python-pyxb.hash | 5 +- .../package/python-pyxb/python-pyxb.mk | 5 +- .../package/python-pyyaml/python-pyyaml.hash | 7 +- .../package/python-pyyaml/python-pyyaml.mk | 4 +- ...ldroot-zmq-version-instead-of-detect.patch | 52 +- ...pile_and_run-with-compile_and_forget.patch | 76 + bsp/buildroot/package/python-pyzmq/Config.in | 6 +- .../package/python-pyzmq/python-pyzmq.hash | 5 +- .../package/python-pyzmq/python-pyzmq.mk | 4 +- .../python-requests-toolbelt/Config.in | 7 + .../python-requests-toolbelt.hash | 3 + .../python-requests-toolbelt.mk | 14 + .../python-requests/python-requests.hash | 6 +- .../python-requests/python-requests.mk | 4 +- .../python-rpi-gpio/python-rpi-gpio.hash | 6 +- .../python-rpi-gpio/python-rpi-gpio.mk | 4 +- .../package/python-rtslib-fb/Config.in | 2 +- .../python-rtslib-fb/python-rtslib-fb.mk | 5 +- .../python-service-identity.hash | 6 +- .../python-service-identity.mk | 4 +- .../python-setuptools-scm.hash | 3 + .../python-setuptools-scm.mk | 14 + bsp/buildroot/package/python-sh/Config.in | 7 + .../package/python-sh/python-sh.hash | 3 + bsp/buildroot/package/python-sh/python-sh.mk | 14 + .../package/python-simpleaudio/Config.in | 13 + .../python-simpleaudio.hash | 3 + .../python-simpleaudio/python-simpleaudio.mk | 15 + .../python-simplejson/python-simplejson.hash | 5 +- .../python-simplejson/python-simplejson.mk | 8 +- bsp/buildroot/package/python-sip/Config.in | 7 +- .../package/python-sip/python-sip.mk | 4 + bsp/buildroot/package/python-slob/Config.in | 17 + .../package/python-slob/python-slob.hash | 2 + .../package/python-slob/python-slob.mk | 13 + .../python-socketio/python-socketio.mk | 1 - .../0001-Fix-build-with-musl-libc.patch | 43 - .../package/python-spidev/python-spidev.hash | 5 +- .../package/python-spidev/python-spidev.mk | 4 +- .../package/python-thrift/python-thrift.hash | 5 +- .../package/python-thrift/python-thrift.mk | 7 +- bsp/buildroot/package/python-toml/Config.in | 6 + .../package/python-toml/python-toml.hash | 2 + .../package/python-toml/python-toml.mk | 13 + ...ckports.ssl_match_hostname-on-Python.patch | 37 - .../python-tornado/python-tornado.hash | 6 +- .../package/python-tornado/python-tornado.mk | 4 +- .../package/python-twisted/Config.in | 2 + .../python-twisted/python-twisted.hash | 6 +- .../package/python-twisted/python-twisted.mk | 5 +- .../python-u-msgpack/python-u-msgpack.hash | 7 +- .../python-u-msgpack/python-u-msgpack.mk | 6 +- .../package/python-ubjson/python-ubjson.hash | 6 +- .../package/python-ubjson/python-ubjson.mk | 4 +- .../python-urllib3/python-urllib3.hash | 6 +- .../package/python-urllib3/python-urllib3.mk | 4 +- .../package/python-urwid/python-urwid.hash | 6 +- .../package/python-urwid/python-urwid.mk | 2 +- .../python-vcversioner.hash | 3 + .../python-vcversioner/python-vcversioner.mk | 13 + .../python-werkzeug/python-werkzeug.hash | 6 +- .../python-werkzeug/python-werkzeug.mk | 4 +- bsp/buildroot/package/python-whoosh/Config.in | 9 + .../package/python-whoosh/python-whoosh.hash | 3 + .../package/python-whoosh/python-whoosh.mk | 14 + .../package/python-ws4py/python-ws4py.hash | 6 +- .../package/python-ws4py/python-ws4py.mk | 4 +- .../python-xlsxwriter/python-xlsxwriter.hash | 7 +- .../python-xlsxwriter/python-xlsxwriter.mk | 4 +- .../python-zope-interface.hash | 6 +- .../python-zope-interface.mk | 4 +- .../004-sysconfigdata-install-location.patch | 6 +- .../python/010-fix-python-config.patch | 2 +- bsp/buildroot/package/python/python.hash | 6 +- bsp/buildroot/package/python/python.mk | 24 +- ...031-Add-an-option-to-disable-openssl.patch | 23 + bsp/buildroot/package/python3/Config.in | 18 +- bsp/buildroot/package/python3/python3.mk | 24 +- bsp/buildroot/package/qemu/Config.in | 13 +- bsp/buildroot/package/qemu/qemu.hash | 2 +- bsp/buildroot/package/qemu/qemu.mk | 45 +- ...e-a-main-include-file-QExtSerialPort.patch | 40 + .../package/qextserialport/0001-gui.patch | 16 - ...d-a-pkgconfig-file-to-ease-usage-wit.patch | 28 + .../qextserialport/0002-main-include.patch | 15 - .../qextserialport/0003-pkgconfig.patch | 19 - .../package/qextserialport/qextserialport.mk | 26 +- ...-Qt4-package-error-in-CMakeLists.txt.patch | 25 +- bsp/buildroot/package/qjson/qjson.hash | 2 +- bsp/buildroot/package/qjson/qjson.mk | 2 +- bsp/buildroot/package/qpid-proton/Config.in | 5 +- .../package/qt-webkit-kiosk/Config.in | 1 + ...penGL-EGL-Avoid-X11-header-collision.patch | 60 + bsp/buildroot/package/qt/qt.mk | 6 +- bsp/buildroot/package/qt5/Config.in | 38 +- bsp/buildroot/package/qt5/qt5.mk | 13 +- bsp/buildroot/package/qt5/qt53d/Config.in | 4 + bsp/buildroot/package/qt5/qt53d/qt53d.hash | 7 +- ...move-libudev-dependency-from-kms.pro.patch | 33 - ...0001-eglfs-rasp-pi-header-inclusion.patch} | 0 ...x-eglfs_mali-compile-for-odroid-mali.patch | 53 + ...uilds-with-qt-freetype-system-libpng.patch | 34 + ...-plugin-build-on-big-endian-machines.patch | 97 + bsp/buildroot/package/qt5/qt5base/Config.in | 14 +- bsp/buildroot/package/qt5/qt5base/qmake.conf | 1 + .../package/qt5/qt5base/qt5base.hash | 7 +- bsp/buildroot/package/qt5/qt5base/qt5base.mk | 39 +- .../package/qt5/qt5canvas3d/Config.in | 5 +- .../package/qt5/qt5canvas3d/qt5canvas3d.hash | 7 +- .../package/qt5/qt5connectivity/Config.in | 6 +- .../qt5/qt5connectivity/qt5connectivity.hash | 7 +- .../qt5/qt5connectivity/qt5connectivity.mk | 20 + .../package/qt5/qt5declarative/Config.in | 6 +- .../qt5/qt5declarative/qt5declarative.hash | 7 +- .../qt5/qt5declarative/qt5declarative.mk | 5 + .../package/qt5/qt5enginio/Config.in | 8 +- .../package/qt5/qt5enginio/qt5enginio.hash | 4 +- .../package/qt5/qt5enginio/qt5enginio.mk | 5 +- .../package/qt5/qt5graphicaleffects/Config.in | 6 +- .../qt5graphicaleffects.hash | 7 +- .../qt5graphicaleffects.mk | 5 + .../qt5imageformats/0001-tvOS-support.patch | 35 - .../package/qt5/qt5imageformats/Config.in | 5 +- .../qt5/qt5imageformats/qt5imageformats.hash | 7 +- .../qt5/qt5imageformats/qt5imageformats.mk | 5 + .../package/qt5/qt5location/Config.in | 6 +- .../package/qt5/qt5location/qt5location.hash | 7 +- .../package/qt5/qt5location/qt5location.mk | 5 + .../package/qt5/qt5multimedia/Config.in | 7 +- .../qt5/qt5multimedia/qt5multimedia.hash | 7 +- .../qt5/qt5multimedia/qt5multimedia.mk | 12 + .../package/qt5/qt5quickcontrols/Config.in | 5 +- .../qt5quickcontrols/qt5quickcontrols.hash | 7 +- .../qt5/qt5quickcontrols/qt5quickcontrols.mk | 19 +- .../package/qt5/qt5quickcontrols2/Config.in | 5 +- .../qt5quickcontrols2/qt5quickcontrols2.hash | 7 +- .../qt5quickcontrols2/qt5quickcontrols2.mk | 19 + bsp/buildroot/package/qt5/qt5script/Config.in | 5 +- .../package/qt5/qt5script/qt5script.hash | 7 +- .../package/qt5/qt5sensors/Config.in | 5 +- .../package/qt5/qt5sensors/qt5sensors.hash | 7 +- .../package/qt5/qt5sensors/qt5sensors.mk | 5 + .../package/qt5/qt5serialbus/Config.in | 5 +- .../qt5/qt5serialbus/qt5serialbus.hash | 7 +- .../package/qt5/qt5serialport/Config.in | 6 +- .../qt5/qt5serialport/qt5serialport.hash | 7 +- .../qt5/qt5serialport/qt5serialport.mk | 5 + bsp/buildroot/package/qt5/qt5svg/Config.in | 5 +- bsp/buildroot/package/qt5/qt5svg/qt5svg.hash | 7 +- bsp/buildroot/package/qt5/qt5svg/qt5svg.mk | 5 + bsp/buildroot/package/qt5/qt5tools/Config.in | 5 +- .../package/qt5/qt5tools/qt5tools.hash | 7 +- .../package/qt5/qt5tools/qt5tools.mk | 5 + .../package/qt5/qt5webchannel/Config.in | 6 +- .../qt5/qt5webchannel/qt5webchannel.hash | 7 +- .../qt5/qt5webchannel/qt5webchannel.mk | 9 + bsp/buildroot/package/qt5/qt5webkit/Config.in | 9 +- .../package/qt5/qt5webkit/qt5webkit.hash | 7 +- .../package/qt5/qt5webkit/qt5webkit.mk | 20 +- .../package/qt5/qt5websockets/Config.in | 7 +- .../qt5/qt5websockets/qt5websockets.hash | 7 +- .../qt5/qt5websockets/qt5websockets.mk | 9 + .../package/qt5/qt5x11extras/Config.in | 5 +- .../qt5/qt5x11extras/qt5x11extras.hash | 7 +- .../package/qt5/qt5x11extras/qt5x11extras.mk | 5 + .../package/qt5/qt5xmlpatterns/Config.in | 5 +- .../qt5/qt5xmlpatterns/qt5xmlpatterns.hash | 7 +- .../qt5/qt5xmlpatterns/qt5xmlpatterns.mk | 21 +- bsp/buildroot/package/qtuio/qtuio.mk | 2 +- bsp/buildroot/package/quagga/Config.in | 4 +- bsp/buildroot/package/quagga/quagga.hash | 2 +- bsp/buildroot/package/quagga/quagga.mk | 12 +- .../quota/0003-remove-non-posix-types.patch | 200 + .../package/quota/0004-import-sys-cdefs.patch | 18 + .../package/quota/0005-include-fcntl.patch | 20 + bsp/buildroot/package/qwt/Config.in | 1 + bsp/buildroot/package/qwt/qwt.mk | 4 +- bsp/buildroot/package/rabbitmq-c/Config.in | 4 - .../package/rabbitmq-server/Config.in | 13 + .../rabbitmq-server/S50rabbitmq-server | 28 + .../rabbitmq-server/rabbitmq-server.hash | 2 + .../rabbitmq-server/rabbitmq-server.mk | 55 + .../rabbitmq-server/rabbitmq-server.service | 15 + .../package/rapidjson/rapidjson.hash | 2 +- bsp/buildroot/package/rapidjson/rapidjson.mk | 2 +- ...print-operations-are-declared-before.patch | 38 + ...akefile-allow-passing-CFLAGS-LDFLAGS.patch | 28 + .../0002-Makefile-add-DESTDIR-support.patch | 49 + ...gic-to-find-def1-def2-and-def3-files.patch | 127 + .../raspberrypi-usbboot/Config.in.host | 12 + .../raspberrypi-usbboot.hash | 2 + .../raspberrypi-usbboot.mk | 21 + .../package/readline/0001-patchlevel-1.patch | 47 - .../package/readline/0002-patchlevel-2.patch | 48 - .../package/readline/0003-patchlevel-3.patch | 51 - .../package/readline/0004-patchlevel-4.patch | 49 - .../package/readline/0005-patchlevel-5.patch | 62 - .../package/readline/0006-patchlevel-6.patch | 67 - .../package/readline/0007-patchlevel-7.patch | 51 - .../package/readline/0008-patchlevel-8.patch | 51 - bsp/buildroot/package/readline/readline.hash | 2 +- bsp/buildroot/package/readline/readline.mk | 2 +- ...is.conf-adjust-defauts-for-buildroot.patch | 29 + .../redis/0003-redis.conf-sane-defaults.patch | 37 - bsp/buildroot/package/redis/redis.hash | 4 +- bsp/buildroot/package/redis/redis.mk | 2 +- .../package/riemann-c-client/Config.in | 17 + .../riemann-c-client/riemann-c-client.hash | 2 + .../riemann-c-client/riemann-c-client.mk | 24 + bsp/buildroot/package/rng-tools/Config.in | 2 +- bsp/buildroot/package/rp-pppoe/rp-pppoe.mk | 8 + bsp/buildroot/package/rpi-firmware/mkknlimg | 299 - .../package/rpi-firmware/rpi-firmware.hash | 2 +- .../package/rpi-firmware/rpi-firmware.mk | 13 +- ...r-the-OpenGLESv2-EGL-and-bcm_host-li.patch | 17 +- ...-faulty-assert-to-make-weston-happy-.patch | 35 + .../0003-Disable-Werror-everywhere.patch | 171 + ...-faulty-assert-to-make-weston-happy-.patch | 33 - ...ations-disable-missing-applications.patch} | 18 +- .../package/rpi-userland/0004-no-Werror.patch | 138 - ...rge-add-missing-include-for-va_list.patch} | 0 .../package/rpi-userland/rpi-userland.hash | 2 +- .../package/rpi-userland/rpi-userland.mk | 5 +- ...enable-disable-sepdebugcrcfix-buildi.patch | 55 + .../package/rpm/0002-depends-fix.patch | 19 - ...cfix.c-fix-build-with-recent-binutil.patch | 43 + .../package/rpm/0003-exclude-some-tools.patch | 30 - .../rpm/0004-ignore-shared-mutexes.patch | 12 - .../package/rpm/0005-no-parentdirs.patch | 14 - .../package/rpm/0006-ordering-fix.patch | 45 - .../rpm/0007-parentdir-vs-requires.patch | 37 - .../package/rpm/0008-short-circuit-c99.patch | 235 - bsp/buildroot/package/rpm/Config.in | 27 +- bsp/buildroot/package/rpm/rpm.hash | 7 +- bsp/buildroot/package/rpm/rpm.mk | 99 +- bsp/buildroot/package/rs485conf/rs485conf.mk | 4 +- bsp/buildroot/package/rsyslog/Config.in | 6 +- bsp/buildroot/package/rsyslog/rsyslog.hash | 2 +- bsp/buildroot/package/rsyslog/rsyslog.mk | 9 +- bsp/buildroot/package/rt-tests/rt-tests.mk | 4 +- bsp/buildroot/package/rtl8188eu/rtl8188eu.mk | 3 +- ...1-rtl8723bs-add-debug-level-modparam.patch | 41 + bsp/buildroot/package/rtl8723bs/Config.in | 10 + bsp/buildroot/package/rtl8723bs/rtl8723bs.mk | 27 + bsp/buildroot/package/rtmpdump/rtmpdump.mk | 6 +- ...ess.c-fix-rb_spawn_process-for-nommu.patch | 34 - bsp/buildroot/package/ruby/ruby.hash | 4 +- bsp/buildroot/package/ruby/ruby.mk | 19 +- bsp/buildroot/package/runc/runc.hash | 2 +- bsp/buildroot/package/runc/runc.mk | 4 +- bsp/buildroot/package/sam-ba/sam-ba.mk | 6 +- ...1-libreplace-disable-libbsd-support.patch} | 31 +- bsp/buildroot/package/samba4/Config.in | 8 +- bsp/buildroot/package/samba4/samba4-cache.txt | 1 + bsp/buildroot/package/samba4/samba4.hash | 2 +- bsp/buildroot/package/samba4/samba4.mk | 7 +- ...03-sane_backend-add-missing-config.h.patch | 49 + bsp/buildroot/package/sane-backends/Config.in | 5 + bsp/buildroot/package/screen/screen.hash | 2 +- bsp/buildroot/package/screen/screen.mk | 3 +- bsp/buildroot/package/sdl2/0001-ppc.patch | 47 + bsp/buildroot/package/sdl2/0002-gcc6.patch | 64 + bsp/buildroot/package/sdl2/Config.in | 2 + bsp/buildroot/package/sdl2/sdl2.hash | 4 +- bsp/buildroot/package/sdl2/sdl2.mk | 2 +- .../sdl2_ttf/0001-fix-opengl-detection.patch | 37 + .../sdl2_ttf/0002-fix-autoreconf.patch | 30 + bsp/buildroot/package/sdl2_ttf/sdl2_ttf.mk | 4 + .../0002-add-LDFLAGS-while-linking.patch | 29 + bsp/buildroot/package/sepolgen/sepolgen.hash | 2 +- bsp/buildroot/package/sepolgen/sepolgen.mk | 8 +- bsp/buildroot/package/ser2net/ser2net.hash | 2 +- bsp/buildroot/package/ser2net/ser2net.mk | 8 +- .../shairport-sync/shairport-sync.hash | 2 +- .../package/shairport-sync/shairport-sync.mk | 2 +- bsp/buildroot/package/shapelib/Config.in | 9 + bsp/buildroot/package/shapelib/shapelib.hash | 2 + bsp/buildroot/package/shapelib/shapelib.mk | 25 + .../package/shared-mime-info/Config.in | 2 +- .../shared-mime-info/shared-mime-info.hash | 2 +- .../shared-mime-info/shared-mime-info.mk | 4 +- ...0001-No-runtime-tests-for-endianness.patch | 95 + ...0002-No-runtime-tests-for-type-sizes.patch | 54 + ...ker-use-dummy-file-when-testing-libs.patch | 44 + bsp/buildroot/package/skalibs/Config.in | 9 + bsp/buildroot/package/skalibs/skalibs.hash | 2 + bsp/buildroot/package/skalibs/skalibs.mk | 54 + bsp/buildroot/package/slirp/slirp.mk | 2 +- bsp/buildroot/package/smcroute/smcroute.hash | 6 +- bsp/buildroot/package/smcroute/smcroute.mk | 2 +- bsp/buildroot/package/smstools3/smstools3.mk | 2 +- bsp/buildroot/package/snappy/snappy.hash | 2 +- bsp/buildroot/package/snappy/snappy.mk | 11 +- bsp/buildroot/package/sngrep/Config.in | 14 + bsp/buildroot/package/sngrep/sngrep.hash | 1 + bsp/buildroot/package/sngrep/sngrep.mk | 39 + .../snmppp/0001-Add-missing-includes.patch | 41 - bsp/buildroot/package/snmppp/snmppp.hash | 2 +- bsp/buildroot/package/snmppp/snmppp.mk | 2 +- .../package/snowball-hdmiservice/Config.in | 14 - .../snowball-hdmiservice.hash | 2 - .../snowball-hdmiservice.mk | 25 - bsp/buildroot/package/snowball-init/Config.in | 17 - .../package/snowball-init/snowball-init.hash | 2 - .../package/snowball-init/snowball-init.mk | 16 - .../0003-compat-set-NETDB_INTERNAL.patch | 35 + ...io-tun-remove-if_tun.h-kernel-header.patch | 91 + bsp/buildroot/package/softether/softether.mk | 6 +- bsp/buildroot/package/sqlite/sqlite.hash | 4 +- bsp/buildroot/package/sqlite/sqlite.mk | 4 +- bsp/buildroot/package/squashfs/squashfs.mk | 2 +- bsp/buildroot/package/squid/squid.hash | 6 +- bsp/buildroot/package/squid/squid.mk | 4 +- bsp/buildroot/package/sshpass/sshpass.hash | 2 +- bsp/buildroot/package/sshpass/sshpass.mk | 2 +- ...hile-building-sslh-in-a-larger-git-t.patch | 45 + bsp/buildroot/package/sslh/Config.in | 14 + bsp/buildroot/package/sslh/S35sslh | 48 + bsp/buildroot/package/sslh/sslh.hash | 2 + bsp/buildroot/package/sslh/sslh.mk | 26 + bsp/buildroot/package/sstrip/Config.in | 8 - bsp/buildroot/package/sstrip/sstrip.mk | 20 - .../start-stop-daemon/start-stop-daemon.hash | 4 +- .../start-stop-daemon/start-stop-daemon.mk | 4 +- .../package/statserial/statserial.mk | 2 +- ...11-standard-to-prevent-errors-on-PPC.patch | 35 + bsp/buildroot/package/strace/strace.hash | 8 +- bsp/buildroot/package/strace/strace.mk | 10 +- .../package/stress-ng/stress-ng.hash | 2 +- bsp/buildroot/package/stress-ng/stress-ng.mk | 7 +- bsp/buildroot/package/stunnel/stunnel.hash | 4 +- bsp/buildroot/package/stunnel/stunnel.mk | 5 +- .../package/subversion/subversion.hash | 5 +- .../package/subversion/subversion.mk | 2 +- bsp/buildroot/package/sudo/sudo.hash | 2 +- bsp/buildroot/package/sudo/sudo.mk | 18 +- bsp/buildroot/package/sunxi-mali/Config.in | 4 +- .../package/sunxi-tools/sunxi-tools.hash | 2 +- .../package/sunxi-tools/sunxi-tools.mk | 14 +- bsp/buildroot/package/supertuxkart/Config.in | 4 + bsp/buildroot/package/swupdate/Config.in | 9 +- bsp/buildroot/package/swupdate/swupdate.hash | 2 +- bsp/buildroot/package/swupdate/swupdate.mk | 8 +- .../synergy/0003-Fix-build-with-gcc-6.patch | 86 + ...place-deprecated-union-wait-with-int.patch | 28 + .../0002-Fix-improper-header-includes.patch | 78 + .../0003-Remove-include-of-linux-time.h.patch | 50 + ...d-written-klogctl-syscall-implementa.patch | 38 + ...5-Add-missing-headers-for-open-flags.patch | 46 + ...yslogd.c-rename-dprintf-to-mydprintf.patch | 39 + .../package/syslog-ng/syslog-ng.hash | 2 +- bsp/buildroot/package/syslog-ng/syslog-ng.mk | 21 +- bsp/buildroot/package/sysstat/sysstat.hash | 4 +- bsp/buildroot/package/sysstat/sysstat.mk | 2 +- ...ure-add-option-to-not-build-manpages.patch | 59 - .../systemd-bootchart/systemd-bootchart.hash | 2 +- .../systemd-bootchart/systemd-bootchart.mk | 16 +- ...sys-revert-use-of-ln-relative-option.patch | 18 +- bsp/buildroot/package/systemd/Config.in | 2 - bsp/buildroot/package/systemd/dhcp.network | 4 + bsp/buildroot/package/systemd/systemd.hash | 2 +- bsp/buildroot/package/systemd/systemd.mk | 19 +- bsp/buildroot/package/taglib/taglib.hash | 2 +- bsp/buildroot/package/taglib/taglib.mk | 2 +- bsp/buildroot/package/targetcli-fb/Config.in | 2 +- .../package/targetcli-fb/targetcli-fb.mk | 4 +- ...rrect-variables-for-GnuTLS-detection.patch | 32 + ...eLists-use-pkg-config-uuid-detection.patch | 40 + bsp/buildroot/package/taskd/Config.in | 2 +- bsp/buildroot/package/taskd/taskd.mk | 2 +- bsp/buildroot/package/tcpdump/tcpdump.hash | 2 +- bsp/buildroot/package/tcpdump/tcpdump.mk | 2 +- bsp/buildroot/package/tcping/Config.in | 2 +- bsp/buildroot/package/tcping/tcping.mk | 4 +- .../package/tcpreplay/tcpreplay.hash | 2 +- bsp/buildroot/package/tcpreplay/tcpreplay.mk | 2 +- bsp/buildroot/package/tekui/tekui.mk | 4 +- bsp/buildroot/package/terminology/Config.in | 1 - .../package/terminology/terminology.hash | 4 +- .../package/terminology/terminology.mk | 4 +- bsp/buildroot/package/texinfo/texinfo.hash | 2 - bsp/buildroot/package/texinfo/texinfo.mk | 13 - .../package/ti-cgt-pru/Config.in.host | 17 + .../package/ti-cgt-pru/ti-cgt-pru.hash | 2 + .../package/ti-cgt-pru/ti-cgt-pru.mk | 34 + bsp/buildroot/package/ti-gfx/ti-gfx.mk | 4 +- bsp/buildroot/package/ti-sgx-km/ti-sgx-km.mk | 2 +- bsp/buildroot/package/ti-sgx-um/ti-sgx-um.mk | 4 +- bsp/buildroot/package/ti-utils/ti-utils.mk | 2 +- .../package/tidsp-binaries/tidsp-binaries.mk | 2 +- bsp/buildroot/package/tiff/Config.in | 2 +- bsp/buildroot/package/tiff/tiff.hash | 2 +- bsp/buildroot/package/tiff/tiff.mk | 2 +- bsp/buildroot/package/tinc/tinc.hash | 2 +- bsp/buildroot/package/tinc/tinc.mk | 2 +- .../tinyalsa/0001-disable-doxygen-usage.patch | 32 + ...-function-pcm_get_format_name-static.patch | 45 - ...-time.h-to-get-struct-timespec-proto.patch | 33 - bsp/buildroot/package/tinyalsa/tinyalsa.hash | 2 +- bsp/buildroot/package/tinyalsa/tinyalsa.mk | 25 +- .../0001-Update-cjson-include-path.patch | 69 + ...-Fix-static-compilation-of-json2cbor.patch | 29 + bsp/buildroot/package/tinycbor/Config.in | 2 - bsp/buildroot/package/tinycbor/tinycbor.hash | 3 +- bsp/buildroot/package/tinycbor/tinycbor.mk | 12 +- bsp/buildroot/package/tinydtls/Config.in | 2 +- bsp/buildroot/package/tinyhttpd/tinyhttpd.mk | 2 +- ...ix-build-on-Thumb-only-architectures.patch | 47 + ...define-program_invocation_short_name.patch | 42 + bsp/buildroot/package/tmux/tmux.hash | 2 +- bsp/buildroot/package/tmux/tmux.mk | 2 +- .../package/tor/0001-openssl-libz.patch | 78 +- bsp/buildroot/package/tor/tor.hash | 2 +- bsp/buildroot/package/tor/tor.mk | 6 +- bsp/buildroot/package/torsmo/Config.in | 11 - bsp/buildroot/package/torsmo/torsmo.hash | 2 - bsp/buildroot/package/torsmo/torsmo.mk | 18 - bsp/buildroot/package/tpm-tools/Config.in | 2 + bsp/buildroot/package/tpm-tools/tpm-tools.mk | 1 - ...1.0.18-has-sys-quota.h-synced-with-G.patch | 29 + .../transmission/0006-libsystemd.patch | 133 + .../package/transmission/transmission.mk | 2 +- bsp/buildroot/package/tremor/tremor.mk | 12 +- bsp/buildroot/package/trinity/Config.in | 17 +- bsp/buildroot/package/trousers/Config.in | 3 + bsp/buildroot/package/trousers/trousers.mk | 5 +- bsp/buildroot/package/ts4900-fpga/Config.in | 12 + .../package/ts4900-fpga/ts4900-fpga.hash | 5 + .../package/ts4900-fpga/ts4900-fpga.mk | 21 + .../tslib/0001-enable_raw_module.patch | 14 - ...02-add_finddef_and_inputattach_utils.patch | 718 -- bsp/buildroot/package/tslib/Config.in | 2 +- bsp/buildroot/package/tslib/tslib.hash | 4 +- bsp/buildroot/package/tslib/tslib.mk | 7 +- bsp/buildroot/package/tunctl/tunctl.mk | 1 - bsp/buildroot/package/turbolua/turbolua.mk | 4 +- ...ert-minimum-required-version-numbers.patch | 51 - bsp/buildroot/package/tvheadend/Config.in | 2 +- .../package/tvheadend/tvheadend.hash | 2 +- bsp/buildroot/package/tvheadend/tvheadend.mk | 6 +- bsp/buildroot/package/tzdata/tzdata.hash | 4 +- bsp/buildroot/package/tzdata/tzdata.mk | 2 +- .../package/uboot-tools/uboot-tools.hash | 2 +- .../package/uboot-tools/uboot-tools.mk | 2 +- ...1-Install-server-and-client-examples.patch | 0 .../package/{ubus_ => ubus}/Config.in | 0 .../package/{ubus_ => ubus}/ubus.hash | 0 bsp/buildroot/package/{ubus_ => ubus}/ubus.mk | 0 bsp/buildroot/package/ucl/ucl.mk | 2 +- .../package/uclibc-ng-test/Config.in | 22 + .../package/uclibc-ng-test/uclibc-ng-test.mk | 54 + .../0001-arm-fix-compile-in-thumb-mode.patch | 48 - ...fstat-make-new-code-aarch64-specific.patch | 29 + .../0002-arm-fix-static-linking-issues.patch | 38 + ...pc-Do-not-use-alloca-in-clntudp_call.patch | 59 - .../0003-ARC-Support-syscall-ABI-v4.patch | 54 - ...k-add-missing-definition-of-ucontext.patch | 33 + bsp/buildroot/package/uclibc/Config.in | 33 +- bsp/buildroot/package/uclibc/uClibc-ng.config | 2 - bsp/buildroot/package/uclibc/uclibc.hash | 2 +- bsp/buildroot/package/uclibc/uclibc.mk | 47 +- .../0002-Fix-systemd-service-file.patch | 33 + bsp/buildroot/package/udisks/Config.in | 5 +- bsp/buildroot/package/udisks/udisks.mk | 2 + bsp/buildroot/package/udpxy/Config.in | 9 + bsp/buildroot/package/udpxy/udpxy.hash | 2 + bsp/buildroot/package/udpxy/udpxy.mk | 22 + .../package/uhttpd/0001-Remove-Werror.patch | 33 + bsp/buildroot/package/uhttpd/Config.in | 18 + bsp/buildroot/package/uhttpd/uhttpd.hash | 2 + bsp/buildroot/package/uhttpd/uhttpd.mk | 35 + bsp/buildroot/package/unixodbc/unixodbc.hash | 6 +- bsp/buildroot/package/unixodbc/unixodbc.mk | 9 +- bsp/buildroot/package/unrar/unrar.hash | 2 +- bsp/buildroot/package/unrar/unrar.mk | 6 +- bsp/buildroot/package/upmpdcli/Config.in | 10 +- bsp/buildroot/package/upmpdcli/upmpdcli.hash | 4 +- bsp/buildroot/package/upmpdcli/upmpdcli.mk | 16 +- .../0001-daemon-fix-get_critical_action.patch | 34 + bsp/buildroot/package/upower/Config.in | 26 + bsp/buildroot/package/upower/upower.hash | 2 + bsp/buildroot/package/upower/upower.mk | 25 + bsp/buildroot/package/urg/0001-select-h.patch | 38 +- ...02-urg-gcc6-fix-narrowing-conversion.patch | 99 + bsp/buildroot/package/urg/Config.in | 2 +- bsp/buildroot/package/urg/urg.hash | 2 + bsp/buildroot/package/urg/urg.mk | 2 +- .../usb_modeswitch/usb_modeswitch.hash | 2 +- .../package/usb_modeswitch/usb_modeswitch.mk | 2 +- bsp/buildroot/package/usbredir/usbredir.mk | 4 +- ...fig-h-before-checking-for-CONFIG-NLS.patch | 42 + bsp/buildroot/package/ushare/ushare.mk | 4 +- bsp/buildroot/package/ustr/ustr.mk | 5 +- bsp/buildroot/package/ustream-ssl/Config.in | 12 + .../package/ustream-ssl/ustream-ssl.mk | 21 + ...-build-sys-fix-uClibc-ng-scanf-check.patch | 34 - ...use-lm-for-scriptreplay-if-necessary.patch | 30 + bsp/buildroot/package/util-linux/Config.in | 124 +- bsp/buildroot/package/util-linux/su.pam | 2 + .../package/util-linux/util-linux.hash | 4 +- .../package/util-linux/util-linux.mk | 99 +- .../package/ux500-firmware/ux500-firmware.mk | 4 +- bsp/buildroot/package/vala/vala.hash | 4 +- bsp/buildroot/package/vala/vala.mk | 4 +- .../0003-mips-replace-addi-with-addiu.patch | 137 - bsp/buildroot/package/valgrind/valgrind.hash | 2 +- bsp/buildroot/package/valgrind/valgrind.mk | 23 +- bsp/buildroot/package/vde2/vde2.mk | 12 +- .../package/vdr-plugin-vnsiserver/Config.in | 9 + .../vdr-plugin-vnsiserver.hash | 2 + .../vdr-plugin-vnsiserver.mk | 25 + .../package/vdr/0001-getloadavg.patch | 55 + bsp/buildroot/package/vdr/0002-libjpeg.patch | 40 + bsp/buildroot/package/vdr/Config.in | 25 + bsp/buildroot/package/vdr/vdr.hash | 4 + bsp/buildroot/package/vdr/vdr.mk | 66 + bsp/buildroot/package/vim/vim.hash | 2 +- bsp/buildroot/package/vim/vim.mk | 14 +- .../package/vlc/0009-ffmpeg-3.0.patch | 283 + .../package/vlc/0010-static-assert.patch | 25 + .../package/vlc/0011-static-assert.patch | 28 + bsp/buildroot/package/vlc/Config.in | 3 + bsp/buildroot/package/vlc/vlc.mk | 14 +- bsp/buildroot/package/vo-aacenc/vo-aacenc.mk | 5 + bsp/buildroot/package/vsftpd/vsftpd.mk | 2 +- bsp/buildroot/package/waf/waf.hash | 3 + bsp/buildroot/package/waf/waf.mk | 19 + bsp/buildroot/package/wavemon/wavemon.hash | 3 +- bsp/buildroot/package/wavemon/wavemon.mk | 5 +- bsp/buildroot/package/wavpack/Config.in | 5 +- bsp/buildroot/package/wavpack/wavpack.hash | 3 +- bsp/buildroot/package/wavpack/wavpack.mk | 5 +- .../wayland-protocols/wayland-protocols.hash | 4 +- .../wayland-protocols/wayland-protocols.mk | 2 +- ...scanner-Use-uint32_t-instead-of-uint.patch | 31 - bsp/buildroot/package/wayland/wayland.hash | 4 +- bsp/buildroot/package/wayland/wayland.mk | 2 +- .../0001-build-fix-for-32-bit-autotools.patch | 34 - .../0002-build-fix-for-gtklauncher.patch | 51 - .../webkit/0003-detect-harfbuzz-icu.patch | 28 - .../webkit/0004-disable-docrebase.patch | 27 - .../package/webkit/0005-disable-tests.patch | 80 - .../package/webkit/0006-execinfo_h.patch | 20 - .../package/webkit/0007-mips-dfg.patch | 1490 ----- .../webkit/0008-support-bison-3.0.patch | 22 - bsp/buildroot/package/webkit/Config.in | 53 - bsp/buildroot/package/webkit/webkit.hash | 2 - bsp/buildroot/package/webkit/webkit.mk | 72 - .../webkitgtk/0001-fix-gcc6-builds.patch | 53 + .../package/webkitgtk/webkitgtk.hash | 6 +- bsp/buildroot/package/webkitgtk/webkitgtk.mk | 2 +- .../package/webkitgtk24/0001-fix-ppc32.patch | 34 - ...quotes-in-licence-break-Python-stdin.patch | 36 - bsp/buildroot/package/webkitgtk24/Config.in | 83 - .../package/webkitgtk24/webkitgtk24.hash | 4 - .../package/webkitgtk24/webkitgtk24.mk | 124 - bsp/buildroot/package/webp/webp.hash | 2 +- bsp/buildroot/package/webp/webp.mk | 2 +- .../package/webrtc-audio-processing/Config.in | 8 +- ...itor-rdp-fix-no-break-space-U-A0-U8-.patch | 34 - ...include-weston-egl-ext.h-only-if-ENA.patch | 38 + ...ure-search-for-lib-with-clock_getres.patch | 47 + ...e-weston-egl-ext.h-in-drm-x11-and-wa.patch | 58 + ...ilding-issue-when-EGL-support-is-not.patch | 47 + .../0006-tests-add-missing-include.patch | 36 + bsp/buildroot/package/weston/Config.in | 15 +- bsp/buildroot/package/weston/weston.hash | 4 +- bsp/buildroot/package/weston/weston.mk | 16 +- bsp/buildroot/package/wf111/wf111.mk | 2 +- bsp/buildroot/package/wget/wget.hash | 2 +- bsp/buildroot/package/wget/wget.mk | 21 +- bsp/buildroot/package/whois/whois.hash | 4 +- bsp/buildroot/package/whois/whois.mk | 4 +- bsp/buildroot/package/wine/wine.hash | 2 +- bsp/buildroot/package/wine/wine.mk | 17 +- .../package/wireless_tools/wireless_tools.mk | 8 +- ...ot-assume-broken-inet_pton-in-case-.patch} | 21 +- ...iddump-add-missing-sys-time.h-header.patch | 35 + bsp/buildroot/package/wireshark/Config.in | 19 +- .../package/wireshark/wireshark.hash | 4 +- bsp/buildroot/package/wireshark/wireshark.mk | 22 +- .../0001-Adjust-for-buildroot-build.patch | 30 +- bsp/buildroot/package/wiringpi/wiringpi.hash | 2 +- bsp/buildroot/package/wiringpi/wiringpi.mk | 20 +- .../0001-fix-readline-libs-ordering.patch | 26 - ...ata-in-WNM-Sleep-Mode-Response-frame.patch | 32 - ...-Fix-last-fragment-length-validation.patch | 54 - ...-Fix-last-fragment-length-validation.patch | 51 - ...-error-path-for-unexpected-Confirm-m.patch | 34 - .../0006-fix-libwpa_client.patch | 39 - ...ervice-files-according-to-dbus-inter.patch | 77 - ...a-Credential-with-invalid-passphrase.patch | 85 - ...eter-set-with-invalid-passphrase-cha.patch | 53 - ...from-wpa_supplicant-config-network-o.patch | 84 - ...commands-with-newline-characters-in-.patch | 65 - ...nds-with-newline-characters-in-the-s.patch | 53 - .../package/wpa_supplicant/Config.in | 8 + .../wpa_supplicant/wpa_supplicant.hash | 2 +- .../package/wpa_supplicant/wpa_supplicant.mk | 10 +- .../package/wvdial/0001-uClibc-scandir.patch | 23 - bsp/buildroot/package/wvdial/Config.in | 15 - bsp/buildroot/package/wvdial/wvdial.hash | 2 - bsp/buildroot/package/wvdial/wvdial.mk | 32 - .../0001-fix-uClibc-compile-getcontext.patch | 273 - ...ix-uClibc-compile-execinfo-backtrace.patch | 31 - .../0003-fix-uClibc-compile-misc.patch | 16 - .../package/wvstreams/0004-build-fixes.patch | 40 - .../package/wvstreams/0005-getuid.patch | 25 - bsp/buildroot/package/wvstreams/Config.in | 17 - .../package/wvstreams/wvstreams.hash | 2 - bsp/buildroot/package/wvstreams/wvstreams.mk | 62 - bsp/buildroot/package/x11r7/Config.in | 1 + .../0002-missing_path_wtmpx.patch | 24 + .../package/x11r7/xapp_xauth/xapp_xauth.hash | 4 +- .../package/x11r7/xapp_xauth/xapp_xauth.mk | 2 +- .../x11r7/xapp_xconsole/xapp_xconsole.hash | 4 +- .../x11r7/xapp_xconsole/xapp_xconsole.mk | 2 +- .../package/x11r7/xapp_xload/xapp_xload.mk | 5 + .../package/x11r7/xcb-util/xcb-util.mk | 2 +- .../0001-build-get-rid-of-sdkdir.patch | 87 + .../xdriver_xf86-input-evdev.hash | 4 +- .../xdriver_xf86-input-evdev.mk | 4 +- .../0001-build-get-rid-of-sdkdir.patch | 78 + .../xdriver_xf86-input-joystick.hash | 4 +- .../xdriver_xf86-input-joystick.mk | 3 +- .../xdriver_xf86-input-keyboard.hash | 4 +- .../xdriver_xf86-input-keyboard.mk | 2 +- .../0001-build-get-rid-of-sdkdir.patch | 78 + .../xdriver_xf86-input-libinput.hash | 4 +- .../xdriver_xf86-input-libinput.mk | 3 +- .../0001-build-get-rid-of-sdkdir.patch | 81 + .../xdriver_xf86-input-mouse.hash | 4 +- .../xdriver_xf86-input-mouse.mk | 3 +- .../0001-build-get-rid-of-sdkdir.patch | 88 + .../xdriver_xf86-input-synaptics.hash | 4 +- .../xdriver_xf86-input-synaptics.mk | 3 +- .../xdriver_xf86-video-amdgpu.hash | 4 +- .../xdriver_xf86-video-amdgpu.mk | 2 +- .../xdriver_xf86-video-ati.hash | 4 +- .../xdriver_xf86-video-ati.mk | 2 +- .../xdriver_xf86-video-dummy.hash | 4 +- .../xdriver_xf86-video-dummy.mk | 2 +- .../xdriver_xf86-video-geode.hash | 4 +- .../xdriver_xf86-video-geode.mk | 2 +- .../0001-mbstring.patch | 35 - .../xdriver_xf86-video-glint.hash | 4 +- .../xdriver_xf86-video-glint.mk | 3 +- .../xdriver_xf86-video-imx-viv.hash | 2 +- .../xdriver_xf86-video-imx-viv.mk | 2 +- .../xdriver_xf86-video-intel.mk | 2 +- .../xdriver_xf86-video-mga.hash | 4 +- .../xdriver_xf86-video-mga.mk | 2 +- .../xdriver_xf86-video-nouveau.hash | 6 +- .../xdriver_xf86-video-nouveau.mk | 2 +- .../xdriver_xf86-video-nv/0001-mibstore.patch | 86 - .../xdriver_xf86-video-nv.hash | 4 +- .../xdriver_xf86-video-nv.mk | 2 +- .../xdriver_xf86-video-openchrome/Config.in | 6 +- .../xdriver_xf86-video-openchrome.hash | 4 +- .../xdriver_xf86-video-openchrome.mk | 2 +- .../x11r7/xdriver_xf86-video-qxl/Config.in | 1 + .../xdriver_xf86-video-qxl.hash | 4 +- .../xdriver_xf86-video-qxl.mk | 8 +- .../xdriver_xf86-video-r128.hash | 4 +- .../xdriver_xf86-video-r128.mk | 2 +- .../xdriver_xf86-video-savage.hash | 4 +- .../xdriver_xf86-video-savage.mk | 2 +- .../xdriver_xf86-video-siliconmotion.hash | 4 +- .../xdriver_xf86-video-siliconmotion.mk | 2 +- .../{0007-xi.patch => 0003-xi.patch} | 0 .../xdriver_xf86-video-sis.hash | 4 +- .../xdriver_xf86-video-sis.mk | 6 +- .../xdriver_xf86-video-tdfx.hash | 4 +- .../xdriver_xf86-video-tdfx.mk | 2 +- .../xdriver_xf86-video-trident.hash | 4 +- .../xdriver_xf86-video-trident.mk | 2 +- .../xdriver_xf86-video-vmware.hash | 4 +- .../xdriver_xf86-video-vmware.mk | 2 +- .../xkeyboard-config/xkeyboard-config.hash | 4 +- .../xkeyboard-config/xkeyboard-config.mk | 2 +- .../x11r7/xlib_libX11/xlib_libX11.hash | 5 +- .../package/x11r7/xlib_libX11/xlib_libX11.mk | 2 +- .../x11r7/xlib_libXfixes/xlib_libXfixes.hash | 4 +- .../x11r7/xlib_libXfixes/xlib_libXfixes.mk | 2 +- .../x11r7/xlib_libXfont/xlib_libXfont.hash | 4 +- .../x11r7/xlib_libXfont/xlib_libXfont.mk | 2 +- .../package/x11r7/xlib_libXfont2/Config.in | 10 + .../x11r7/xlib_libXfont2/xlib_libXfont2.hash | 2 + .../x11r7/xlib_libXfont2/xlib_libXfont2.mk | 33 + .../package/x11r7/xlib_libXi/xlib_libXi.hash | 4 +- .../package/x11r7/xlib_libXi/xlib_libXi.mk | 2 +- .../x11r7/xlib_libXpm/xlib_libXpm.hash | 4 +- .../package/x11r7/xlib_libXpm/xlib_libXpm.mk | 2 +- .../x11r7/xlib_libXrandr/xlib_libXrandr.hash | 4 +- .../x11r7/xlib_libXrandr/xlib_libXrandr.mk | 2 +- .../xlib_libXrender/xlib_libXrender.hash | 4 +- .../x11r7/xlib_libXrender/xlib_libXrender.mk | 2 +- .../x11r7/xlib_libXtst/xlib_libXtst.hash | 4 +- .../x11r7/xlib_libXtst/xlib_libXtst.mk | 2 +- .../package/x11r7/xlib_libXv/xlib_libXv.hash | 4 +- .../package/x11r7/xlib_libXv/xlib_libXv.mk | 2 +- .../x11r7/xlib_libXvMC/xlib_libXvMC.hash | 5 +- .../x11r7/xlib_libXvMC/xlib_libXvMC.mk | 2 +- .../package/x11r7/xlib_libXxf86dga/Config.in | 1 + .../xproto_presentproto.hash | 4 +- .../xproto_presentproto.mk | 2 +- .../x11r7/xproto_xproto/xproto_xproto.hash | 4 +- .../x11r7/xproto_xproto/xproto_xproto.mk | 2 +- .../0001-modesettings-needs-dri2.patch | 0 ...ure.ac-Fix-check-for-CLOCK_MONOTONIC.patch | 66 + ...003-Remove-check-for-useSIGIO-option.patch | 53 + .../x11r7/xserver_xorg-server/Config.in | 24 +- .../xserver_xorg-server.hash | 4 +- .../xserver_xorg-server.mk | 25 +- bsp/buildroot/package/x264/Config.in | 1 - bsp/buildroot/package/x264/x264.hash | 2 + bsp/buildroot/package/x264/x264.mk | 2 +- .../package/x265/0001-fix-gcc-options.patch | 52 + bsp/buildroot/package/x265/x265.hash | 2 +- bsp/buildroot/package/x265/x265.mk | 2 +- ...ove-hardcoded-strict-Werror-checking.patch | 26 + ...x-build-with-CFLAGS-from-environment.patch | 36 + ...libxl-Disable-strict-Werror-checking.patch | 26 + bsp/buildroot/package/xen/Config.in | 2 +- bsp/buildroot/package/xen/xen.hash | 2 +- bsp/buildroot/package/xen/xen.mk | 2 +- .../0001-bfin-remove-inline-keyword.patch | 62 + bsp/buildroot/package/xenomai/xenomai.mk | 2 +- ...-do-dynamic-linking-of-libtool-libra.patch | 13 +- ...do-not-try-to-run-the-crc32selftest.patch} | 20 +- ...progs-don-t-use-CFLAGS-with-BUILD_CC.patch | 12 +- ...004-build-add-EXTRALIBS-to-link-with.patch | 53 + bsp/buildroot/package/xfsprogs/Config.in | 11 +- bsp/buildroot/package/xfsprogs/xfsprogs.hash | 4 +- bsp/buildroot/package/xfsprogs/xfsprogs.mk | 22 +- bsp/buildroot/package/xl2tp/0002-musl.patch | 19 - bsp/buildroot/package/xl2tp/xl2tp.hash | 2 +- bsp/buildroot/package/xl2tp/xl2tp.mk | 4 +- ...tatic-linking-problem-with-libgcrypt.patch | 46 - .../package/xmlstarlet/xmlstarlet.mk | 10 +- .../package/xscreensaver/xscreensaver.mk | 2 +- .../xtables-addons/xtables-addons.hash | 6 +- .../package/xtables-addons/xtables-addons.mk | 8 +- bsp/buildroot/package/xterm/Config.in | 2 + bsp/buildroot/package/xterm/xterm.hash | 2 +- bsp/buildroot/package/xterm/xterm.mk | 9 +- .../xutil_util-macros/xutil_util-macros.hash | 4 +- .../xutil_util-macros/xutil_util-macros.mk | 2 +- ...1-Makefile-Fix-oldconfig-make-target.patch | 30 + .../0002-openconf-do-not-check-stdin.patch | 58 + bsp/buildroot/package/xvisor/Config.in | 68 + bsp/buildroot/package/xvisor/xvisor.hash | 2 + bsp/buildroot/package/xvisor/xvisor.mk | 72 + bsp/buildroot/package/xvkbd/xvkbd.mk | 4 +- bsp/buildroot/package/xz/xz.hash | 2 +- bsp/buildroot/package/xz/xz.mk | 2 +- bsp/buildroot/package/zbar/zbar.mk | 2 + bsp/buildroot/package/zeromq/Config.in | 12 +- ...ove-dependency-check-on-version-file.patch | 32 + bsp/buildroot/package/zic/zic.hash | 4 +- bsp/buildroot/package/zic/zic.mk | 2 +- bsp/buildroot/package/zip/zip.mk | 8 +- bsp/buildroot/package/zlib/Config.in | 2 +- bsp/buildroot/package/zlib/zlib.hash | 2 +- bsp/buildroot/package/zlib/zlib.mk | 14 +- bsp/buildroot/package/zlog/zlog.mk | 6 +- bsp/buildroot/package/zmqpp/Config.in | 13 +- bsp/buildroot/package/znc/znc.hash | 2 +- bsp/buildroot/package/znc/znc.mk | 2 +- ...1-configure-use-user-set-pcre-config.patch | 33 - bsp/buildroot/package/zsh/zsh.hash | 4 +- bsp/buildroot/package/zsh/zsh.mk | 4 +- bsp/buildroot/package/zyre/Config.in | 6 +- bsp/buildroot/package/zyre/zyre.mk | 1 + .../support/dependencies/check-host-cmake.mk | 19 +- .../support/dependencies/check-host-cmake.sh | 61 +- .../support/dependencies/check-host-lzip.mk | 5 + .../support/dependencies/check-host-lzip.sh | 14 + .../support/dependencies/check-host-xzcat.mk | 1 + .../support/dependencies/dependencies.mk | 2 - .../support/dependencies/dependencies.sh | 13 +- bsp/buildroot/support/download/bzr | 4 +- bsp/buildroot/support/download/cp | 4 +- bsp/buildroot/support/download/cvs | 4 +- bsp/buildroot/support/download/git | 12 +- bsp/buildroot/support/download/hg | 4 +- bsp/buildroot/support/download/scp | 4 +- bsp/buildroot/support/download/svn | 4 +- bsp/buildroot/support/download/wget | 4 +- .../support/dummy-external/external.mk | 0 bsp/buildroot/support/misc/Vagrantfile | 22 +- .../support/misc/toolchainfile.cmake.in | 36 +- bsp/buildroot/support/misc/utils.mk | 115 + .../support/scripts/apply-patches.sh | 2 - bsp/buildroot/support/scripts/br2-external | 221 + .../scripts/fix-configure-powerpc64.sh | 47 + .../support/scripts/gen-manual-lists.py | 513 -- bsp/buildroot/support/scripts/get-developers | 83 + .../support/scripts/getdeveloperlib.py | 200 + bsp/buildroot/support/scripts/graph-depends | 71 +- bsp/buildroot/support/scripts/kconfiglib.py | 3541 ---------- bsp/buildroot/support/scripts/mkusers | 4 +- bsp/buildroot/support/scripts/pkg-stats | 1 + bsp/buildroot/support/scripts/pkgutil.py | 62 + .../support/scripts/readme.kconfiglib | 30 - bsp/buildroot/support/scripts/scancpan | 6 +- bsp/buildroot/support/scripts/size-stats | 11 +- bsp/buildroot/support/scripts/test-pkg | 195 + bsp/buildroot/system/Config.in | 24 +- bsp/buildroot/system/skeleton/etc/group | 2 +- bsp/buildroot/system/skeleton/etc/passwd | 2 +- bsp/buildroot/toolchain/helpers.mk | 3 +- .../toolchain/toolchain-buildroot/Config.in | 30 +- bsp/buildroot/toolchain/toolchain-common.in | 23 + .../toolchain/toolchain-external/Config.in | 1066 +-- .../pkg-toolchain-external.mk | 607 ++ .../Config.in | 61 + .../Config.in.options | 9 + ...toolchain-external-codescape-img-mips.hash | 4 + .../toolchain-external-codescape-img-mips.mk | 51 + .../Config.in | 72 + .../Config.in.options | 9 + ...toolchain-external-codescape-mti-mips.hash | 4 + .../toolchain-external-codescape-mti-mips.mk | 51 + .../Config.in | 17 + .../Config.in.options | 9 + ...olchain-external-codesourcery-aarch64.hash | 3 + ...toolchain-external-codesourcery-aarch64.mk | 22 + .../Config.in | 24 + .../Config.in.options | 9 + ...toolchain-external-codesourcery-amd64.hash | 3 + .../toolchain-external-codesourcery-amd64.mk | 12 + .../Config.in | 35 + .../Config.in.options | 9 + .../toolchain-external-codesourcery-arm.hash | 3 + .../toolchain-external-codesourcery-arm.mk | 13 + .../Config.in | 93 + .../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 | 3 + .../toolchain-external-codesourcery-niosII.mk | 13 + .../Config.in | 25 + .../Config.in.options | 9 + .../toolchain-external-codesourcery-sh.hash | 3 + .../toolchain-external-codesourcery-sh.mk | 13 + .../Config.in | 29 + .../Config.in.options | 9 + .../toolchain-external-codesourcery-x86.hash | 3 + .../toolchain-external-codesourcery-x86.mk | 12 + .../toolchain-external-custom/Config.in | 5 + .../Config.in.options | 349 + .../toolchain-external-custom.mk | 15 + .../Config.in | 15 + .../Config.in.options | 9 + .../toolchain-external-linaro-aarch64.hash | 3 + .../toolchain-external-linaro-aarch64.mk | 16 + .../toolchain-external-linaro-arm/Config.in | 27 + .../Config.in.options | 9 + .../toolchain-external-linaro-arm.hash | 3 + .../toolchain-external-linaro-arm.mk | 16 + .../toolchain-external-linaro-armeb/Config.in | 26 + .../Config.in.options | 9 + .../toolchain-external-linaro-armeb.hash | 3 + .../toolchain-external-linaro-armeb.mk | 16 + .../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.hash | 70 - .../toolchain-external/toolchain-external.mk | 803 +-- bsp/buildroot/toolchain/toolchain-wrapper.c | 119 +- bsp/buildroot/toolchain/toolchain-wrapper.mk | 16 +- .../toolchain/toolchain/toolchain.mk | 23 + 3010 files changed, 41289 insertions(+), 46428 deletions(-) create mode 100644 bsp/buildroot/.br-external.mk create mode 100644 bsp/buildroot/DEVELOPERS delete mode 100644 bsp/buildroot/arch/Config.in.aarch64 create mode 100644 bsp/buildroot/arch/Config.in.or1k create mode 100644 bsp/buildroot/board/acmesystems/aria-g25/genimage.cfg create mode 100755 bsp/buildroot/board/acmesystems/aria-g25/post-image.sh rename bsp/buildroot/board/armadeus/apf28/{linux-3.12.config => linux-4.4.config} (100%) rename bsp/buildroot/board/armadeus/apf51/{linux-3.12.config => linux-4.4.config} (93%) delete mode 100644 bsp/buildroot/board/atmel/at91sam9260ek/linux-3.9.config create mode 100644 bsp/buildroot/board/beagleboardx15/genimage.cfg create mode 100755 bsp/buildroot/board/beagleboardx15/post-image.sh create mode 100644 bsp/buildroot/board/beagleboardx15/readme.txt delete mode 100644 bsp/buildroot/board/beaglebone/linux-3.12.config create mode 100644 bsp/buildroot/board/beaglebone/linux-4.1-sgx.fragment create mode 100644 bsp/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch delete mode 100644 bsp/buildroot/board/beaglebone/patches/linux/linux-0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch delete mode 100644 bsp/buildroot/board/calao/qil-a9260/linux-3.4.7.config delete mode 100644 bsp/buildroot/board/calao/qil-a9260/patches/at91bootstrap/0001-qil-a9260.patch delete mode 100644 bsp/buildroot/board/calao/qil-a9260/patches/barebox/0001-qil-a9260.patch delete mode 100644 bsp/buildroot/board/calao/qil-a9260/patches/linux/0001-qil-a9260.patch delete mode 100644 bsp/buildroot/board/calao/tny-a9g20-lpw/at91bootstrap-1.16-tny-a9g20-lpw.patch delete mode 100644 bsp/buildroot/board/calao/tny-a9g20-lpw/linux-3.9.config delete mode 100644 bsp/buildroot/board/calao/usb-a9260/at91bootstrap-1.16-usb-a9260.patch delete mode 100644 bsp/buildroot/board/calao/usb-a9260/linux-3.7.4.config delete mode 100644 bsp/buildroot/board/calao/usb-a9263/at91bootstrap-1.16-usb-a9263.patch delete mode 100644 bsp/buildroot/board/calao/usb-a9263/linux-3.4.4.config delete mode 100644 bsp/buildroot/board/calao/usb-a9g20-lpw/linux-3.4.4.config delete mode 100644 bsp/buildroot/board/calao/usb-a9g20-lpw/patches/at91bootstrap/0001-usb-a9g20-lpw.patch delete mode 100644 bsp/buildroot/board/calao/usb-a9g20-lpw/patches/barebox/0001-usb-a9g20-lpw.patch delete mode 100644 bsp/buildroot/board/congatec/qmx6/readme.txt delete mode 100644 bsp/buildroot/board/cubietech/cubieboard/boot.cmd delete mode 100644 bsp/buildroot/board/cubietech/cubieboard/linux-cubieboard2.config delete mode 100755 bsp/buildroot/board/cubietech/cubieboard/mkcubiecard.sh delete mode 100755 bsp/buildroot/board/cubietech/cubieboard/post-build.sh delete mode 100644 bsp/buildroot/board/cubietech/cubieboard/readme.txt create mode 100644 bsp/buildroot/board/digilent/zybo/genimage.cfg rename bsp/buildroot/board/{olimex/imx233_olinuxino => digilent/zybo}/post-image.sh (53%) create mode 100644 bsp/buildroot/board/digilent/zybo/readme.txt rename bsp/buildroot/{support/dummy-external/Config.in => board/digilent/zybo/system.bit} (100%) create mode 100644 bsp/buildroot/board/digilent/zybo/uEnv.txt rename bsp/buildroot/board/freescale/{imx25pdk/genimage.cfg => common/imx/genimage.cfg.template} (58%) create mode 100755 bsp/buildroot/board/freescale/common/imx/post-image.sh create mode 100644 bsp/buildroot/board/freescale/common/mxs/genimage.cfg.template create mode 100755 bsp/buildroot/board/freescale/common/mxs/post-image.sh delete mode 100755 bsp/buildroot/board/freescale/create-boot-sd.sh create mode 100644 bsp/buildroot/board/freescale/imx23evk/readme.txt delete mode 100755 bsp/buildroot/board/freescale/imx28evk/create-boot-sd.sh create mode 100644 bsp/buildroot/board/freescale/imx31_3stack/linux.fragment delete mode 100644 bsp/buildroot/board/freescale/imx51evk/genimage.cfg delete mode 100644 bsp/buildroot/board/freescale/imx53loco/genimage.cfg delete mode 100755 bsp/buildroot/board/freescale/imx53loco/post-image.sh create mode 100644 bsp/buildroot/board/freescale/imx6q-sabresd/readme.txt delete mode 100755 bsp/buildroot/board/freescale/imx6ulevk/post-image.sh delete mode 100644 bsp/buildroot/board/freescale/imx7dsdb/genimage.cfg delete mode 100644 bsp/buildroot/board/freescale/p2020ds/linux-3.12.config delete mode 100644 bsp/buildroot/board/freescale/p2020ds/linux-fix-c6187597-breakage.patch delete mode 100644 bsp/buildroot/board/freescale/p2020ds/readme.txt delete mode 100644 bsp/buildroot/board/freescale/warpboard/genimage.cfg create mode 100644 bsp/buildroot/board/grinn/chiliboard/genimage.cfg create mode 100755 bsp/buildroot/board/grinn/chiliboard/post-image.sh create mode 100644 bsp/buildroot/board/grinn/chiliboard/readme.txt rename bsp/buildroot/board/{freescale/imx6ulevk => grinn/liteboard}/genimage.cfg (68%) create mode 100644 bsp/buildroot/board/grinn/liteboard/patches/linux/0001-ARM-dts-imx6ul-Add-DTS-for-liteSOM-module.patch create mode 100644 bsp/buildroot/board/grinn/liteboard/patches/linux/0002-ARM-dts-imx6ul-Add-DTS-for-liteBoard.patch create mode 100755 bsp/buildroot/board/grinn/liteboard/post-image.sh create mode 100644 bsp/buildroot/board/grinn/liteboard/readme.txt rename bsp/buildroot/board/intel/galileo/{linux-3.8.config => linux-3.14.config} (86%) create mode 100644 bsp/buildroot/board/lego/ev3/genimage.cfg create mode 100644 bsp/buildroot/board/lego/ev3/linux.fragment rename bsp/buildroot/board/{freescale/warpboard => lego/ev3}/post-image.sh (93%) rename bsp/buildroot/board/minnowboard/{linux-4.6.config => linux-4.8.config} (93%) create mode 100644 bsp/buildroot/board/nanopi-neo/boot.cmd create mode 100644 bsp/buildroot/board/nanopi-neo/genimage.cfg create mode 100755 bsp/buildroot/board/nanopi-neo/post-build.sh create mode 100755 bsp/buildroot/board/nanopi-neo/post-image.sh create mode 100644 bsp/buildroot/board/nanopi-neo/readme.txt delete mode 100644 bsp/buildroot/board/olimex/imx233_olinuxino/genimage-imx233_olinuxino.cfg delete mode 100644 bsp/buildroot/board/olimex/imx233_olinuxino/linux-3.18.config create mode 100644 bsp/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment create mode 100644 bsp/buildroot/board/orangepi/orangepi-one/boot.cmd create mode 100644 bsp/buildroot/board/orangepi/orangepi-one/genimage.cfg create mode 120000 bsp/buildroot/board/orangepi/orangepi-one/post-build.sh create mode 120000 bsp/buildroot/board/orangepi/orangepi-one/post-image.sh create mode 100644 bsp/buildroot/board/orangepi/orangepi-one/readme.txt rename bsp/buildroot/board/orangepi/{orangepipc => orangepi-pc}/boot.cmd (100%) rename bsp/buildroot/board/orangepi/{orangepipc => orangepi-pc}/genimage.cfg (100%) create mode 120000 bsp/buildroot/board/orangepi/orangepi-pc/post-build.sh create mode 120000 bsp/buildroot/board/orangepi/orangepi-pc/post-image.sh rename bsp/buildroot/board/orangepi/{orangepipc => orangepi-pc}/readme.txt (95%) rename bsp/buildroot/board/orangepi/{orangepipc => }/post-build.sh (78%) rename bsp/buildroot/board/orangepi/{orangepipc => }/post-image.sh (52%) rename bsp/buildroot/board/qemu/aarch64-virt/{linux-4.7.config => linux-4.9.config} (100%) create mode 100644 bsp/buildroot/board/qemu/arm-versatile/linux-4.4-nommu.config rename bsp/buildroot/board/qemu/arm-versatile/{linux-4.7.config => linux-4.9.config} (100%) create mode 100644 bsp/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch rename bsp/buildroot/board/qemu/m68k-mcf5208/{linux-4.7.config => linux-4.8.config} (100%) delete mode 100644 bsp/buildroot/board/qemu/m68k-mcf5208/patches/linux/m68knommu-fix-signal.patch rename bsp/buildroot/board/qemu/m68k-q800/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/microblazebe-mmu/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/microblazeel-mmu/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/mips32r2-malta/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/mips32r2el-malta/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/mips32r6-malta/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/mips32r6el-malta/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/mips64-malta/{linux-4.7.config => linux-4.8.config} (100%) rename bsp/buildroot/board/qemu/mips64el-malta/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/mips64r6-malta/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/mips64r6el-malta/{linux-4.7.config => linux-4.9.config} (100%) create mode 100644 bsp/buildroot/board/qemu/nios2-10m50/linux-4.9.fragment create mode 100644 bsp/buildroot/board/qemu/nios2-10m50/readme.txt create mode 100644 bsp/buildroot/board/qemu/or1k/linux-4.9.config create mode 100644 bsp/buildroot/board/qemu/or1k/patches/linux/0001-ld-or1k.patch create mode 100644 bsp/buildroot/board/qemu/or1k/patches/linux/0002-kallsyms.patch create mode 100644 bsp/buildroot/board/qemu/or1k/readme.txt rename bsp/buildroot/board/qemu/ppc-g3beige/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/ppc-mpc8544ds/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/ppc-virtex-ml507/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/sh4-r2d/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/sh4eb-r2d/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/sparc-ss10/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/sparc64-sun4u/{linux-4.7.config => linux-4.9.config} (100%) delete mode 120000 bsp/buildroot/board/qemu/x86/linux-4.7.config create mode 120000 bsp/buildroot/board/qemu/x86/linux-4.9.config rename bsp/buildroot/board/qemu/x86_64/{linux-4.7.config => linux-4.9.config} (100%) rename bsp/buildroot/board/qemu/xtensa-lx60/{linux-4.7-nommu.config => linux-4.8-nommu.config} (100%) rename bsp/buildroot/board/qemu/xtensa-lx60/{linux-4.7.config => linux-4.8.config} (100%) create mode 100644 bsp/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch create mode 100644 bsp/buildroot/board/roseapplepi/patches/linux/0003-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch create mode 100644 bsp/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch create mode 100644 bsp/buildroot/board/solidrun/mx6cubox/boot.scr.txt create mode 100644 bsp/buildroot/board/solidrun/mx6cubox/genimage.cfg create mode 100755 bsp/buildroot/board/solidrun/mx6cubox/post-build.sh rename bsp/buildroot/board/{freescale/imx25pdk => solidrun/mx6cubox}/post-image.sh (100%) create mode 100644 bsp/buildroot/board/solidrun/mx6cubox/readme.txt create mode 100644 bsp/buildroot/board/synopsys/vdk/patches/linux/0001-arc-vdk-Disable-halt-on-reset.patch create mode 100644 bsp/buildroot/board/synopsys/vdk/patches/linux/0002-arc-vdk-Add-support-of-MMC-controller.patch create mode 100644 bsp/buildroot/board/synopsys/vdk/patches/linux/0003-arc-vdk-Add-support-of-UIO.patch delete mode 100644 bsp/buildroot/board/technexion/imx6ulpico/genimage.cfg delete mode 100644 bsp/buildroot/board/technexion/imx6ulpico/patches/linux/0001-picowifi.patch delete mode 100755 bsp/buildroot/board/technexion/imx6ulpico/post-image.sh create mode 100644 bsp/buildroot/board/technologic/ts4900/genimage.cfg create mode 100755 bsp/buildroot/board/technologic/ts4900/post-image.sh create mode 100644 bsp/buildroot/board/technologic/ts4900/readme.txt create mode 100644 bsp/buildroot/board/udoo/mx6qdl/genimage.cfg create mode 100644 bsp/buildroot/board/udoo/mx6qdl/linux.fragment rename bsp/buildroot/board/{freescale/imx51evk => udoo/mx6qdl}/post-image.sh (100%) create mode 100644 bsp/buildroot/board/udoo/mx6qdl/readme.txt create mode 100644 bsp/buildroot/board/udoo/neo/boot.scr.txt create mode 100644 bsp/buildroot/board/udoo/neo/genimage.cfg create mode 100644 bsp/buildroot/board/udoo/neo/patches/linux/0001-udoo_neo_support.patch create mode 100755 bsp/buildroot/board/udoo/neo/post-build.sh rename bsp/buildroot/board/{freescale/imx7dsdb => udoo/neo}/post-image.sh (99%) create mode 100644 bsp/buildroot/board/udoo/neo/readme.txt create mode 100644 bsp/buildroot/board/wandboard/boot.scr.txt create mode 100755 bsp/buildroot/board/wandboard/post-build.sh delete mode 100644 bsp/buildroot/board/wandboard/uboot-env.txt create mode 100644 bsp/buildroot/board/warp7/linux.fragment create mode 100644 bsp/buildroot/board/warp7/readme.txt create mode 100644 bsp/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt create mode 100644 bsp/buildroot/boot/arm-trusted-firmware/Config.in create mode 100644 bsp/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash create mode 100644 bsp/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk create mode 100644 bsp/buildroot/boot/syslinux/0002-disable-pie.patch create mode 100644 bsp/buildroot/boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch create mode 100644 bsp/buildroot/boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch create mode 100644 bsp/buildroot/boot/vexpress-firmware/Config.in create mode 100644 bsp/buildroot/boot/vexpress-firmware/vexpress-firmware.hash create mode 100644 bsp/buildroot/boot/vexpress-firmware/vexpress-firmware.mk delete mode 100644 bsp/buildroot/configs/atmel_sama5d4ek_defconfig create mode 100644 bsp/buildroot/configs/beagleboardx15_defconfig create mode 100644 bsp/buildroot/configs/beaglebone_qt5_defconfig delete mode 100644 bsp/buildroot/configs/calao_qil_a9260_defconfig delete mode 100644 bsp/buildroot/configs/calao_tny_a9g20_lpw_defconfig delete mode 100644 bsp/buildroot/configs/calao_usb_a9260_defconfig delete mode 100644 bsp/buildroot/configs/calao_usb_a9263_defconfig delete mode 100644 bsp/buildroot/configs/calao_usb_a9g20_lpw_defconfig delete mode 100644 bsp/buildroot/configs/cubieboard_defconfig delete mode 100644 bsp/buildroot/configs/freescale_p2020ds_defconfig create mode 100644 bsp/buildroot/configs/grinn_chiliboard_defconfig create mode 100644 bsp/buildroot/configs/grinn_liteboard_defconfig create mode 100644 bsp/buildroot/configs/imx23evk_defconfig create mode 100644 bsp/buildroot/configs/imx6q-sabresd_defconfig delete mode 100644 bsp/buildroot/configs/kb9202_defconfig delete mode 100644 bsp/buildroot/configs/mini2440_defconfig create mode 100644 bsp/buildroot/configs/mx6cubox_defconfig create mode 100644 bsp/buildroot/configs/mx6sx_udoo_neo_defconfig create mode 100644 bsp/buildroot/configs/mx6udoo_defconfig create mode 100644 bsp/buildroot/configs/nanopi_neo_defconfig create mode 100644 bsp/buildroot/configs/orangepi_one_defconfig rename bsp/buildroot/configs/{orangepipc_defconfig => orangepi_pc_defconfig} (68%) create mode 100644 bsp/buildroot/configs/qemu_arm_versatile_nommu_defconfig create mode 100644 bsp/buildroot/configs/qemu_nios2_10m50_defconfig create mode 100644 bsp/buildroot/configs/qemu_or1k_defconfig delete mode 100644 bsp/buildroot/configs/qmx6_defconfig rename bsp/buildroot/configs/{snps_hs38_smp_vdk_defconfig => snps_archs38_vdk_defconfig} (61%) create mode 100644 bsp/buildroot/configs/snps_archs38_zebu_defconfig create mode 100644 bsp/buildroot/configs/ts4900_defconfig delete mode 100644 bsp/buildroot/configs/udoo_quad_defconfig create mode 100644 bsp/buildroot/configs/warp7_defconfig create mode 100644 bsp/buildroot/configs/zynq_zybo_defconfig create mode 100644 bsp/buildroot/docs/manual/adding-packages-waf.txt create mode 100644 bsp/buildroot/docs/manual/br2-external-converting.txt create mode 100644 bsp/buildroot/docs/manual/developers.txt create mode 100644 bsp/buildroot/linux/linux-ext-aufs.mk create mode 100644 bsp/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk create mode 100644 bsp/buildroot/package/acl/0002-add-__acl_-prefixes-to-internal-symbols.patch create mode 100644 bsp/buildroot/package/alsa-lib/0005-remove-powerpc64-workaround.patch create mode 100644 bsp/buildroot/package/alsa-lib/0006-ucm-parser-needs-limits.h.patch create mode 100644 bsp/buildroot/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch create mode 100644 bsp/buildroot/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch create mode 100644 bsp/buildroot/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch create mode 100644 bsp/buildroot/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch create mode 100644 bsp/buildroot/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch create mode 100644 bsp/buildroot/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch create mode 100644 bsp/buildroot/package/amd-catalyst/0007-remove-gpl-symbols.patch create mode 100644 bsp/buildroot/package/amd-catalyst/20-fglrx.conf create mode 100644 bsp/buildroot/package/amd-catalyst/Config.in create mode 100644 bsp/buildroot/package/amd-catalyst/amd-catalyst.hash create mode 100644 bsp/buildroot/package/amd-catalyst/amd-catalyst.mk create mode 100644 bsp/buildroot/package/amd-catalyst/gl.pc create mode 100644 bsp/buildroot/package/angular-websocket/Config.in create mode 100644 bsp/buildroot/package/angular-websocket/angular-websocket.hash create mode 100644 bsp/buildroot/package/angular-websocket/angular-websocket.mk create mode 100644 bsp/buildroot/package/atop/0001-remove-unused-include-of-termio.h.patch create mode 100644 bsp/buildroot/package/atop/Config.in create mode 100644 bsp/buildroot/package/atop/atop.hash create mode 100644 bsp/buildroot/package/atop/atop.mk create mode 100644 bsp/buildroot/package/aubio/Config.in create mode 100644 bsp/buildroot/package/aubio/aubio.hash create mode 100644 bsp/buildroot/package/aubio/aubio.mk create mode 100644 bsp/buildroot/package/aufs-util/0001-remove-user-settings.patch create mode 100644 bsp/buildroot/package/aufs-util/0002-no-check-ver.patch create mode 100644 bsp/buildroot/package/aufs-util/0003-no-strip-lib.patch create mode 100644 bsp/buildroot/package/aufs-util/Config.in create mode 100644 bsp/buildroot/package/aufs-util/aufs-util.mk create mode 100644 bsp/buildroot/package/aufs/Config.in create mode 100644 bsp/buildroot/package/aufs/aufs.mk create mode 100644 bsp/buildroot/package/autossh/0001-honour-LDFLAGS.patch delete mode 100644 bsp/buildroot/package/bash/0031-patchlevel-31.patch delete mode 100644 bsp/buildroot/package/bash/0032-patchlevel-32.patch delete mode 100644 bsp/buildroot/package/bash/0033-patchlevel-33.patch delete mode 100644 bsp/buildroot/package/bash/0034-patchlevel-34.patch delete mode 100644 bsp/buildroot/package/bash/0035-patchlevel-35.patch delete mode 100644 bsp/buildroot/package/bash/0036-patchlevel-36.patch delete mode 100644 bsp/buildroot/package/bash/0037-patchlevel-37.patch delete mode 100644 bsp/buildroot/package/bash/0038-patchlevel-38.patch delete mode 100644 bsp/buildroot/package/bash/0039-patchlevel-39.patch delete mode 100644 bsp/buildroot/package/bash/0040-patchlevel-40.patch delete mode 100644 bsp/buildroot/package/bash/0041-patchlevel-41.patch delete mode 100644 bsp/buildroot/package/bash/0042-patchlevel-42.patch delete mode 100644 bsp/buildroot/package/bash/0043-patchlevel-43.patch delete mode 100644 bsp/buildroot/package/bash/0044-patchlevel-44.patch delete mode 100644 bsp/buildroot/package/bash/0045-patchlevel-45.patch delete mode 100644 bsp/buildroot/package/bash/0046-patchlevel-46.patch create mode 100644 bsp/buildroot/package/bash/bash44-001.patch create mode 100644 bsp/buildroot/package/bash/bash44-002.patch create mode 100644 bsp/buildroot/package/bash/bash44-003.patch create mode 100644 bsp/buildroot/package/bash/bash44-004.patch create mode 100644 bsp/buildroot/package/bash/bash44-005.patch create mode 100644 bsp/buildroot/package/bash/bash44-006.patch create mode 100644 bsp/buildroot/package/bash/bash44-007.patch create mode 100644 bsp/buildroot/package/bash/bash44-008.patch create mode 100644 bsp/buildroot/package/bash/bash44-009.patch create mode 100644 bsp/buildroot/package/bash/bash44-010.patch create mode 100644 bsp/buildroot/package/bash/bash44-011.patch create mode 100644 bsp/buildroot/package/bash/bash44-012.patch create mode 100644 bsp/buildroot/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch create mode 100644 bsp/buildroot/package/bctoolbox/Config.in create mode 100644 bsp/buildroot/package/bctoolbox/bctoolbox.hash create mode 100644 bsp/buildroot/package/bctoolbox/bctoolbox.mk create mode 100644 bsp/buildroot/package/bellagio/0005-fix-doc-installation-path.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/001-fix-enable-install-libiberty-flag.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/002-dont-segv-on-initial-instructions-overflow.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/120-sh-conf.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/300-001_ld_makefile_patch.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/300-012_check_ldrunpath_length.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/900-xtensa-trampolines.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/901-xtensa-gas-first-frag-alignment.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/902-xtensa-gas-ld-diff-relocation-signed.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/903-xtensa-fix-ld-segfault-when-linking-linux-modules.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/904-Fix-call8-call-target-out-of-range-xtensa-ld-relaxation.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/905-Fix-trampolines-search-code-for-conditional-branches.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/906-xtensa-optimize-check_section_ebb_pcrels_fit.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/907-xtensa-optimize-removed_by_actions.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/908-xtensa-optimize-find_removed_literal.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/909-xtensa-replace-action-list-with-splay-tree.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/910-xtensa-optimize-trampolines-relaxation.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/911-xtensa-fix-localized-symbol-refcounting-with-gc-sect.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/912-xtensa-fix-gas-segfault-with-text-section-literals.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/913-xtensa-add-auto-litpools-option.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/914-xtensa-fix-signedness-of-gas-relocations.patch delete mode 100644 bsp/buildroot/package/binutils/2.24/915-xtensa-fix-.init-.fini-literals-moving.patch create mode 100644 bsp/buildroot/package/binutils/2.25.1/800-microblaze-musl.patch create mode 100644 bsp/buildroot/package/binutils/2.25.1/916-microblaze-pr21180.patch create mode 100644 bsp/buildroot/package/binutils/2.26.1/0800-microblaze-musl.patch create mode 100644 bsp/buildroot/package/binutils/2.26.1/0906-microblaze-pr21180.patch create mode 100644 bsp/buildroot/package/binutils/2.27/0100-elf32-arm-no-data-fix.patch create mode 100644 bsp/buildroot/package/binutils/2.27/0120-sh-conf.patch create mode 100644 bsp/buildroot/package/binutils/2.27/0130-tc-xtensa.c-fixup-xg_reverse_shift_count-typo.patch rename bsp/buildroot/package/binutils/{arc-2016.09-eng010 => 2.27}/0300-ld-makefile.patch (100%) rename bsp/buildroot/package/binutils/{arc-2016.09-eng010 => 2.27}/0301-check-ldrunpath-length.patch (100%) rename bsp/buildroot/package/binutils/{arc-2016.09-eng010 => 2.27}/0500-add-sysroot-fix-from-bug-3049.patch (100%) rename bsp/buildroot/package/binutils/{arc-2016.09-eng010 => 2.27}/0600-poison-system-directories.patch (100%) create mode 100644 bsp/buildroot/package/binutils/2.27/0900-Revert-part-Set-dynamic-tag-VMA-and-size-from-dynami.patch create mode 100644 bsp/buildroot/package/binutils/2.27/0905-bfin-rofixup-bug.patch create mode 100644 bsp/buildroot/package/binutils/2.27/0906-microblaze-pr21180.patch create mode 100644 bsp/buildroot/package/binutils/arc-2016.09-release/0300-ld-makefile.patch create mode 100644 bsp/buildroot/package/binutils/arc-2016.09-release/0301-check-ldrunpath-length.patch rename bsp/buildroot/package/binutils/{2.24/500-sysroot.patch => arc-2016.09-release/0500-add-sysroot-fix-from-bug-3049.patch} (69%) rename bsp/buildroot/package/binutils/{2.24/600-poison-system-directories.patch => arc-2016.09-release/0600-poison-system-directories.patch} (70%) create mode 100644 bsp/buildroot/package/blktrace/0001-iowatcher-link-with-lrt.patch delete mode 100644 bsp/buildroot/package/bridge-utils/0002-fix-for-kernel-headers-3.8+.patch delete mode 100644 bsp/buildroot/package/bridge-utils/0003-sysfs-write-fixes.patch rename bsp/buildroot/package/btrfs-progs/{0004-Makefile.in-install-static-library-and-headers-in-in.patch => 0001-Makefile.in-install-static-library-and-headers-in-in.patch} (76%) delete mode 100644 bsp/buildroot/package/btrfs-progs/0001-configure-refactor-backtrace-detection.patch delete mode 100644 bsp/buildroot/package/btrfs-progs/0002-configure-refactor-always_inline-detection.patch create mode 100644 bsp/buildroot/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch delete mode 100644 bsp/buildroot/package/btrfs-progs/0003-compile-fix-undefined-PATH_MAX-under-musl.patch delete mode 100644 bsp/buildroot/package/busybox/0003-gzip.patch delete mode 100644 bsp/buildroot/package/busybox/0004-ip.patch delete mode 100644 bsp/buildroot/package/busybox/0005-ntpd.patch delete mode 100644 bsp/buildroot/package/busybox/0006-top-move-free-prev_hist-out-of-signal-path.patch create mode 100644 bsp/buildroot/package/cannelloni/0001-Add-missing-cstdio-include.patch create mode 100644 bsp/buildroot/package/cbootimage/0001-bct_dump-don-t-crash-on-devices-without-RSA-support.patch create mode 100644 bsp/buildroot/package/cbootimage/Config.in create mode 100644 bsp/buildroot/package/ccache/0001-Convert-argument-to-sysroot-option-to-relative-path.patch create mode 100644 bsp/buildroot/package/cjson/cjson.hash delete mode 100644 bsp/buildroot/package/conntrack-tools/0001-src-fix-build-with-musl-libc.patch create mode 100644 bsp/buildroot/package/cryptopp/0001-Fix-possible-DoS-in-ASN.1-decoders-CVE-2016-9939.patch create mode 100644 bsp/buildroot/package/czmq/0001-configure.ac-remove-Werror.patch create mode 100644 bsp/buildroot/package/darkhttpd/Config.in create mode 100755 bsp/buildroot/package/darkhttpd/S50darkhttpd create mode 100644 bsp/buildroot/package/darkhttpd/darkhttpd.hash create mode 100644 bsp/buildroot/package/darkhttpd/darkhttpd.mk create mode 100644 bsp/buildroot/package/darkhttpd/darkhttpd.service create mode 100644 bsp/buildroot/package/ddrescue/0001-io.cc-add-stdio.h-include.patch create mode 100644 bsp/buildroot/package/ddrescue/Config.in create mode 100644 bsp/buildroot/package/ddrescue/ddrescue.hash create mode 100644 bsp/buildroot/package/ddrescue/ddrescue.mk delete mode 100644 bsp/buildroot/package/dhcp/0001-dhcp-cross-compile.patch delete mode 100644 bsp/buildroot/package/dhcp/0003-bind-host-cc.patch create mode 100644 bsp/buildroot/package/directfb/0006-fix-client-gfx_state-initialisation.patch delete mode 100644 bsp/buildroot/package/domoticz/0001-add-proper-check-for-detecting-header-execinfo.h.patch create mode 100644 bsp/buildroot/package/dosfstools/0002-src-device_info.c-Fix-undefined-PATH_MAX-under-musl.patch create mode 100644 bsp/buildroot/package/e2fsprogs/0002-MCONFIG.in-handle-CLOCK_GETTIME_LIB.patch delete mode 100644 bsp/buildroot/package/e2fsprogs/0002-fuse2fs-might-need-librt.patch delete mode 100644 bsp/buildroot/package/e2fsprogs/0003-fuse2fs-needs-SYSLIBS.patch create mode 100644 bsp/buildroot/package/easydbus/Config.in create mode 100644 bsp/buildroot/package/easydbus/easydbus.hash create mode 100644 bsp/buildroot/package/easydbus/easydbus.mk create mode 100644 bsp/buildroot/package/efibootmgr/0001-Allow-build-with-uClibc.patch create mode 100644 bsp/buildroot/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch delete mode 100644 bsp/buildroot/package/efivar/0001-Workaround-rename-of-linux-nvme.h.patch create mode 100644 bsp/buildroot/package/efivar/0002-Allow-build-with-uClibc.patch delete mode 100644 bsp/buildroot/package/efivar/0002-Make.rules-fix-build-with-make-3.81.patch delete mode 100644 bsp/buildroot/package/elementary/0001-lib-remove-.eo.h-files-from-includesub_HEADERS.patch delete mode 100644 bsp/buildroot/package/elementary/Config.in delete mode 100644 bsp/buildroot/package/elementary/elementary.hash delete mode 100644 bsp/buildroot/package/elementary/elementary.mk delete mode 100644 bsp/buildroot/package/enlightenment/0001-E-include-uuid.h-only-when-Wayland-support-is-enable.patch create mode 100644 bsp/buildroot/package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch create mode 100644 bsp/buildroot/package/eudev/0002-missing-defines-for-old-kernels.patch delete mode 100644 bsp/buildroot/package/eudev/0002-src-shared-missing.h-fix-getrandom-system-call-numbe.patch create mode 100644 bsp/buildroot/package/ev3dev-linux-drivers/Config.in create mode 100644 bsp/buildroot/package/ev3dev-linux-drivers/ev3dev-linux-drivers.mk create mode 100644 bsp/buildroot/package/ev3dev-linux-drivers/lego-linux-drivers.hash create mode 100644 bsp/buildroot/package/expedite/expedite.hash create mode 100755 bsp/buildroot/package/fakedate/fakedate create mode 100644 bsp/buildroot/package/fakedate/fakedate.mk create mode 100644 bsp/buildroot/package/fakeroot/0001-hide-dlsym-error.patch create mode 100644 bsp/buildroot/package/fbterm/0004-iconv.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0001-Support-raw-dvdsub-palette-as-stored-on-normal-dvd-s.patch rename bsp/buildroot/package/ffmpeg/{0013-bfin-disable-optimization.patch => 0001-bfin-disable-optimization.patch} (100%) delete mode 100644 bsp/buildroot/package/ffmpeg/0003-if-av_read_packet-returns-AVERROR_IO-we-are-done.-ff.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0004-added-Ticket-7187-TV-Teletext-support-for-DVB-EBU-Te.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0005-Don-t-accept-mpegts-PMT-that-isn-t-current.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0006-Don-t-reparse-PMT-unless-it-s-version-has-changed.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0007-Read-PID-timestamps-as-well-as-PCR-timestamps-to-fin.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0008-Get-stream-durations-using-read_timestamp.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0009-changed-allow-4-second-skew-between-streams-in-mov-b.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0010-fixed-memleak-in-mpegts-demuxer-on-some-malformed-mp.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0011-Speed-up-mpegts-av_find_stream_info.patch delete mode 100644 bsp/buildroot/package/ffmpeg/0012-dxva-h264-Fix-dxva-playback-of-streams-that-don-t-st.patch delete mode 100644 bsp/buildroot/package/flac/0001-configure-don-t-try-to-unset-g-from-CFLAGS.patch create mode 100644 bsp/buildroot/package/flac/0001-configure.ac-relax-linux-OS-detection.patch delete mode 100644 bsp/buildroot/package/flac/0002-sigemptyset.patch create mode 100644 bsp/buildroot/package/fwts/0001-build-do-not-use-Werror.patch create mode 100644 bsp/buildroot/package/fwts/Config.in create mode 100644 bsp/buildroot/package/fwts/fwts.hash create mode 100644 bsp/buildroot/package/fwts/fwts.mk delete mode 100644 bsp/buildroot/package/gcc/4.7.4/1000-powerpc-link-with-math-lib.patch.conditional delete mode 100644 bsp/buildroot/package/gcc/4.7.4/111-pr65730.patch delete mode 100644 bsp/buildroot/package/gcc/4.7.4/130-pr43538.patch delete mode 100644 bsp/buildroot/package/gcc/4.7.4/305-libmudflap-susv3-legacy.patch delete mode 100644 bsp/buildroot/package/gcc/4.7.4/810-arm-softfloat-libgcc.patch delete mode 100644 bsp/buildroot/package/gcc/4.7.4/830-arm_unbreak_armv4t.patch delete mode 100644 bsp/buildroot/package/gcc/4.7.4/843-gcc-4.7.3-Fix-PR-target-58595.patch delete mode 100644 bsp/buildroot/package/gcc/4.7.4/844-gcc-fix-build-with-gcc5.patch delete mode 100644 bsp/buildroot/package/gcc/4.7.4/851-PR-other-56780.patch delete mode 100644 bsp/buildroot/package/gcc/4.7.4/900-musl-support.patch create mode 100644 bsp/buildroot/package/gcc/4.8.5/0001-ARM-PR-target-68059-libgcc-should-not-use-__write-fo.patch create mode 100644 bsp/buildroot/package/gcc/4.9.4/0001-ARM-PR-target-68059-libgcc-should-not-use-__write-fo.patch create mode 100644 bsp/buildroot/package/gcc/5.4.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch create mode 100644 bsp/buildroot/package/gcc/5.4.0/875-xtensa-implement-trap-pattern.patch create mode 100644 bsp/buildroot/package/gcc/5.4.0/876-xtensa-Fix-PR-target-78603.patch create mode 100644 bsp/buildroot/package/gcc/5.4.0/880-gcc-nios2-Add-IJMP_REGS-enum.patch delete mode 100644 bsp/buildroot/package/gcc/5.4.0/892-microblaze-uclibc.patch create mode 100644 bsp/buildroot/package/gcc/5.4.0/910-microblaze-musl-and-uclibc.patch create mode 100644 bsp/buildroot/package/gcc/5.4.0/911-ppc-musl-support.patch create mode 100644 bsp/buildroot/package/gcc/5.4.0/941-mips-Add-support-for-mips-r6-musl.patch rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/100-uclibc-conf.patch (100%) rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/301-missing-execinfo_h.patch (100%) rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/810-arm-softfloat-libgcc.patch (100%) rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/830-arm_unbreak_armv4t.patch (100%) create mode 100644 bsp/buildroot/package/gcc/6.3.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/860-cilk-wchar.patch (100%) create mode 100644 bsp/buildroot/package/gcc/6.3.0/870-xtensa-Fix-PR-target-78118.patch create mode 100644 bsp/buildroot/package/gcc/6.3.0/871-xtensa-Fix-PR-target-78603.patch rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/890-fix-m68k-compile.patch (100%) rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/891-fix-m68k-uclinux.patch (100%) rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/892-libgcc-mkmap-symver-support-skip_underscore.patch (83%) rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch (98%) rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch (82%) create mode 100644 bsp/buildroot/package/gcc/6.3.0/895-bfin-define-REENTRANT.patch rename bsp/buildroot/package/gcc/{6.1.0 => 6.3.0}/940-uclinux-enable-threads.patch (100%) create mode 100644 bsp/buildroot/package/gcc/6.3.0/941-mips-Add-support-for-mips-r6-musl.patch rename bsp/buildroot/package/gcc/{arc-2016.09-eng010 => arc-2016.09-release}/301-missing-execinfo_h.patch (100%) rename bsp/buildroot/package/gcc/{arc-2016.09-eng010 => arc-2016.09-release}/860-cilk-wchar.patch (100%) rename bsp/buildroot/package/gcc/{arc-2016.09-eng010 => arc-2016.09-release}/940-uclinux-enable-threads.patch (100%) rename bsp/buildroot/package/gcc/{4.7.4 => musl-5.4.0}/100-uclibc-conf.patch (66%) rename bsp/buildroot/package/gcc/{4.7.4 => musl-5.4.0}/301-missing-execinfo_h.patch (53%) rename bsp/buildroot/package/gcc/{4.7.4 => musl-5.4.0}/850-libstdcxx-uclibc-c99.patch (91%) create mode 100644 bsp/buildroot/package/gcc/musl-5.4.0/860-cilk-wchar.patch create mode 100644 bsp/buildroot/package/gcc/musl-5.4.0/930-libgcc-disable-split-stack-nothreads.patch delete mode 100644 bsp/buildroot/package/gdb/7.11.1/0001-Revert-sim-unify-SIM_CPU-definition.patch create mode 100644 bsp/buildroot/package/gdb/7.11.1/0001-sim-bfin-split-out-common-mach-model-defines-into-ar.patch delete mode 100644 bsp/buildroot/package/gdb/7.9.1/0001-gdbserver-fix-uClibc-whithout-MMU.patch delete mode 100644 bsp/buildroot/package/gdb/7.9.1/0002-gdbserver-xtensa-drop-xtensa_usrregs_info.patch delete mode 100644 bsp/buildroot/package/gdb/7.9.1/0003-gdbserver-xtensa-fix-typo-in-XCHAL_HAVE_LOOPS.patch delete mode 100644 bsp/buildroot/package/gdb/7.9.1/0004-xtensa-implement-NPTL-helpers.patch delete mode 100644 bsp/buildroot/package/gdb/7.9.1/0005-Add-some-casts-for-building-on-musl.patch delete mode 100644 bsp/buildroot/package/gdb/7.9.1/0006-musl-Move-W_STOPCODE-to-common-gdb_wait-h.patch delete mode 100644 bsp/buildroot/package/gdb/7.9.1/0007-move-__SIGRTMIN.patch create mode 100644 bsp/buildroot/package/gengetopt/0001-fix-compilation-warnings-in-generated-code.patch create mode 100644 bsp/buildroot/package/git-crypt/Config.in create mode 100644 bsp/buildroot/package/git-crypt/git-crypt.hash create mode 100644 bsp/buildroot/package/git-crypt/git-crypt.mk create mode 100644 bsp/buildroot/package/glibc/2.22/0004-MIPS-SPARC-fix-wrong-vfork-aliases-in-libpthread.so.patch create mode 100644 bsp/buildroot/package/glibc/2.22/0005-MIPS-SPARC-more-fixes-to-the-vfork-aliases-in-libpth.patch create mode 100644 bsp/buildroot/package/glibc/2.23/0003-MIPS-SPARC-fix-wrong-vfork-aliases-in-libpthread.so.patch create mode 100644 bsp/buildroot/package/glibc/2.23/0004-MIPS-SPARC-more-fixes-to-the-vfork-aliases-in-libpth.patch create mode 100644 bsp/buildroot/package/google-breakpad/google-breakpad.hash delete mode 100644 bsp/buildroot/package/gstreamer1/gst1-imx/0001-v4l2src-Add-V4L2_PIX_FMT_XRGB555X-check.patch create mode 100644 bsp/buildroot/package/gstreamer1/gst1-rtsp-server/Config.in create mode 100644 bsp/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash create mode 100644 bsp/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk create mode 100644 bsp/buildroot/package/gstreamer1/gstreamer1/0001-gstconfig.h.in-Fix-unaligned-access-support-for-the-.patch delete mode 100644 bsp/buildroot/package/guile/0003-remove_unused_funcs.patch rename bsp/buildroot/package/guile/{0004-workaround-ice-ssa-corruption.patch => 0003-workaround-ice-ssa-corruption.patch} (100%) delete mode 100644 bsp/buildroot/package/heimdal/0001-vendor.patch delete mode 100644 bsp/buildroot/package/heimdal/0002-kadm5-fix-race-in-Makefile-with-kadm5_err.h.patch create mode 100644 bsp/buildroot/package/hiredis/Config.in create mode 100644 bsp/buildroot/package/hiredis/hiredis.hash create mode 100644 bsp/buildroot/package/hiredis/hiredis.mk delete mode 100644 bsp/buildroot/package/hostapd/0001-EAP-pwd-peer-Fix-last-fragment-length-validation.patch delete mode 100644 bsp/buildroot/package/hostapd/0002-EAP-pwd-server-Fix-last-fragment-length-validation.patch delete mode 100644 bsp/buildroot/package/hostapd/0003-vlan-fix-musl-build-error.patch delete mode 100644 bsp/buildroot/package/hostapd/0004-vlan-fix-musl-libc-conflict-with-Linux-kernel-header.patch delete mode 100644 bsp/buildroot/package/hostapd/0005-WPS-Reject-a-Credential-with-invalid-passphrase.patch create mode 100644 bsp/buildroot/package/ifenslave/Config.in create mode 100644 bsp/buildroot/package/ifenslave/ifenslave.hash create mode 100644 bsp/buildroot/package/ifenslave/ifenslave.mk create mode 100644 bsp/buildroot/package/imagemagick/0001-png.c-unbreak-build-without-JPEG-support.patch delete mode 100644 bsp/buildroot/package/intltool/Config.in delete mode 100644 bsp/buildroot/package/ipkg/0001-fix-musl-build.patch delete mode 100644 bsp/buildroot/package/ipkg/0002-fix-nommu.patch delete mode 100644 bsp/buildroot/package/ipkg/Config.in delete mode 100755 bsp/buildroot/package/ipkg/ipkg-build delete mode 100644 bsp/buildroot/package/ipkg/ipkg.hash delete mode 100644 bsp/buildroot/package/ipkg/ipkg.mk rename bsp/buildroot/package/ipmitool/{0004-Fix-missing-stddef.h-include.patch => 0001-Fix-missing-stddef.h-include.patch} (57%) delete mode 100644 bsp/buildroot/package/ipmitool/0001-Make-the-package-autoreconfigurable.patch delete mode 100644 bsp/buildroot/package/ipmitool/0002-Avoid-wchar_t-redefinition.patch delete mode 100644 bsp/buildroot/package/ipmitool/0003-Add-missing-linux-param.h-header-include.patch create mode 100644 bsp/buildroot/package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch delete mode 100644 bsp/buildroot/package/iproute2/0001-Avoid-in6_addr-redefinition.patch delete mode 100644 bsp/buildroot/package/iproute2/0003-iproute2-tc_bpf.c-fix-building-with-musl-libc..patch create mode 100644 bsp/buildroot/package/iproute2/0003-tc-add-missing-limits.h-header.patch delete mode 100644 bsp/buildroot/package/iproute2/0004-iproute-no-iptables.patch delete mode 100644 bsp/buildroot/package/iptables/0001-fix-build-with-musl.patch delete mode 100644 bsp/buildroot/package/iptables/0002-iptables-add-xtables-config-parser.h-to-BUILT_SOURCES.patch delete mode 100644 bsp/buildroot/package/iptables/0003-extensions-added-AR-substitution.patch delete mode 100644 bsp/buildroot/package/jack2/0001-Add-support-for-nios2.patch create mode 100644 bsp/buildroot/package/jack2/0001-Improve-check-for-ucontext.patch rename bsp/buildroot/package/jamvm/{0001-Use-fenv.h-instead-of-fpu_control.h.patch => 0001-Use-fenv.h-when-available-instead-of-fpu_control.h.patch} (50%) create mode 100644 bsp/buildroot/package/jasper/0001-Disable-C-compiler-check.patch delete mode 100644 bsp/buildroot/package/jasper/0001-fix-CVE-2014-9029.patch delete mode 100644 bsp/buildroot/package/jasper/0002-fix-CVE-2014-8138.patch delete mode 100644 bsp/buildroot/package/jasper/0003-fix-CVE-2014-8137-1.patch delete mode 100644 bsp/buildroot/package/jasper/0004-fix-CVE-2014-8137-2.patch delete mode 100644 bsp/buildroot/package/jasper/0005-fix-CVE-2014-8157.patch delete mode 100644 bsp/buildroot/package/jasper/0006-fix-CVE-2014-8158.patch delete mode 100644 bsp/buildroot/package/jasper/0007-preserve-cflags.patch delete mode 100644 bsp/buildroot/package/jasper/0008-fix-CVE-2016-2116.patch delete mode 100644 bsp/buildroot/package/jasper/0009-fix-CVE-2016-1577.patch delete mode 100644 bsp/buildroot/package/jasper/0010-fix-CVE-2016-1867.patch delete mode 100644 bsp/buildroot/package/jasper/0011-fix-CVE-2015-5221.patch delete mode 100644 bsp/buildroot/package/jasper/0012-fix-CVE-2015-5203.patch create mode 100644 bsp/buildroot/package/jsmn/Config.in create mode 100644 bsp/buildroot/package/jsmn/jsmn.hash create mode 100644 bsp/buildroot/package/jsmn/jsmn.mk delete mode 100644 bsp/buildroot/package/jsoncpp/0001-CMakeLists.txt-Treat-conversion-warning-as-error-onl.patch delete mode 100644 bsp/buildroot/package/kodi-addon-xvdr/0001-xbmc-rebrand.patch delete mode 100644 bsp/buildroot/package/kodi-addon-xvdr/Config.in delete mode 100644 bsp/buildroot/package/kodi-addon-xvdr/kodi-addon-xvdr.hash delete mode 100644 bsp/buildroot/package/kodi-addon-xvdr/kodi-addon-xvdr.mk create mode 100644 bsp/buildroot/package/kodi/0011-xbmc_pvr_types.h-Fix-compilation-with-gcc6.patch create mode 100644 bsp/buildroot/package/kodi/0012-Fix_includes_in_amcodec.patch create mode 100644 bsp/buildroot/package/kvm-unit-tests/0001-remove-werror.patch create mode 100644 bsp/buildroot/package/kvm-unit-tests/Config.in create mode 100644 bsp/buildroot/package/kvm-unit-tests/kvm-unit-tests.mk create mode 100644 bsp/buildroot/package/lcms2/0001-Fix-lcms2.pc.in-thread-library-dependency.patch create mode 100644 bsp/buildroot/package/lcms2/0002-Added-an-extra-check-to-MLU-bounds.patch create mode 100644 bsp/buildroot/package/lftp/0002-fix-gcc-6-conflicts-signbit.patch delete mode 100644 bsp/buildroot/package/libamcodec/0001-Include-stdint.h-where-needed.patch create mode 100644 bsp/buildroot/package/libasplib/0001-asplib_CPUTimer.h-Fix-time.h-include.patch delete mode 100644 bsp/buildroot/package/libcap-ng/0001-add-missing-include.patch create mode 100644 bsp/buildroot/package/libdvbcsa/0001-altivec-powerpc64.patch delete mode 100644 bsp/buildroot/package/libevas-generic-loaders/Config.in delete mode 100644 bsp/buildroot/package/libevas-generic-loaders/libevas-generic-loaders.hash delete mode 100644 bsp/buildroot/package/libevas-generic-loaders/libevas-generic-loaders.mk delete mode 100644 bsp/buildroot/package/libfastjson/0001-fix-missing-config.h.patch rename bsp/buildroot/package/libfastjson/{0002-m4-fix-detection-of-atomics.patch => 0001-m4-fix-detection-of-atomics.patch} (100%) delete mode 100644 bsp/buildroot/package/libgail/0001-Relax-X11-dependencies.patch delete mode 100644 bsp/buildroot/package/libgail/Config.in delete mode 100644 bsp/buildroot/package/libgail/libgail.hash delete mode 100644 bsp/buildroot/package/libgail/libgail.mk create mode 100644 bsp/buildroot/package/libglib2/0003-gio-2.0.pc-include-libmount-in-Libs.private.patch create mode 100644 bsp/buildroot/package/libglob/Config.in create mode 100644 bsp/buildroot/package/libglob/libglob.hash create mode 100644 bsp/buildroot/package/libglob/libglob.mk create mode 100644 bsp/buildroot/package/libgpiod/Config.in create mode 100644 bsp/buildroot/package/libgpiod/libgpiod.hash create mode 100644 bsp/buildroot/package/libgpiod/libgpiod.mk create mode 100644 bsp/buildroot/package/libgsm/0001-misc.patch create mode 100644 bsp/buildroot/package/libgsm/Config.in create mode 100644 bsp/buildroot/package/libgsm/libgsm.hash create mode 100644 bsp/buildroot/package/libgsm/libgsm.mk delete mode 100644 bsp/buildroot/package/libiio/0001-lock.c-Don-t-include-pthread.h-if-NO_THREADS-is-defi.patch create mode 100644 bsp/buildroot/package/libiio/0001-utilities.c-Add-a-check-for-newlocale-function.patch delete mode 100644 bsp/buildroot/package/libiio/0002-CMake-Link-with-librt-if-found.patch create mode 100644 bsp/buildroot/package/libiscsi/0001-Do-not-use-I-usr-include.-This-is-unsafe-when-cross-compiling.patch create mode 100644 bsp/buildroot/package/libite/Config.in create mode 100644 bsp/buildroot/package/libite/libite.hash create mode 100644 bsp/buildroot/package/libite/libite.mk delete mode 100644 bsp/buildroot/package/libmnl/0001-uclinux.patch create mode 100644 bsp/buildroot/package/libmpeg2/0003-fix-arm-detection.patch create mode 100644 bsp/buildroot/package/libnet/0001-support-musl-libc.patch delete mode 100644 bsp/buildroot/package/libnetfilter_acct/0001-uclinux.patch create mode 100644 bsp/buildroot/package/libnice/0001-configure-Fix-configure-failure-when-building-without-.patch create mode 100644 bsp/buildroot/package/libnss/0003-it-uninitialized-fix.patch delete mode 100644 bsp/buildroot/package/libpcap/0001-remove-libnl-include-path.patch delete mode 100644 bsp/buildroot/package/libpcap/0002-configure.in-fix-detect-of-if_bonding.h-on-uclinux.patch delete mode 100644 bsp/buildroot/package/libpjsip/0001-Use-mutex-types-compatible-with-musl-fixes-musl-buil.patch delete mode 100644 bsp/buildroot/package/libpjsip/0002-Replace-__sched_priority-with-sched_priority-fixes-m.patch create mode 100644 bsp/buildroot/package/libplatform/0001-p8-platform-config-fix-lookup-paths.patch delete mode 100644 bsp/buildroot/package/libplatform/0001-platform-config.cmake-fix-paths-for-cross-compilatio.patch create mode 100644 bsp/buildroot/package/libselinux/0001-libselinux-src-regex.c-support-old-compilers-for-the.patch delete mode 100644 bsp/buildroot/package/libsepol/0003-add-stdarg-include.patch rename bsp/buildroot/package/libsepol/{0004-revert-ln-relative.patch => 0003-revert-ln-relative.patch} (100%) create mode 100644 bsp/buildroot/package/libtasn1/0001-configure-don-t-add-Werror-to-build-flags.patch rename bsp/buildroot/package/{libubox_ => libubox}/Config.in (100%) rename bsp/buildroot/package/{libubox_ => libubox}/libubox.mk (84%) delete mode 100644 bsp/buildroot/package/liburcu/0002-support-aarch64.patch create mode 100644 bsp/buildroot/package/libusb/0001-parallel-make.patch create mode 100644 bsp/buildroot/package/libv4l/0002-ir-ctl-fixes-for-musl-compile.patch create mode 100644 bsp/buildroot/package/libxml2/0001-Fix-XPointer-paths-beginning-with-range-to.patch create mode 100644 bsp/buildroot/package/libxml2/0002-Disallow-namespace-nodes-in-XPointer-ranges.patch rename bsp/buildroot/package/libxmlrpc/{0005-config.mk.in-fix-shared-libraries-build-for-uClibc.patch => 0002-config.mk.in-fix-shared-libraries-build-for-uClibc.patch} (100%) delete mode 100644 bsp/buildroot/package/libxmlrpc/0002-fix-non-cplusplus-build.patch create mode 100644 bsp/buildroot/package/libxmlrpc/0003-fix-ar-ranlib-handling.patch delete mode 100644 bsp/buildroot/package/libxmlrpc/0003-non-wchar-build.patch delete mode 100644 bsp/buildroot/package/libxmlrpc/0006-narrowing.patch create mode 100644 bsp/buildroot/package/libxslt/0001-Fix-heap-overread-in-xsltFormatNumberConversion.patch create mode 100644 bsp/buildroot/package/linux-firmware/linux-firmware.hash delete mode 100644 bsp/buildroot/package/linux-pam/0003-Conditionally-compile-per-innetgr-availability.patch create mode 100644 bsp/buildroot/package/linux-syscall-support/Config.in create mode 100644 bsp/buildroot/package/linux-syscall-support/linux-syscall-support.hash create mode 100644 bsp/buildroot/package/linux-syscall-support/linux-syscall-support.mk rename bsp/buildroot/{linux/Config.tools.in => package/linux-tools/Config.in} (65%) rename bsp/buildroot/{linux => package/linux-tools}/linux-tool-cpupower.mk (79%) create mode 100644 bsp/buildroot/package/linux-tools/linux-tool-gpio.mk create mode 100644 bsp/buildroot/package/linux-tools/linux-tool-iio.mk rename bsp/buildroot/{linux => package/linux-tools}/linux-tool-perf.mk (84%) rename bsp/buildroot/{linux => package/linux-tools}/linux-tool-selftests.mk (65%) create mode 100644 bsp/buildroot/package/linux-tools/linux-tools.mk delete mode 100644 bsp/buildroot/package/lirc-tools/0001-lib-use-proper-linking-method-to-avoid-parallel-buil.patch rename bsp/buildroot/package/lirc-tools/{0002-tools-make_rel_symlink.py-can-also-use-python2.patch => 0001-tools-make_rel_symlink.py-can-also-use-python2.patch} (100%) rename bsp/buildroot/package/lirc-tools/{0004-configure-check-for-clock_gettime-in-librt.patch => 0002-configure-check-for-clock_gettime-in-librt.patch} (100%) delete mode 100644 bsp/buildroot/package/lirc-tools/0003-Don-t-build-commandir-unless-we-have-usb.h-191.patch create mode 100644 bsp/buildroot/package/lirc-tools/0003-lircd-Remove-use-of-functions-killed-in-kernel-4.8.0.patch create mode 100644 bsp/buildroot/package/log4cxx/0004-Applied-patch-for-LOGCXX-400-LOGCXX-404-LOGCXX-402-L.patch create mode 100644 bsp/buildroot/package/log4cxx/0005-domtestcase.cpp-fix-narrowing-conversion-compile-err.patch delete mode 100644 bsp/buildroot/package/logrotate/0001-make-autoreconfable.patch delete mode 100644 bsp/buildroot/package/logrotate/0002-Use-autoconf-checks-for-strndup-and-asprintf.patch delete mode 100644 bsp/buildroot/package/ltp-testsuite/0001-fix-uClibc-build.patch rename bsp/buildroot/package/ltp-testsuite/{0002-rpc-tirpc-disable-tirpc_auth_authdes_seccreate-tests.patch => 0001-rpc-tirpc-disable-tirpc_auth_authdes_-create-tests.patch} (78%) create mode 100644 bsp/buildroot/package/ltp-testsuite/0002-uClibc-ng-has-no-profil-support.patch delete mode 100644 bsp/buildroot/package/ltp-testsuite/0003-disable-profil-on-uClibc.patch create mode 100644 bsp/buildroot/package/ltp-testsuite/0003-uClibc-ng-need-__UCLIBC_SV4_DEPRECATED__-enabled-for.patch delete mode 100644 bsp/buildroot/package/ltp-testsuite/0004-disable-ustat-on-uClibc.patch create mode 100644 bsp/buildroot/package/ltp-testsuite/0004-rusers.h-is-unused-and-not-available-for-uClibc-ng-l.patch delete mode 100644 bsp/buildroot/package/ltp-testsuite/0005-rpc-fix-uClibc.patch delete mode 100644 bsp/buildroot/package/lttng-babeltrace/0001-no-posix-fallocate-in-uclibc.patch create mode 100644 bsp/buildroot/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch delete mode 100644 bsp/buildroot/package/lttng-babeltrace/0002-configure-fix-uuid-support-detection-on-static-build.patch create mode 100644 bsp/buildroot/package/lttng-babeltrace/0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch create mode 100644 bsp/buildroot/package/lttng-babeltrace/Config.in.host create mode 100644 bsp/buildroot/package/lttng-libust/0001-lttng-ust-elf.c-define-NT_GNU_BUILD_ID-if-not-define.patch create mode 100644 bsp/buildroot/package/lttng-libust/0002-doc-examples-Makefile.am-define-C-and-C-compilers-fo.patch delete mode 100644 bsp/buildroot/package/lttng-tools/0001-Fix-build-failure-when-__GLIBC_PREREQ-is-missing.patch delete mode 100644 bsp/buildroot/package/lttng-tools/0002-Fix-add-missing-sys-types.h-header.patch delete mode 100644 bsp/buildroot/package/lua/5.3.3/0012-fix-loop-parser.patch rename bsp/buildroot/package/lua/{5.3.3 => 5.3.4}/0001-root-path.patch (95%) rename bsp/buildroot/package/lua/{5.3.3 => 5.3.4}/0002-shared-libs-for-lua.patch (100%) rename bsp/buildroot/package/lua/{5.3.3 => 5.3.4}/0004-lua-pc.patch (98%) rename bsp/buildroot/package/lua/{5.3.3 => 5.3.4}/0011-linenoise.patch (97%) delete mode 100644 bsp/buildroot/package/lxc/0001-drop-werror.patch delete mode 100644 bsp/buildroot/package/lxc/0002-Fix-redefinition-of-struct-in6_addr.patch create mode 100644 bsp/buildroot/package/lzop/0002-use-static-inlines-as-the-external-inline-definition.patch delete mode 100644 bsp/buildroot/package/makedevs/Config.in create mode 100644 bsp/buildroot/package/mariadb/0001-add-extra-check-for-librt.patch create mode 100644 bsp/buildroot/package/mariadb/S97mysqld create mode 100644 bsp/buildroot/package/mariadb/mariadb.hash create mode 100644 bsp/buildroot/package/mariadb/mariadb.mk create mode 100644 bsp/buildroot/package/mariadb/mysqld.service create mode 100644 bsp/buildroot/package/mesa3d/0004-Fix-endianess-detection-with-musl-based-toolchains.patch create mode 100644 bsp/buildroot/package/mesa3d/0005-configure.ac-invert-order-for-wayland-scanner-check.patch create mode 100644 bsp/buildroot/package/mfgtools/Config.in.host create mode 100644 bsp/buildroot/package/mfgtools/mfgtools.hash create mode 100644 bsp/buildroot/package/mfgtools/mfgtools.mk create mode 100644 bsp/buildroot/package/mfgtools/readme.txt create mode 100644 bsp/buildroot/package/mimic/Config.in create mode 100644 bsp/buildroot/package/mimic/mimic.hash create mode 100644 bsp/buildroot/package/mimic/mimic.mk create mode 100644 bsp/buildroot/package/mkpasswd/Config.in.host create mode 100644 bsp/buildroot/package/mksh/Config.in create mode 100644 bsp/buildroot/package/mksh/mksh.hash create mode 100644 bsp/buildroot/package/mksh/mksh.mk create mode 100644 bsp/buildroot/package/motion/0001-configure.ac-use-given-CFLAGS-LIBS-for-mysqlclient-l.patch create mode 100644 bsp/buildroot/package/motion/0002-Rename-base64_encode.patch create mode 100644 bsp/buildroot/package/motion/Config.in create mode 100644 bsp/buildroot/package/motion/S99motion create mode 100644 bsp/buildroot/package/motion/motion.hash create mode 100644 bsp/buildroot/package/motion/motion.mk create mode 100644 bsp/buildroot/package/motion/motion.service delete mode 100644 bsp/buildroot/package/mpd/0002-thread-Name-include-stdio.h-for-prctl-as-well.patch create mode 100644 bsp/buildroot/package/mpfr/0001-Fix-obsolete-ARC-asm-constraints.patch create mode 100644 bsp/buildroot/package/mpv/0002-fix-powerpc64-altivec.patch delete mode 100644 bsp/buildroot/package/mpv/0002-wscript-improve-stdatomic-check.patch create mode 100644 bsp/buildroot/package/musl/0001-avoid-kernel-if_ether.h.patch delete mode 100644 bsp/buildroot/package/musl/0001-fix-regression-in-tcsetattr-on-all-mips-archs.patch create mode 100644 bsp/buildroot/package/net-tools/0002-iptunnel.c-do-not-include-netinet-ip.h.patch create mode 100644 bsp/buildroot/package/netsnmp/0001-configure-Eliminate-the-hard-coded-libnl-3-include-p.patch delete mode 100644 bsp/buildroot/package/nettle/0002-fix-CVE-2016-6489.patch delete mode 100644 bsp/buildroot/package/network-manager/0001-platform-move-link_get_user_ipv6ll_enabled-to-nm-platform-linux.patch delete mode 100644 bsp/buildroot/package/network-manager/0002-accept-auto-mode-interfaces.patch delete mode 100644 bsp/buildroot/package/newt/0001-Use-CC-instead-of-CPP-to-generate-.depend-files.patch delete mode 100644 bsp/buildroot/package/newt/0002-Remove-bogus-I-usr-include-slang-from-CPPFLAGS.patch delete mode 100644 bsp/buildroot/package/nfacct/0001-uclinux.patch create mode 100644 bsp/buildroot/package/nginx-dav-ext/Config.in create mode 100644 bsp/buildroot/package/nginx-dav-ext/nginx-dav-ext.hash create mode 100644 bsp/buildroot/package/nginx-dav-ext/nginx-dav-ext.mk create mode 100644 bsp/buildroot/package/nmon/Config.in create mode 100644 bsp/buildroot/package/nmon/nmon.hash create mode 100644 bsp/buildroot/package/nmon/nmon.mk rename bsp/buildroot/package/nodejs/{0.10.45 => 0.10.48}/0001-remove-python-bz2-dependency.patch (100%) rename bsp/buildroot/package/nodejs/{0.10.45 => 0.10.48}/0002-gyp-force-link-command-to-use-CXX.patch (100%) rename bsp/buildroot/package/nodejs/{0.10.45 => 0.10.48}/0003-fix-musl-USE-MISC-build-issue.patch (100%) rename bsp/buildroot/package/nodejs/{0.10.45 => 0.10.48}/0004-Fix-support-for-uClibc-ng.patch (100%) rename bsp/buildroot/package/nodejs/{6.2.1 => 6.9.4}/0001-gyp-force-link-command-to-use-CXX.patch (100%) create mode 100644 bsp/buildroot/package/nodejs/6.9.4/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch delete mode 100644 bsp/buildroot/package/norm/0003-remove-kernel-headers-include-musl-fix.patch create mode 100644 bsp/buildroot/package/nut/0001-Allow-to-customize-path-to-gdlib-config-and-net-snmp.patch delete mode 100644 bsp/buildroot/package/nut/0001-foo-config.patch create mode 100644 bsp/buildroot/package/nut/0002-client-ups-add-missing-include.patch delete mode 100644 bsp/buildroot/package/nut/0002-parallel-build.patch create mode 100644 bsp/buildroot/package/nvidia-driver/0001-use-LDFLAGS.patch rename bsp/buildroot/package/odroid-scripts/{S50odroidc2_fb => S02odroidc2_fb} (100%) create mode 100644 bsp/buildroot/package/ola/0002-Remove-replacing-I-with-isystem.patch create mode 100644 bsp/buildroot/package/opencv/0003-types_c.h-Fix-compiling-VFP-assembler-code.patch create mode 100644 bsp/buildroot/package/opencv/0004-CMakeLists.txt-Do-not-add-libdl-to-LINKER_LIBS-for-s.patch create mode 100644 bsp/buildroot/package/openjpeg/0001-thirdparty-tiff-append-flags-found-by-pkg-config-if-.patch create mode 100644 bsp/buildroot/package/openjpeg/0002-thirdparty-lcms2-append-flags-found-by-pkg-config-if.patch create mode 100644 bsp/buildroot/package/openpowerlink/0004-FIX-Veth-Fix-compilation-on-Linux-kernels-4.7.patch create mode 100644 bsp/buildroot/package/openswan/0001-uClibc-ng-is-compatible-to-glibc.patch create mode 100644 bsp/buildroot/package/opkg-utils/Config.in.host create mode 100644 bsp/buildroot/package/opkg-utils/opkg-utils.hash create mode 100644 bsp/buildroot/package/opkg-utils/opkg-utils.mk create mode 100644 bsp/buildroot/package/oprofile/0002-Fix-FTBFS-problem-with-GCC-6.patch rename bsp/buildroot/package/{mysql => oracle-mysql}/0000-ac_cache_check.patch (100%) rename bsp/buildroot/package/{mysql => oracle-mysql}/0001-configure-ps-cache-check.patch (100%) rename bsp/buildroot/package/{mysql => oracle-mysql}/0002-use-new-readline-iface.patch (100%) rename bsp/buildroot/package/{mysql => oracle-mysql}/0003-ac_stack_direction-is-unset.patch (100%) rename bsp/buildroot/package/{mysql => oracle-mysql}/0004-Fix-gen_lex_hash-execution.patch (100%) rename bsp/buildroot/package/{mysql => oracle-mysql}/0005-bison_3_breaks_mysql_server_build.patch (100%) rename bsp/buildroot/package/{mysql => oracle-mysql}/0006-no-force-static-build.patch (100%) rename bsp/buildroot/package/{mysql => oracle-mysql}/0007-dont-install-in-mysql-directory.patch (100%) rename bsp/buildroot/package/{mysql => oracle-mysql}/S97mysqld (72%) rename bsp/buildroot/package/{mysql => oracle-mysql}/mysqld.service (79%) rename bsp/buildroot/package/{mysql/mysql.hash => oracle-mysql/oracle-mysql.hash} (55%) create mode 100644 bsp/buildroot/package/oracle-mysql/oracle-mysql.mk create mode 100644 bsp/buildroot/package/paho-mqtt-c/Config.in create mode 100644 bsp/buildroot/package/paho-mqtt-c/paho-mqtt-c.hash create mode 100644 bsp/buildroot/package/paho-mqtt-c/paho-mqtt-c.mk delete mode 100644 bsp/buildroot/package/perl-db-file/Config.in delete mode 100644 bsp/buildroot/package/perl-db-file/perl-db-file.hash delete mode 100644 bsp/buildroot/package/perl-db-file/perl-db-file.mk create mode 100644 bsp/buildroot/package/perl/0001-fix-static-build-with-gdbm-gettext.patch create mode 100644 bsp/buildroot/package/php-amqp/Config.in create mode 100644 bsp/buildroot/package/php-amqp/php-amqp.hash create mode 100644 bsp/buildroot/package/php-amqp/php-amqp.mk delete mode 100644 bsp/buildroot/package/php/0006-Fix-php-fpm.service.in.patch create mode 100644 bsp/buildroot/package/php/0007-avoid-bfin-gcc-segfault.patch delete mode 100644 bsp/buildroot/package/php/0007-phpdbg_prompt-enclose-phpdbg_load_module_or_extensio.patch create mode 100644 bsp/buildroot/package/php/0008-fix-asm-constraints-in-aarch64-multiply-macro.patch create mode 100644 bsp/buildroot/package/php/0009-Call-apxs-with-correct-prefix.patch create mode 100644 bsp/buildroot/package/pkg-waf.mk create mode 100644 bsp/buildroot/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch create mode 100644 bsp/buildroot/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch create mode 100644 bsp/buildroot/package/policycoreutils/0003-Remove-hardcoded-arch-variable.patch create mode 100644 bsp/buildroot/package/policycoreutils/0004-Change-sepolicy-python-install-arguments-to-be-a-var.patch create mode 100644 bsp/buildroot/package/policycoreutils/0005-Check-to-see-if-DBUS-is-enabled.patch create mode 100644 bsp/buildroot/package/policycoreutils/Config.in create mode 100644 bsp/buildroot/package/policycoreutils/policycoreutils.hash create mode 100644 bsp/buildroot/package/policycoreutils/policycoreutils.mk delete mode 100644 bsp/buildroot/package/poppler/0001-Fix-invalid-shell-comparaison-in-libtiff-test.patch create mode 100644 bsp/buildroot/package/pppd/0001-Move-netinet-in.h-above-linux-header-includes.patch delete mode 100644 bsp/buildroot/package/protobuf/0001-Fix-GOOGLE_PROTOBUF_ATOMICOPS_ERROR-syntax-error.patch rename bsp/buildroot/package/protobuf/{0002-configure.ac-check-if-libatomic-is-needed.patch => 0001-configure.ac-check-if-libatomic-is-needed.patch} (85%) create mode 100644 bsp/buildroot/package/pru-software-support/Config.in create mode 100644 bsp/buildroot/package/pru-software-support/Config.in.host create mode 100644 bsp/buildroot/package/pru-software-support/pru-software-support.hash create mode 100644 bsp/buildroot/package/pru-software-support/pru-software-support.mk create mode 100644 bsp/buildroot/package/pru-software-support/readme.txt create mode 100644 bsp/buildroot/package/pseudo/0001-Fix-mixed-tab-space-indentation.patch create mode 100644 bsp/buildroot/package/pseudo/0002-Fix-missing-parentheses-at-print.patch create mode 100644 bsp/buildroot/package/pseudo/0003-Make-it-compatible-with-python3.patch create mode 100644 bsp/buildroot/package/pseudo/pseudo.hash create mode 100644 bsp/buildroot/package/pseudo/pseudo.mk create mode 100644 bsp/buildroot/package/pugixml/0001-check-cxx_long_long_type-existence.patch create mode 100644 bsp/buildroot/package/pugixml/Config.in create mode 100644 bsp/buildroot/package/pugixml/pugixml.hash create mode 100644 bsp/buildroot/package/pugixml/pugixml.mk create mode 100644 bsp/buildroot/package/python-arrow/Config.in create mode 100644 bsp/buildroot/package/python-arrow/python-arrow.hash create mode 100644 bsp/buildroot/package/python-arrow/python-arrow.mk create mode 100644 bsp/buildroot/package/python-attrs/Config.in create mode 100644 bsp/buildroot/package/python-attrs/python-attrs.hash create mode 100644 bsp/buildroot/package/python-attrs/python-attrs.mk create mode 100644 bsp/buildroot/package/python-babel/Config.in create mode 100644 bsp/buildroot/package/python-babel/python-babel.hash create mode 100644 bsp/buildroot/package/python-babel/python-babel.mk create mode 100644 bsp/buildroot/package/python-bitstring/Config.in create mode 100644 bsp/buildroot/package/python-bitstring/python-bitstring.hash create mode 100644 bsp/buildroot/package/python-bitstring/python-bitstring.mk create mode 100644 bsp/buildroot/package/python-chardet/Config.in create mode 100644 bsp/buildroot/package/python-chardet/python-chardet.hash create mode 100644 bsp/buildroot/package/python-chardet/python-chardet.mk create mode 100644 bsp/buildroot/package/python-constantly/Config.in create mode 100644 bsp/buildroot/package/python-constantly/python-constantly.hash create mode 100644 bsp/buildroot/package/python-constantly/python-constantly.mk create mode 100644 bsp/buildroot/package/python-couchdb/Config.in create mode 100644 bsp/buildroot/package/python-couchdb/python-couchdb.hash create mode 100644 bsp/buildroot/package/python-couchdb/python-couchdb.mk create mode 100644 bsp/buildroot/package/python-crcmod/Config.in create mode 100644 bsp/buildroot/package/python-crcmod/python-crcmod.hash create mode 100644 bsp/buildroot/package/python-crcmod/python-crcmod.mk create mode 100644 bsp/buildroot/package/python-cssutils/Config.in create mode 100644 bsp/buildroot/package/python-cssutils/python-cssutils.hash create mode 100644 bsp/buildroot/package/python-cssutils/python-cssutils.mk create mode 100644 bsp/buildroot/package/python-docutils/Config.in create mode 100644 bsp/buildroot/package/python-docutils/python-docutils.hash create mode 100644 bsp/buildroot/package/python-docutils/python-docutils.mk create mode 100644 bsp/buildroot/package/python-flask-babel/Config.in create mode 100644 bsp/buildroot/package/python-flask-babel/python-flask-babel.hash create mode 100644 bsp/buildroot/package/python-flask-babel/python-flask-babel.mk create mode 100644 bsp/buildroot/package/python-futures/Config.in create mode 100644 bsp/buildroot/package/python-futures/python-futures.hash create mode 100644 bsp/buildroot/package/python-futures/python-futures.mk create mode 100644 bsp/buildroot/package/python-gunicorn/Config.in create mode 100644 bsp/buildroot/package/python-gunicorn/python-gunicorn.hash create mode 100644 bsp/buildroot/package/python-gunicorn/python-gunicorn.mk create mode 100644 bsp/buildroot/package/python-incremental/Config.in create mode 100644 bsp/buildroot/package/python-incremental/python-incremental.hash create mode 100644 bsp/buildroot/package/python-incremental/python-incremental.mk create mode 100644 bsp/buildroot/package/python-jsonschema/Config.in create mode 100644 bsp/buildroot/package/python-jsonschema/python-jsonschema.hash create mode 100644 bsp/buildroot/package/python-jsonschema/python-jsonschema.mk create mode 100644 bsp/buildroot/package/python-logbook/Config.in create mode 100644 bsp/buildroot/package/python-logbook/python-logbook.hash create mode 100644 bsp/buildroot/package/python-logbook/python-logbook.mk create mode 100644 bsp/buildroot/package/python-markdown2/Config.in create mode 100644 bsp/buildroot/package/python-markdown2/python-markdown2.hash create mode 100644 bsp/buildroot/package/python-markdown2/python-markdown2.mk create mode 100644 bsp/buildroot/package/python-mbstrdecoder/Config.in create mode 100644 bsp/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.hash create mode 100644 bsp/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.mk create mode 100644 bsp/buildroot/package/python-mutagen/Config.in create mode 100644 bsp/buildroot/package/python-mutagen/python-mutagen.hash create mode 100644 bsp/buildroot/package/python-mutagen/python-mutagen.mk create mode 100644 bsp/buildroot/package/python-mwclient/0001-use-exec-in-py3-compatible-manner.patch create mode 100644 bsp/buildroot/package/python-mwclient/Config.in create mode 100644 bsp/buildroot/package/python-mwclient/python-mwclient.hash create mode 100644 bsp/buildroot/package/python-mwclient/python-mwclient.mk create mode 100644 bsp/buildroot/package/python-mwscrape/Config.in create mode 100644 bsp/buildroot/package/python-mwscrape/python-mwscrape.hash create mode 100644 bsp/buildroot/package/python-mwscrape/python-mwscrape.mk create mode 100644 bsp/buildroot/package/python-mwscrape2slob/Config.in create mode 100644 bsp/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.hash create mode 100644 bsp/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.mk create mode 100644 bsp/buildroot/package/python-pathpy/Config.in create mode 100644 bsp/buildroot/package/python-pathpy/python-pathpy.hash create mode 100644 bsp/buildroot/package/python-pathpy/python-pathpy.mk delete mode 100644 bsp/buildroot/package/python-protobuf/0001-disable-unneeded-build-dependencies.patch mode change 100644 => 120000 bsp/buildroot/package/python-protobuf/python-protobuf.hash create mode 100644 bsp/buildroot/package/python-pudb/Config.in create mode 100644 bsp/buildroot/package/python-pudb/python-pudb.hash create mode 100644 bsp/buildroot/package/python-pudb/python-pudb.mk create mode 100644 bsp/buildroot/package/python-pyelftools/Config.in create mode 100644 bsp/buildroot/package/python-pyelftools/python-pyelftools.hash create mode 100644 bsp/buildroot/package/python-pyelftools/python-pyelftools.mk create mode 100644 bsp/buildroot/package/python-pyicu/Config.in create mode 100644 bsp/buildroot/package/python-pyicu/python-pyicu.hash create mode 100644 bsp/buildroot/package/python-pyicu/python-pyicu.mk create mode 100644 bsp/buildroot/package/python-pylru/Config.in create mode 100644 bsp/buildroot/package/python-pylru/python-pylru.hash create mode 100644 bsp/buildroot/package/python-pylru/python-pylru.mk create mode 100644 bsp/buildroot/package/python-pyqrcode/Config.in create mode 100644 bsp/buildroot/package/python-pyqrcode/python-pyqrcode.hash create mode 100644 bsp/buildroot/package/python-pyqrcode/python-pyqrcode.mk create mode 100644 bsp/buildroot/package/python-pyqt5/0001-configure-skip-qtdetail.patch create mode 100644 bsp/buildroot/package/python-pyqt5/0002-fix-qt-5.6.2.patch create mode 100644 bsp/buildroot/package/python-pyqt5/0003-remove-WindowOkButtonHint-and-WindowCancelButtonHint.patch create mode 100644 bsp/buildroot/package/python-pyqt5/Config.in create mode 100644 bsp/buildroot/package/python-pyqt5/python-pyqt5.hash create mode 100644 bsp/buildroot/package/python-pyqt5/python-pyqt5.mk create mode 100644 bsp/buildroot/package/python-pytablereader/Config.in create mode 100644 bsp/buildroot/package/python-pytablereader/python-pytablereader.hash create mode 100644 bsp/buildroot/package/python-pytablereader/python-pytablereader.mk create mode 100644 bsp/buildroot/package/python-pyzmq/0002-replace-compile_and_run-with-compile_and_forget.patch create mode 100644 bsp/buildroot/package/python-requests-toolbelt/Config.in create mode 100644 bsp/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.hash create mode 100644 bsp/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.mk mode change 100755 => 100644 bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.hash mode change 100755 => 100644 bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.mk create mode 100644 bsp/buildroot/package/python-setuptools-scm/python-setuptools-scm.hash create mode 100644 bsp/buildroot/package/python-setuptools-scm/python-setuptools-scm.mk create mode 100644 bsp/buildroot/package/python-sh/Config.in create mode 100644 bsp/buildroot/package/python-sh/python-sh.hash create mode 100644 bsp/buildroot/package/python-sh/python-sh.mk create mode 100644 bsp/buildroot/package/python-simpleaudio/Config.in create mode 100644 bsp/buildroot/package/python-simpleaudio/python-simpleaudio.hash create mode 100644 bsp/buildroot/package/python-simpleaudio/python-simpleaudio.mk create mode 100644 bsp/buildroot/package/python-slob/Config.in create mode 100644 bsp/buildroot/package/python-slob/python-slob.hash create mode 100644 bsp/buildroot/package/python-slob/python-slob.mk delete mode 100644 bsp/buildroot/package/python-spidev/0001-Fix-build-with-musl-libc.patch create mode 100644 bsp/buildroot/package/python-toml/Config.in create mode 100644 bsp/buildroot/package/python-toml/python-toml.hash create mode 100644 bsp/buildroot/package/python-toml/python-toml.mk delete mode 100644 bsp/buildroot/package/python-tornado/0001-Don-t-require-backports.ssl_match_hostname-on-Python.patch create mode 100644 bsp/buildroot/package/python-vcversioner/python-vcversioner.hash create mode 100644 bsp/buildroot/package/python-vcversioner/python-vcversioner.mk create mode 100644 bsp/buildroot/package/python-whoosh/Config.in create mode 100644 bsp/buildroot/package/python-whoosh/python-whoosh.hash create mode 100644 bsp/buildroot/package/python-whoosh/python-whoosh.mk create mode 100644 bsp/buildroot/package/python3/0031-Add-an-option-to-disable-openssl.patch create mode 100644 bsp/buildroot/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch delete mode 100644 bsp/buildroot/package/qextserialport/0001-gui.patch create mode 100644 bsp/buildroot/package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch delete mode 100644 bsp/buildroot/package/qextserialport/0002-main-include.patch delete mode 100644 bsp/buildroot/package/qextserialport/0003-pkgconfig.patch create mode 100644 bsp/buildroot/package/qt/0012-OpenGL-EGL-Avoid-X11-header-collision.patch delete mode 100644 bsp/buildroot/package/qt5/qt5base/0007-Remove-libudev-dependency-from-kms.pro.patch rename bsp/buildroot/package/qt5/qt5base/{0006-eglfs-rasp-pi-header-inclusion.patch => 5.6.2/0001-eglfs-rasp-pi-header-inclusion.patch} (100%) create mode 100644 bsp/buildroot/package/qt5/qt5base/5.6.2/0002-eglfs-fix-eglfs_mali-compile-for-odroid-mali.patch create mode 100644 bsp/buildroot/package/qt5/qt5base/5.8.0/0001-fix-parallel-builds-with-qt-freetype-system-libpng.patch create mode 100644 bsp/buildroot/package/qt5/qt5base/5.8.0/0002-fix-VNC-platform-plugin-build-on-big-endian-machines.patch delete mode 100644 bsp/buildroot/package/qt5/qt5imageformats/0001-tvOS-support.patch create mode 100644 bsp/buildroot/package/quota/0003-remove-non-posix-types.patch create mode 100644 bsp/buildroot/package/quota/0004-import-sys-cdefs.patch create mode 100644 bsp/buildroot/package/quota/0005-include-fcntl.patch create mode 100644 bsp/buildroot/package/rabbitmq-server/Config.in create mode 100755 bsp/buildroot/package/rabbitmq-server/S50rabbitmq-server create mode 100644 bsp/buildroot/package/rabbitmq-server/rabbitmq-server.hash create mode 100644 bsp/buildroot/package/rabbitmq-server/rabbitmq-server.mk create mode 100644 bsp/buildroot/package/rabbitmq-server/rabbitmq-server.service create mode 100644 bsp/buildroot/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch create mode 100644 bsp/buildroot/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch create mode 100644 bsp/buildroot/package/raspberrypi-usbboot/0002-Makefile-add-DESTDIR-support.patch create mode 100644 bsp/buildroot/package/raspberrypi-usbboot/0003-main.c-rework-logic-to-find-def1-def2-and-def3-files.patch create mode 100644 bsp/buildroot/package/raspberrypi-usbboot/Config.in.host create mode 100644 bsp/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.hash create mode 100644 bsp/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.mk delete mode 100644 bsp/buildroot/package/readline/0001-patchlevel-1.patch delete mode 100644 bsp/buildroot/package/readline/0002-patchlevel-2.patch delete mode 100644 bsp/buildroot/package/readline/0003-patchlevel-3.patch delete mode 100644 bsp/buildroot/package/readline/0004-patchlevel-4.patch delete mode 100644 bsp/buildroot/package/readline/0005-patchlevel-5.patch delete mode 100644 bsp/buildroot/package/readline/0006-patchlevel-6.patch delete mode 100644 bsp/buildroot/package/readline/0007-patchlevel-7.patch delete mode 100644 bsp/buildroot/package/readline/0008-patchlevel-8.patch create mode 100644 bsp/buildroot/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch delete mode 100644 bsp/buildroot/package/redis/0003-redis.conf-sane-defaults.patch create mode 100644 bsp/buildroot/package/riemann-c-client/Config.in create mode 100644 bsp/buildroot/package/riemann-c-client/riemann-c-client.hash create mode 100644 bsp/buildroot/package/riemann-c-client/riemann-c-client.mk delete mode 100644 bsp/buildroot/package/rpi-firmware/mkknlimg create mode 100644 bsp/buildroot/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch create mode 100644 bsp/buildroot/package/rpi-userland/0003-Disable-Werror-everywhere.patch delete mode 100644 bsp/buildroot/package/rpi-userland/0003-interface-remove-faulty-assert-to-make-weston-happy-.patch rename bsp/buildroot/package/rpi-userland/{0005-disable-missing-all-apps.patch => 0004-host-applications-disable-missing-applications.patch} (61%) delete mode 100644 bsp/buildroot/package/rpi-userland/0004-no-Werror.patch rename bsp/buildroot/package/rpi-userland/{0006-dtmerge-add-missing-include-for-va_list.patch => 0005-dtmerge-add-missing-include-for-va_list.patch} (100%) create mode 100644 bsp/buildroot/package/rpm/0001-Detect-bfd.h-to-enable-disable-sepdebugcrcfix-buildi.patch delete mode 100644 bsp/buildroot/package/rpm/0002-depends-fix.patch create mode 100644 bsp/buildroot/package/rpm/0002-tools-sepdebugcrcfix.c-fix-build-with-recent-binutil.patch delete mode 100644 bsp/buildroot/package/rpm/0003-exclude-some-tools.patch delete mode 100644 bsp/buildroot/package/rpm/0004-ignore-shared-mutexes.patch delete mode 100644 bsp/buildroot/package/rpm/0005-no-parentdirs.patch delete mode 100644 bsp/buildroot/package/rpm/0006-ordering-fix.patch delete mode 100644 bsp/buildroot/package/rpm/0007-parentdir-vs-requires.patch delete mode 100644 bsp/buildroot/package/rpm/0008-short-circuit-c99.patch create mode 100644 bsp/buildroot/package/rtl8723bs/0001-rtl8723bs-add-debug-level-modparam.patch create mode 100644 bsp/buildroot/package/rtl8723bs/Config.in create mode 100644 bsp/buildroot/package/rtl8723bs/rtl8723bs.mk delete mode 100644 bsp/buildroot/package/ruby/0001-process.c-fix-rb_spawn_process-for-nommu.patch rename bsp/buildroot/package/samba4/{0001-disable-libbsd.patch => 0001-libreplace-disable-libbsd-support.patch} (56%) create mode 100644 bsp/buildroot/package/sane-backends/0003-sane_backend-add-missing-config.h.patch create mode 100644 bsp/buildroot/package/sdl2/0001-ppc.patch create mode 100644 bsp/buildroot/package/sdl2/0002-gcc6.patch create mode 100644 bsp/buildroot/package/sdl2_ttf/0001-fix-opengl-detection.patch create mode 100644 bsp/buildroot/package/sdl2_ttf/0002-fix-autoreconf.patch create mode 100644 bsp/buildroot/package/sdl_mixer/0002-add-LDFLAGS-while-linking.patch create mode 100644 bsp/buildroot/package/shapelib/Config.in create mode 100644 bsp/buildroot/package/shapelib/shapelib.hash create mode 100644 bsp/buildroot/package/shapelib/shapelib.mk create mode 100644 bsp/buildroot/package/skalibs/0001-No-runtime-tests-for-endianness.patch create mode 100644 bsp/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch create mode 100644 bsp/buildroot/package/skalibs/0003-Make-linker-use-dummy-file-when-testing-libs.patch create mode 100644 bsp/buildroot/package/skalibs/Config.in create mode 100644 bsp/buildroot/package/skalibs/skalibs.hash create mode 100644 bsp/buildroot/package/skalibs/skalibs.mk create mode 100644 bsp/buildroot/package/sngrep/Config.in create mode 100644 bsp/buildroot/package/sngrep/sngrep.hash create mode 100644 bsp/buildroot/package/sngrep/sngrep.mk delete mode 100644 bsp/buildroot/package/snmppp/0001-Add-missing-includes.patch delete mode 100644 bsp/buildroot/package/snowball-hdmiservice/Config.in delete mode 100644 bsp/buildroot/package/snowball-hdmiservice/snowball-hdmiservice.hash delete mode 100644 bsp/buildroot/package/snowball-hdmiservice/snowball-hdmiservice.mk delete mode 100644 bsp/buildroot/package/snowball-init/Config.in delete mode 100644 bsp/buildroot/package/snowball-init/snowball-init.hash delete mode 100644 bsp/buildroot/package/snowball-init/snowball-init.mk create mode 100644 bsp/buildroot/package/socat/0003-compat-set-NETDB_INTERNAL.patch create mode 100644 bsp/buildroot/package/socat/0004-xio-tun-remove-if_tun.h-kernel-header.patch create mode 100644 bsp/buildroot/package/sslh/0001-secure-version-while-building-sslh-in-a-larger-git-t.patch create mode 100644 bsp/buildroot/package/sslh/Config.in create mode 100644 bsp/buildroot/package/sslh/S35sslh create mode 100644 bsp/buildroot/package/sslh/sslh.hash create mode 100644 bsp/buildroot/package/sslh/sslh.mk delete mode 100644 bsp/buildroot/package/sstrip/Config.in delete mode 100644 bsp/buildroot/package/sstrip/sstrip.mk create mode 100644 bsp/buildroot/package/stella/0004-Use-gnu-11-standard-to-prevent-errors-on-PPC.patch create mode 100644 bsp/buildroot/package/synergy/0003-Fix-build-with-gcc-6.patch create mode 100644 bsp/buildroot/package/sysklogd/0001-Replace-deprecated-union-wait-with-int.patch create mode 100644 bsp/buildroot/package/sysklogd/0002-Fix-improper-header-includes.patch create mode 100644 bsp/buildroot/package/sysklogd/0003-Remove-include-of-linux-time.h.patch create mode 100644 bsp/buildroot/package/sysklogd/0004-Remove-bogus-hand-written-klogctl-syscall-implementa.patch create mode 100644 bsp/buildroot/package/sysklogd/0005-Add-missing-headers-for-open-flags.patch create mode 100644 bsp/buildroot/package/sysklogd/0006-syslogd.c-rename-dprintf-to-mydprintf.patch delete mode 100644 bsp/buildroot/package/systemd-bootchart/0001-configure-add-option-to-not-build-manpages.patch create mode 100644 bsp/buildroot/package/systemd/dhcp.network create mode 100644 bsp/buildroot/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch create mode 100644 bsp/buildroot/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch delete mode 100644 bsp/buildroot/package/texinfo/texinfo.hash delete mode 100644 bsp/buildroot/package/texinfo/texinfo.mk create mode 100644 bsp/buildroot/package/ti-cgt-pru/Config.in.host create mode 100644 bsp/buildroot/package/ti-cgt-pru/ti-cgt-pru.hash create mode 100644 bsp/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk create mode 100644 bsp/buildroot/package/tinyalsa/0001-disable-doxygen-usage.patch delete mode 100644 bsp/buildroot/package/tinyalsa/0001-tinypcminfo-make-function-pcm_get_format_name-static.patch delete mode 100644 bsp/buildroot/package/tinyalsa/0002-asound.h-include-time.h-to-get-struct-timespec-proto.patch create mode 100644 bsp/buildroot/package/tinycbor/0001-Update-cjson-include-path.patch create mode 100644 bsp/buildroot/package/tinycbor/0002-Fix-static-compilation-of-json2cbor.patch create mode 100644 bsp/buildroot/package/tinymembench/0001-arm-fix-build-on-Thumb-only-architectures.patch create mode 100644 bsp/buildroot/package/tmux/0001-compat-don-t-re-define-program_invocation_short_name.patch delete mode 100644 bsp/buildroot/package/torsmo/Config.in delete mode 100644 bsp/buildroot/package/torsmo/torsmo.hash delete mode 100644 bsp/buildroot/package/torsmo/torsmo.mk create mode 100644 bsp/buildroot/package/transmission/0005-uClibc-ng-since-1.0.18-has-sys-quota.h-synced-with-G.patch create mode 100644 bsp/buildroot/package/transmission/0006-libsystemd.patch create mode 100644 bsp/buildroot/package/ts4900-fpga/Config.in create mode 100644 bsp/buildroot/package/ts4900-fpga/ts4900-fpga.hash create mode 100644 bsp/buildroot/package/ts4900-fpga/ts4900-fpga.mk delete mode 100644 bsp/buildroot/package/tslib/0001-enable_raw_module.patch delete mode 100644 bsp/buildroot/package/tslib/0002-add_finddef_and_inputattach_utils.patch delete mode 100644 bsp/buildroot/package/tvheadend/0002-ffmpeg-revert-minimum-required-version-numbers.patch rename bsp/buildroot/package/{ubus_ => ubus}/0001-Install-server-and-client-examples.patch (100%) rename bsp/buildroot/package/{ubus_ => ubus}/Config.in (100%) rename bsp/buildroot/package/{ubus_ => ubus}/ubus.hash (100%) rename bsp/buildroot/package/{ubus_ => ubus}/ubus.mk (100%) create mode 100644 bsp/buildroot/package/uclibc-ng-test/Config.in create mode 100644 bsp/buildroot/package/uclibc-ng-test/uclibc-ng-test.mk delete mode 100644 bsp/buildroot/package/uclibc/0001-arm-fix-compile-in-thumb-mode.patch create mode 100644 bsp/buildroot/package/uclibc/0001-fstat-make-new-code-aarch64-specific.patch create mode 100644 bsp/buildroot/package/uclibc/0002-arm-fix-static-linking-issues.patch delete mode 100644 bsp/buildroot/package/uclibc/0002-sunrpc-Do-not-use-alloca-in-clntudp_call.patch delete mode 100644 bsp/buildroot/package/uclibc/0003-ARC-Support-syscall-ABI-v4.patch create mode 100644 bsp/buildroot/package/uclibc/0003-or1k-add-missing-definition-of-ucontext.patch create mode 100644 bsp/buildroot/package/udisks/0002-Fix-systemd-service-file.patch create mode 100644 bsp/buildroot/package/udpxy/Config.in create mode 100644 bsp/buildroot/package/udpxy/udpxy.hash create mode 100644 bsp/buildroot/package/udpxy/udpxy.mk create mode 100644 bsp/buildroot/package/uhttpd/0001-Remove-Werror.patch create mode 100644 bsp/buildroot/package/uhttpd/Config.in create mode 100644 bsp/buildroot/package/uhttpd/uhttpd.hash create mode 100644 bsp/buildroot/package/uhttpd/uhttpd.mk create mode 100644 bsp/buildroot/package/upower/0001-daemon-fix-get_critical_action.patch create mode 100644 bsp/buildroot/package/upower/Config.in create mode 100644 bsp/buildroot/package/upower/upower.hash create mode 100644 bsp/buildroot/package/upower/upower.mk create mode 100644 bsp/buildroot/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch create mode 100644 bsp/buildroot/package/ushare/0003-ushare-c-include-config-h-before-checking-for-CONFIG-NLS.patch create mode 100644 bsp/buildroot/package/ustream-ssl/Config.in create mode 100644 bsp/buildroot/package/ustream-ssl/ustream-ssl.mk delete mode 100644 bsp/buildroot/package/util-linux/0001-build-sys-fix-uClibc-ng-scanf-check.patch create mode 100644 bsp/buildroot/package/util-linux/0001-build-sys-use-lm-for-scriptreplay-if-necessary.patch delete mode 100644 bsp/buildroot/package/valgrind/0003-mips-replace-addi-with-addiu.patch create mode 100644 bsp/buildroot/package/vdr-plugin-vnsiserver/Config.in create mode 100644 bsp/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash create mode 100644 bsp/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk create mode 100644 bsp/buildroot/package/vdr/0001-getloadavg.patch create mode 100644 bsp/buildroot/package/vdr/0002-libjpeg.patch create mode 100644 bsp/buildroot/package/vdr/Config.in create mode 100644 bsp/buildroot/package/vdr/vdr.hash create mode 100644 bsp/buildroot/package/vdr/vdr.mk create mode 100644 bsp/buildroot/package/vlc/0009-ffmpeg-3.0.patch create mode 100644 bsp/buildroot/package/vlc/0010-static-assert.patch create mode 100644 bsp/buildroot/package/vlc/0011-static-assert.patch create mode 100644 bsp/buildroot/package/waf/waf.hash create mode 100644 bsp/buildroot/package/waf/waf.mk delete mode 100644 bsp/buildroot/package/wayland/0002-scanner-Use-uint32_t-instead-of-uint.patch delete mode 100644 bsp/buildroot/package/webkit/0001-build-fix-for-32-bit-autotools.patch delete mode 100644 bsp/buildroot/package/webkit/0002-build-fix-for-gtklauncher.patch delete mode 100644 bsp/buildroot/package/webkit/0003-detect-harfbuzz-icu.patch delete mode 100644 bsp/buildroot/package/webkit/0004-disable-docrebase.patch delete mode 100644 bsp/buildroot/package/webkit/0005-disable-tests.patch delete mode 100644 bsp/buildroot/package/webkit/0006-execinfo_h.patch delete mode 100644 bsp/buildroot/package/webkit/0007-mips-dfg.patch delete mode 100644 bsp/buildroot/package/webkit/0008-support-bison-3.0.patch delete mode 100644 bsp/buildroot/package/webkit/Config.in delete mode 100644 bsp/buildroot/package/webkit/webkit.hash delete mode 100644 bsp/buildroot/package/webkit/webkit.mk create mode 100644 bsp/buildroot/package/webkitgtk/0001-fix-gcc6-builds.patch delete mode 100644 bsp/buildroot/package/webkitgtk24/0001-fix-ppc32.patch delete mode 100644 bsp/buildroot/package/webkitgtk24/0003-Pretty-quotes-in-licence-break-Python-stdin.patch delete mode 100644 bsp/buildroot/package/webkitgtk24/Config.in delete mode 100644 bsp/buildroot/package/webkitgtk24/webkitgtk24.hash delete mode 100644 bsp/buildroot/package/webkitgtk24/webkitgtk24.mk delete mode 100644 bsp/buildroot/package/weston/0002-libweston-compositor-rdp-fix-no-break-space-U-A0-U8-.patch create mode 100644 bsp/buildroot/package/weston/0002-shared-platform-include-weston-egl-ext.h-only-if-ENA.patch create mode 100644 bsp/buildroot/package/weston/0003-configure-search-for-lib-with-clock_getres.patch create mode 100644 bsp/buildroot/package/weston/0004-libweston-include-weston-egl-ext.h-in-drm-x11-and-wa.patch create mode 100644 bsp/buildroot/package/weston/0005-libweston-fix-building-issue-when-EGL-support-is-not.patch create mode 100644 bsp/buildroot/package/weston/0006-tests-add-missing-include.patch rename bsp/buildroot/package/wireshark/{0001-configure-do-not-assume-broken-inet_pton-in-case-of-.patch => 0001-configure.ac-do-not-assume-broken-inet_pton-in-case-.patch} (53%) create mode 100644 bsp/buildroot/package/wireshark/0002-androiddump-add-missing-sys-time.h-header.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0001-fix-readline-libs-ordering.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0002-WNM-Ignore-Key-Data-in-WNM-Sleep-Mode-Response-frame.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0003-EAP-pwd-peer-Fix-last-fragment-length-validation.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0004-EAP-pwd-server-Fix-last-fragment-length-validation.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0005-EAP-pwd-peer-Fix-error-path-for-unexpected-Confirm-m.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0006-fix-libwpa_client.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0007-systemd-Update-service-files-according-to-dbus-inter.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0008-WPS-Reject-a-Credential-with-invalid-passphrase.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0009-Reject-psk-parameter-set-with-invalid-passphrase-cha.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0010-Remove-newlines-from-wpa_supplicant-config-network-o.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0011-Reject-SET_CRED-commands-with-newline-characters-in-.patch delete mode 100644 bsp/buildroot/package/wpa_supplicant/0012-Reject-SET-commands-with-newline-characters-in-the-s.patch delete mode 100644 bsp/buildroot/package/wvdial/0001-uClibc-scandir.patch delete mode 100644 bsp/buildroot/package/wvdial/Config.in delete mode 100644 bsp/buildroot/package/wvdial/wvdial.hash delete mode 100644 bsp/buildroot/package/wvdial/wvdial.mk delete mode 100644 bsp/buildroot/package/wvstreams/0001-fix-uClibc-compile-getcontext.patch delete mode 100644 bsp/buildroot/package/wvstreams/0002-fix-uClibc-compile-execinfo-backtrace.patch delete mode 100644 bsp/buildroot/package/wvstreams/0003-fix-uClibc-compile-misc.patch delete mode 100644 bsp/buildroot/package/wvstreams/0004-build-fixes.patch delete mode 100644 bsp/buildroot/package/wvstreams/0005-getuid.patch delete mode 100644 bsp/buildroot/package/wvstreams/Config.in delete mode 100644 bsp/buildroot/package/wvstreams/wvstreams.hash delete mode 100644 bsp/buildroot/package/wvstreams/wvstreams.mk create mode 100644 bsp/buildroot/package/x11r7/xapp_sessreg/0002-missing_path_wtmpx.patch create mode 100644 bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch create mode 100644 bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch create mode 100644 bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch create mode 100644 bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch create mode 100644 bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch delete mode 100644 bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/0001-mbstring.patch delete mode 100644 bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/0001-mibstore.patch rename bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/{0007-xi.patch => 0003-xi.patch} (100%) create mode 100644 bsp/buildroot/package/x11r7/xlib_libXfont2/Config.in create mode 100644 bsp/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash create mode 100644 bsp/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk rename bsp/buildroot/package/x11r7/xserver_xorg-server/{1.18.4 => 1.19.1}/0001-modesettings-needs-dri2.patch (100%) create mode 100644 bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch create mode 100644 bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0003-Remove-check-for-useSIGIO-option.patch create mode 100644 bsp/buildroot/package/x264/x264.hash create mode 100644 bsp/buildroot/package/x265/0001-fix-gcc-options.patch create mode 100644 bsp/buildroot/package/xen/0001-Remove-hardcoded-strict-Werror-checking.patch create mode 100644 bsp/buildroot/package/xen/0002-xen-Rules.mk-fix-build-with-CFLAGS-from-environment.patch create mode 100644 bsp/buildroot/package/xen/0003-tools-libxl-Disable-strict-Werror-checking.patch create mode 100644 bsp/buildroot/package/xenomai/0001-bfin-remove-inline-keyword.patch rename bsp/buildroot/package/xfsprogs/{0002-no-crc32-checks.patch => 0002-libxfs-do-not-try-to-run-the-crc32selftest.patch} (66%) create mode 100644 bsp/buildroot/package/xfsprogs/0004-build-add-EXTRALIBS-to-link-with.patch delete mode 100644 bsp/buildroot/package/xl2tp/0002-musl.patch delete mode 100644 bsp/buildroot/package/xmlstarlet/0001-Fix-static-linking-problem-with-libgcrypt.patch create mode 100644 bsp/buildroot/package/xvisor/0001-Makefile-Fix-oldconfig-make-target.patch create mode 100644 bsp/buildroot/package/xvisor/0002-openconf-do-not-check-stdin.patch create mode 100644 bsp/buildroot/package/xvisor/Config.in create mode 100644 bsp/buildroot/package/xvisor/xvisor.hash create mode 100644 bsp/buildroot/package/xvisor/xvisor.mk create mode 100644 bsp/buildroot/package/zic/0001-remove-dependency-check-on-version-file.patch delete mode 100644 bsp/buildroot/package/zsh/0001-configure-use-user-set-pcre-config.patch create mode 100644 bsp/buildroot/support/dependencies/check-host-lzip.mk create mode 100755 bsp/buildroot/support/dependencies/check-host-lzip.sh delete mode 100644 bsp/buildroot/support/dummy-external/external.mk create mode 100644 bsp/buildroot/support/misc/utils.mk create mode 100755 bsp/buildroot/support/scripts/br2-external create mode 100755 bsp/buildroot/support/scripts/fix-configure-powerpc64.sh delete mode 100644 bsp/buildroot/support/scripts/gen-manual-lists.py create mode 100755 bsp/buildroot/support/scripts/get-developers create mode 100644 bsp/buildroot/support/scripts/getdeveloperlib.py delete mode 100644 bsp/buildroot/support/scripts/kconfiglib.py create mode 100644 bsp/buildroot/support/scripts/pkgutil.py delete mode 100644 bsp/buildroot/support/scripts/readme.kconfiglib create mode 100755 bsp/buildroot/support/scripts/test-pkg create mode 100644 bsp/buildroot/toolchain/toolchain-external/pkg-toolchain-external.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash create mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk delete mode 100644 bsp/buildroot/toolchain/toolchain-external/toolchain-external.hash diff --git a/bsp/buildroot/.br-external.mk b/bsp/buildroot/.br-external.mk new file mode 100644 index 00000000..43dc5f04 --- /dev/null +++ b/bsp/buildroot/.br-external.mk @@ -0,0 +1,10 @@ +# +# Automatically generated file; DO NOT EDIT. +# + +BR2_EXTERNAL ?= +BR2_EXTERNAL_NAMES = +BR2_EXTERNAL_DIRS = +BR2_EXTERNAL_MKS = + +# No br2-external tree defined. diff --git a/bsp/buildroot/.defconfig b/bsp/buildroot/.defconfig index 037647e2..7ab0c3fb 100644 --- a/bsp/buildroot/.defconfig +++ b/bsp/buildroot/.defconfig @@ -15,7 +15,6 @@ BR2_i386=y # BR2_nios2 is not set # BR2_powerpc is not set # BR2_sh is not set -# BR2_sh64 is not set # BR2_sparc is not set # BR2_sparc64 is not set # BR2_x86_64 is not set diff --git a/bsp/buildroot/CHANGES b/bsp/buildroot/CHANGES index ef72ff8b..5fedca19 100644 --- a/bsp/buildroot/CHANGES +++ b/bsp/buildroot/CHANGES @@ -1,29 +1,397 @@ -2016.08.1, Released September 21st, 2016 +2017.02, Released February 28th, 2017 - Fix potential entire root filesystem removal in the external - toolchain handling. This would trigger if (and only if) the - following conditions are met: + Minor fixes, mainly fixing autobuilder issues. - - The user has selected a "known toolchain profile", such as a - Linaro toolchain, a Sourcery CodeBench toolchain etc. People - using "custom toolchain profile" are not affected. + 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. - - The user has enabled BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED=y - to indicate that the toolchain is already locally available - (as opposed to having Buildroot download and extract the - toolchain) + Updated/fixed packages: assimp, classpath, genimage, mplayer, + mpv, openocd, python-libconfig, qt5base, qt5quickcontrols, + vlc, xterm - - The user has left BR2_TOOLCHAIN_EXTERNAL_PATH empty, because - his toolchain is directly available through the PATH - environment variable. When BR2_TOOLCHAIN_EXTERNAL_PATH is - non-empty, Buildroot will do something silly (remove the - toolchain contents), but that are limited to the toolchain - itself. +2017.02-rc3, Released February 26th, 2017 - When such conditions are met, Buildroot will run "rm -rf /*" - due to TOOLCHAIN_EXTERNAL_INSTALL_DIR being empty. + Fixes all over the tree. -2016.08, Released Septermber 1st, 2016 + 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.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. diff --git a/bsp/buildroot/Config.in b/bsp/buildroot/Config.in index ed92c561..bd8f0d1a 100644 --- a/bsp/buildroot/Config.in +++ b/bsp/buildroot/Config.in @@ -14,18 +14,23 @@ config BR2_HOSTARCH string option env="HOSTARCH" -config BR2_EXTERNAL +config BR2_BUILD_DIR string - option env="BR2_EXTERNAL" + 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 @@ -79,6 +84,11 @@ config BR2_HOSTARCH_NEEDS_IA32_LIBS 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" @@ -148,6 +158,13 @@ config BR2_XZCAT 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 "" @@ -357,40 +374,6 @@ config BR2_CCACHE_USE_BASEDIR endif -config BR2_DEPRECATED - bool "Show options and packages that are deprecated or obsolete" - help - This option shows outdated/obsolete versions of packages and - options that are otherwise hidden. - -if BR2_DEPRECATED - -config BR2_DEPRECATED_SINCE_2015_05 - bool - default y - -config BR2_DEPRECATED_SINCE_2015_08 - bool - default y - -config BR2_DEPRECATED_SINCE_2015_11 - bool - default y - -config BR2_DEPRECATED_SINCE_2016_02 - bool - default y - -config BR2_DEPRECATED_SINCE_2016_05 - bool - default y - -config BR2_DEPRECATED_SINCE_2016_08 - bool - default y - -endif - config BR2_ENABLE_DEBUG bool "build packages with debugging symbols" help @@ -553,7 +536,11 @@ config BR2_GOOGLE_BREAKPAD_ENABLE bool "Enable google-breakpad support" select BR2_PACKAGE_GOOGLE_BREAKPAD depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_USES_GLIBC + 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 help This option will enable the use of google breakpad, a library @@ -734,6 +721,12 @@ config BR2_REPRODUCIBLE 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. @@ -757,9 +750,4 @@ source "package/Config.in.host" source "Config.in.legacy" -menu "User-provided options" - depends on BR2_EXTERNAL != "support/dummy-external" - -source "$BR2_EXTERNAL/Config.in" - -endmenu +source "$BR2_BUILD_DIR/.br2-external.in" diff --git a/bsp/buildroot/Config.in.legacy b/bsp/buildroot/Config.in.legacy index 746b80a8..20445b8a 100644 --- a/bsp/buildroot/Config.in.legacy +++ b/bsp/buildroot/Config.in.legacy @@ -142,6 +142,318 @@ comment "build, or run, in unpredictable ways. " comment "----------------------------------------------------" endif +############################################################################### +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_KERNEL_HEADERS_4_4 + select BR2_LEGACY + help + Version 4.7.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.4.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_4_6 + bool "kernel headers version 4.6.x are no longer supported" + select BR2_KERNEL_HEADERS_4_4 + select BR2_LEGACY + help + Version 4.6.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.4.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_4_5 + bool "kernel headers version 4.5.x are no longer supported" + select BR2_KERNEL_HEADERS_4_4 + select BR2_LEGACY + help + Version 4.5.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.4.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_3_14 + bool "kernel headers version 3.14.x are no longer supported" + select BR2_KERNEL_HEADERS_3_12 + select BR2_LEGACY + help + Version 3.14.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 3.12.x of the headers have been automatically + selected in your configuration. + +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_KERNEL_HEADERS_4_1 + select BR2_LEGACY + help + Version 4.3.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.1.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_4_2 + bool "kernel headers version 4.2.x are no longer supported" + select BR2_KERNEL_HEADERS_4_1 + select BR2_LEGACY + help + Version 4.2.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.1.x of the headers have been automatically + selected in your configuration. + +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_KERNEL_HEADERS_3_18 + 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. + As an alternative, version 3.18.x of the headers have been + automatically selected in your configuration. + +config BR2_KERNEL_HEADERS_3_19 + bool "kernel headers version 3.19.x are no longer supported" + select BR2_KERNEL_HEADERS_3_18 + 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. + As an alternative, version 3.18.x of the headers have been + automatically selected in your configuration. + +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" @@ -304,12 +616,19 @@ config BR2_PACKAGE_QT5QUICK1 from upstream starting from Qt 5.6. config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR - bool "uboot custom patch dir removed" - select BR2_LEGACY + 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 @@ -319,12 +638,12 @@ config BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID config BR2_KERNEL_HEADERS_3_17 bool "kernel headers version 3.17.x are no longer supported" - select BR2_KERNEL_HEADERS_3_18 + select BR2_KERNEL_HEADERS_3_12 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. - As an alternative, version 3.18.x of the headers have been + As an alternative, version 3.12.x of the headers have been automatically selected in your configuration. config BR2_GDB_VERSION_7_7 @@ -386,7 +705,7 @@ config BR2_GCC_VERSION_4_5_X version instead. config BR2_PACKAGE_SQLITE_READLINE - bool "command-line editing support was updated" + bool "sqlite command-line editing support was updated" select BR2_PACKAGE_NCURSES select BR2_PACKAGE_READLINE select BR2_LEGACY @@ -420,7 +739,7 @@ config BR2_PACKAGE_E2FSPROGS_FINDFS 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_FINDFS option. + enable the BR2_PACKAGE_UTIL_LINUX_BINARIES option. config BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL bool "openpowerlink debug option has been removed" @@ -465,12 +784,12 @@ config BR2_PACKAGE_CUPS_PDFTOPS config BR2_KERNEL_HEADERS_3_16 bool "kernel headers version 3.16.x are no longer supported" - select BR2_KERNEL_HEADERS_3_18 + select BR2_KERNEL_HEADERS_3_12 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. - As an alternative, version 3.18.x of the headers have been + As an alternative, version 3.12.x of the headers have been automatically selected in your configuration. config BR2_PACKAGE_PYTHON_PYXML @@ -681,32 +1000,32 @@ config BR2_KERNEL_HEADERS_3_0 config BR2_KERNEL_HEADERS_3_11 bool "kernel headers version 3.11.x are no longer supported" - select BR2_KERNEL_HEADERS_3_12 + select BR2_KERNEL_HEADERS_3_10 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. - As an alternative, version 3.12.x of the headers have been + As an alternative, version 3.10.x of the headers have been automatically selected in your configuration. config BR2_KERNEL_HEADERS_3_13 bool "kernel headers version 3.13.x are no longer supported" - select BR2_KERNEL_HEADERS_3_14 + select BR2_KERNEL_HEADERS_3_12 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. - As an alternative, version 3.14.x of the headers have been + As an alternative, version 3.12.x of the headers have been automatically selected in your configuration. config BR2_KERNEL_HEADERS_3_15 bool "kernel headers version 3.15.x are no longer supported" - select BR2_KERNEL_HEADERS_3_18 + select BR2_KERNEL_HEADERS_3_12 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. - As an alternative, version 3.18.x of the headers have been + As an alternative, version 3.12.x of the headers have been automatically selected in your configuration. config BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI @@ -1256,11 +1575,12 @@ config BR2_PACKAGE_STRONGSWAN_TOOLS deprecated. config BR2_PACKAGE_XBMC_ADDON_XVDR - bool "xbmc options have been renamed" + bool "xbmc-addon-xvdr removed" select BR2_LEGACY - select BR2_PACKAGE_KODI_ADDON_XVDR help - The XBMC media center project was renamed to Kodi entertainment center + 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" @@ -1512,12 +1832,12 @@ config BR2_PACKAGE_LIBELF config BR2_KERNEL_HEADERS_3_8 bool "kernel headers version 3.8.x are no longer supported" - select BR2_KERNEL_HEADERS_3_10 + select BR2_KERNEL_HEADERS_3_4 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. - As an alternative, version 3.10.x of the headers have been + As an alternative, version 3.4.x of the headers have been automatically selected in your configuration. config BR2_PACKAGE_GETTEXT_TOOLS @@ -1670,22 +1990,22 @@ config BR2_PACKAGE_EVTEST_CAPTURE config BR2_KERNEL_HEADERS_3_6 bool "kernel headers version 3.6.x are no longer supported" - select BR2_KERNEL_HEADERS_3_10 + select BR2_KERNEL_HEADERS_3_4 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. - As an alternative, version 3.10.x of the headers have been + As an alternative, version 3.4.x of the headers have been automatically selected in your configuration. config BR2_KERNEL_HEADERS_3_7 bool "kernel headers version 3.7.x are no longer supported" - select BR2_KERNEL_HEADERS_3_10 + select BR2_KERNEL_HEADERS_3_4 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. - As an alternative, version 3.10.x of the headers have been + As an alternative, version 3.4.x of the headers have been automatically selected in your configuration. config BR2_PACKAGE_VALA @@ -1858,22 +2178,22 @@ config BR2_KERNEL_HEADERS_3_1 config BR2_KERNEL_HEADERS_3_3 bool "kernel headers version 3.3.x are no longer supported" - select BR2_KERNEL_HEADERS_3_4 + select BR2_KERNEL_HEADERS_3_2 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. - As an alternative, version 3.4.x of the headers have been + As an alternative, version 3.2.x of the headers have been automatically selected in your configuration. config BR2_KERNEL_HEADERS_3_5 bool "kernel headers version 3.5.x are no longer supported" - select BR2_KERNEL_HEADERS_3_10 + select BR2_KERNEL_HEADERS_3_4 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. - As an alternative, version 3.10.x of the headers have been + As an alternative, version 3.4.x of the headers have been automatically selected in your configuration. config BR2_GDB_VERSION_7_2 diff --git a/bsp/buildroot/DEVELOPERS b/bsp/buildroot/DEVELOPERS new file mode 100644 index 00000000..09a0a6e8 --- /dev/null +++ b/bsp/buildroot/DEVELOPERS @@ -0,0 +1,1696 @@ +# 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/nginx-naxsi/ +F: package/python-mutagen/ +F: package/sngrep/ + +N: Alex Suykov +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 Varnin +F: package/liblog4c-localtime/ + +N: Alexandre Belloni +F: package/tz/ + +N: Alistair Francis +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: package/openal/ +F: package/p7zip/ +F: package/wine/ + +N: Andrew Ruder +F: package/expect/ + +N: Andy Kennedy +F: package/libunwind/ + +N: Angelo Compagnucci +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: Anthony Viallard +F: package/gnuplot/ + +N: Antoine Ténart +F: package/wf111/ + +N: ARC Maintainers +F: arch/Config.in.arc + +N: Ariel D'Alessandro +F: package/axfsutils/ +F: package/mali-t76x/ + +N: Arnaud Aujon +F: package/espeak/ + +N: Arnout Vandecappelle +F: package/freescale-imx/firmware-imx/ +F: package/freescale-imx/imx-lib/ +F: package/gstreamer/gst-fsl-plugins/ +F: package/owfs/ +F: package/python-bottle/ +F: package/sqlcipher/ +F: package/stress/ + +N: Ash Charles +F: package/pru-software-support/ +F: package/ti-cgt-pru/ + +N: Assaf Inbal +F: package/lbase64/ +F: package/luabitop/ +F: package/luacrypto/ +F: package/luaexpatutils/ +F: package/luaposix/ +F: package/luasec/ +F: package/lua-ev/ +F: package/orbit/ + +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: package/ebtables/ +F: package/openipmi/ + +N: Ben Boeckel +F: package/taskd/ + +N: Benjamin Kamath +F: package/lapack/ + +N: Bernd Kuhls +F: package/apache/ +F: package/apr/ +F: package/apr-util/ +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/freeswitch/ +F: package/ffmpeg/ +F: package/giflib/ +F: package/glmark2/ +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/libogg/ +F: package/libopenh264/ +F: package/libpciaccess/ +F: package/libplatform/ +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/libvorbis/ +F: package/libvpx/ +F: package/libyuv/ +F: package/mesa3d/ +F: package/minidlna/ +F: package/mjpg-streamer/ +F: package/mplayer/ +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-time-hires/ +F: package/perl-timedate/ +F: package/perl-uri/ +F: package/perl-www-robotrules/ +F: package/pixman/ +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-pyicu/ +F: package/python-pylru/ +F: package/python-slob/ +F: package/rtmpdump/ +F: package/softether/ +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/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: Bryan Brinsko +F: package/pps-tools/ + +N: Carlo Caione +F: package/sunxi-boards/ + +N: Carlos Santos +F: package/gmock/ +F: package/gtest/ +F: package/libpam-radius-auth/ +F: package/libpam-tacplus/ +F: package/perl-file-util/ +F: package/util-linux/ + +N: Carsten Schoenert +F: package/dvbsnoop/ +F: package/libdvbsi/ +F: package/libsvg/ +F: package/libsvg-cairo/ + +N: Chris Packham +F: package/eventlog/ +F: package/micropython/ +F: package/micropython-lib/ +F: package/syslog-ng/ + +N: Christian Stewart +F: linux/linux-ext-aufs.mk +F: package/aufs/ +F: package/aufs-util/ +F: package/batman-adv/ +F: package/docker-containerd/ +F: package/docker-engine/ +F: package/mosh/ +F: package/rtl8821au/ +F: package/runc/ + +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: 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/sepolgen/ +F: package/ustr/ + +N: Cédric Chépied +F: package/znc/ + +N: Cyril Bur +F: arch/Config.in.powerpc +F: package/kvm-unit-tests + +N: Dagg Stompler +F: package/libamcodec/ +F: package/odroid-mali/ +F: package/odroid-scripts/ + +N: Damien Lanson +F: package/libvdpau/ +F: package/log4cpp/ + +N: Daniel Nyström +F: package/e2tools/ +F: package/fbgrab/ + +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: Dave Skok +F: package/ola/ + +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 Lechner +F: board/lego/ev3/ +F: configs/lego_ev3_defconfig +F: linux/linux-ext-ev3dev-linux-drivers.mk +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: Ed Swierk +F: package/xxhash/ + +N: Eric Le Bihan +F: package/adwaita-icon-theme/ +F: package/darkhttpd/ +F: package/eudev/ +F: package/hicolor-icon-theme/ +F: package/jemalloc/ +F: package/ninja/ +F: package/skalibs/ +F: package/smack/ +F: package/xvisor/ + +N: Eric Limpens +F: package/pifmrds/ +F: package/ympd/ + +N: Erico Nunes +F: package/acpica/ +F: package/acpitool/ +F: package/efibootmgr/ +F: package/efivar/ +F: package/fwts/ +F: package/spi-tools/ +F: package/xdotool/ + +N: Erik Stromdahl +F: package/mxsldr/ + +N: Ernesto L. Williams Jr +F: package/szip/ + +N: Evan Zelkowitz +F: package/sdl_gfx/ + +N: Ezequiel Garcia +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/imx6ulpico_defconfig +F: configs/mx6cubox_defconfig +F: configs/mx6sx_udoo_neo_defconfig +F: configs/mx6udoo_defconfig +F: configs/wandboard_defconfig +F: configs/warp7_defconfig + +N: Fabio Porcedda +F: package/netsurf-buildsystem/ + +N: Fabrice Fontaine +F: package/domoticz/ +F: package/openzwave/ + +N: Fabrice Fontaine +F: package/alljoyn/ +F: package/alljoyn-base/ +F: package/alljoyn-tcl/ +F: package/alljoyn-tcl-base/ +F: package/gtksourceview/ +F: package/gssdp/ +F: package/gupnp/ +F: package/gupnp-dlna/ +F: package/gupnp-tools/ +F: package/igd2-for-linux/ +F: package/minissdpd/ +F: package/tinycbor/ +F: package/tinydtls/ + +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/botan/ +F: package/cosmo/ +F: package/dado/ +F: package/ficl/ +F: package/gdbm/ +F: package/libtomcrypt/ +F: package/libtommath/ +F: package/libump/ +F: package/linenoise/ +F: package/ljlinenoise/ +F: package/lpeg/ +F: package/lpty/ +F: package/lrandom/ +F: package/lsqlite3/ +F: package/lua* +F: package/lunit/ +F: package/lzlib/ +F: package/moarvm/ +F: package/perl* +F: package/pkg-perl.mk +F: package/pkg-luarocks.mk +F: package/qemu/ +F: package/tekui/ +F: support/scripts/scancpan + +N: Frank Hunleth +F: package/am335x-pru-package/ +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: 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: package/fdk-aac/ +F: package/httping/ +F: package/iozone/ +F: package/ocrad/ +F: package/webp/ + +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: Guillaume Gardet +F: package/c-icap/ +F: package/c-icap-modules/ +F: package/sdl2/ + +N: Guillaume William Brs +F: package/liquid-dsp/ + +N: Gustavo Zacarias +F: arch/Config.in.powerpc +F: board/qemu/ +F: configs/qemu_* +F: package/argp-standalone/ +F: package/arptables/ +F: package/audiofile/ +F: package/autossh/ +F: package/bitstream-vera/ +F: package/blktrace/ +F: package/bmon/ +F: package/btrfs-progs/ +F: package/c-ares/ +F: package/cantarell/ +F: package/check/ +F: package/collectd/ +F: package/comix-cursors/ +F: package/connman-gtk/ +F: package/conntrack-tools/ +F: package/cppdb/ +F: package/crda/ +F: package/cryptodev-linux/ +F: package/dbus-cpp/ +F: package/debianutils/ +F: package/dt/ +F: package/exfat/ +F: package/exfat-utils/ +F: package/f2fs-tools/ +F: package/faad2/ +F: package/fping/ +F: package/ftop/ +F: package/gcr/ +F: package/geoip/ +F: package/gpsd/ +F: package/granite/ +F: package/graphite2/ +F: package/gsettings-desktop-schemas/ +F: package/gstreamer1/ +F: package/hans/ +F: package/haveged/ +F: package/heimdal/ +F: package/hostapd/ +F: package/ifupdown/ +F: package/inconsolata/ +F: package/iodine/ +F: package/iperf3/ +F: package/ipset/ +F: package/iw/ +F: package/jhead/ +F: package/jquery-keyboard/ +F: package/kompexsqlite/ +F: package/kvmtool/ +F: package/lame/ +F: package/lft/ +F: package/libao/ +F: package/libcroco/ +F: package/libcue/ +F: package/libcuefile/ +F: package/libepoxy/ +F: package/libgee/ +F: package/libglib2/ +F: package/libgtk2/ +F: package/libgtk3/ +F: package/libmcrypt/ +F: package/libmemcached/ +F: package/libmhash/ +F: package/libmnl/ +F: package/libmng/ +F: package/libmpdclient/ +F: package/libnetfilter_acct/ +F: package/libnetfilter_conntrack/ +F: package/libnetfilter_cthelper/ +F: package/libnetfilter_cttimeout/ +F: package/libnetfilter_log/ +F: package/libnetfilter_queue/ +F: package/libnfnetlink/ +F: package/libnl/ +F: package/liboping/ +F: package/libreplaygain/ +F: package/libsamplerate/ +F: package/libtorrent/ +F: package/libuv/ +F: package/lksctp-tools/ +F: package/lshw/ +F: package/lz4/ +F: package/lzip/ +F: package/mbedtls/ +F: package/mcrypt/ +F: package/memcached/ +F: package/minizip/ +F: package/mpd/ +F: package/mpv/ +F: package/mtr/ +F: package/musepack/ +F: package/ncmpc/ +F: package/net-tools/ +F: package/netstat-nat/ +F: package/nettle/ +F: package/nfacct/ +F: package/nftables/ +F: package/nload/ +F: package/nmap/ +F: package/noip/ +F: package/norm/ +F: package/obsidian-cursors/ +F: package/ocf-linux/ +F: package/opencore-amr/ +F: package/openswan/ +F: package/openvpn/ +F: package/opusfile/ +F: package/p11-kit/ +F: package/p910nd/ +F: package/pax-utils/ +F: package/procrank_linux/ +F: package/php-* +F: package/pkgconf/ +F: package/privoxy/ +F: package/protobuf-c/ +F: package/ptpd/ +F: package/ptpd2/ +F: package/pwgen/ +F: package/ramspeed/ +F: package/rng-tools/ +F: package/rtorrent/ +F: package/samba4/ +F: package/sbc/ +F: package/snmppp/ +F: package/sox/ +F: package/spidev_test/ +F: package/squid/ +F: package/start-stop-daemon/ +F: package/swig/ +F: package/thrift/ +F: package/twolame/ +F: package/ulogd/ +F: package/unionfs/ +F: package/unrar/ +F: package/ushare/ +F: package/vala/ +F: package/vorbis-tools/ +F: package/wavpack/ +F: package/wayland-protocols/ +F: package/webkitgtk/ +F: package/whois/ +F: package/wireshark/ +F: package/wpa_supplicant/ +F: package/wpan-tools/ +F: package/x11r7/xdriver_xf86-video-qxl/ +F: package/xtables-addons/ +F: package/zd1211-firmware/ + +N: Gwenhael Goavec-Merou +F: package/gnuradio/ +F: package/gr-osmosdr/ +F: package/libusbgx/ +F: package/python-cheetah/ +F: package/python-markdown/ +F: package/python-pyqt/ +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: 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 Pedersen +F: package/zip/ + +N: Jan Viktorin +F: package/python-pexpect/ +F: package/python-ptyprocess/ +F: package/zynq-boot-bin/ + +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: Joel Stanley +F: package/pdbg/ + +N: Johan Derycke +F: package/python-libconfig/ + +N: Johan Oudinet +F: package/ejabberd/ +F: package/erlang-goldrush/ +F: package/erlang-lager/ +F: package/erlang-p1-cache-tab/ +F: package/erlang-p1-iconv/ +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-yaml/ +F: package/erlang-p1-zlib/ +F: package/nginx-dav-ext/ + +N: John Stile +F: package/dhcpcd/ + +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: Joris Lijssens +F: package/emlog/ +F: package/libcoap/ +F: package/libnet/ +F: package/libuio/ +F: package/netsniff-ng/ +F: package/rabbitmq-c/ + +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/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: Justin Maggard +F: package/dtach/ + +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: Jörg Krause +F: package/bctoolbox/ +F: package/libshout/ +F: package/libupnpp/ +F: package/luv/ +F: package/luvi/ +F: package/mp4v2/ +F: package/mpd/ +F: package/shairport-sync/ +F: package/swupdate/ +F: package/upmpdcli/ +F: package/wavemon/ + +N: Karoly Kasza +F: package/irqbalance/ +F: package/openvmtools/ + +N: Kelvin Cheung +F: package/cpuload/ +F: package/bwm-ng/ +F: package/ramsmp/ + +N: Laurent Cans +F: package/aircrack-ng/ + +N: Lee Jones +F: boot/afboot-stm32/ + +N: Lionel Flandrin +F: package/python-babel/ +F: package/python-flask/ +F: package/python-flask-babel/ +F: package/python-gunicorn/ + +N: Lionel Orry +F: package/mongrel2/ + +N: Lothar Felten +F: package/ti-sgx-demos/ +F: package/ti-sgx-km/ +F: package/ti-sgx-um/ + +N: Luca Ceresoli +F: board/olimex/a20_olinuxino/ +F: configs/olimex_a20_olinuxino_* +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: 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/easydbus/ +F: package/rs485conf/ +F: package/turbolua/ + +N: Marek Belisko +F: package/libatasmart/ +F: package/polkit/ +F: package/sg3_utils/ +F: package/udisks/ + +N: Markos Chandras +F: package/harfbuzz/ +F: package/libsecret/ + +N: Martin Bark +F: package/ca-certificates/ +F: package/tzdata/ +F: package/zic/ + +N: Martin Hicks +F: package/cryptsetup/ + +N: Mathieu Audat +F: board/technologic/ts4900/ +F: configs/ts4900_defconfig +F: package/ts4900-fpga/ + +N: Matt Weber +F: package/bc/ +F: package/eigen/ +F: package/fmc/ +F: package/fmlib/ +F: package/igmpproxy/ +F: package/iputils/ +F: package/omniorb/ +F: package/python-ipy/ +F: package/python-posix-ipc/ +F: package/python-pypcap/ +F: package/python-pyrex/ +F: package/raptor/ +F: package/setools/ +F: package/simicsfs/ +F: package/smcroute/ +F: package/tclap/ + +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 Rommel +F: package/aiccu/ +F: package/knock/ +F: package/python-crc16/ +F: package/python-pyzmq/ + +N: Michael Trimarchi +F: package/python-spidev/ + +N: Mikhail Boiko +F: package/libfribidi/ + +N: Morgan Delestre +F: package/monkey/ + +N: Murat Demirten +F: package/jpeg-turbo/ +F: package/libgeotiff/ + +N: Nathan Lynch +F: package/chrony/ + +N: Nathaniel Roach +F: package/bandwidthd/ +F: package/libgudev/ + +N: Naumann Andreas +F: package/evemu/ +F: package/libevdev/ + +N: Nicolas Serafini +F: package/exiv2/ +F: package/nvidia-tegra23/nvidia-tegra23-binaries/ +F: package/nvidia-tegra23/nvidia-tegra23-codecs/ + +N: Nimai Mahajan +F: package/libucl/ + +N: Niranjan Reddy +F: package/cgroupfs-mount/ + +N: Noé Rubinstein +F: package/tpm-tools/ +F: package/trousers/ + +N: Olaf Rempel +F: package/ctorrent/ + +N: Oli Vogt +F: package/python-django/ +F: package/python-flup/ + +N: Olivier Matz +F: package/python-pyelftools/ + +N: Olivier Schonken +F: package/ijs/ +F: package/poppler/ +F: package/qpdf/ +F: package/openjpeg/ + +N: Olivier Singla +F: package/shellinabox/ + +N: Parnell Springmeyer +F: package/scrypt/ + +N: Pascal Huerst +F: package/google-breakpad/ + +N: Patrick Gerber +F: package/yavta/ + +N: Patrick Ziegler +F: package/aespipe/ +F: package/libqmi/ + +N: Paul Cercueil +F: package/libiio/ + +N: Paul Cercueil +F: package/lightning/ + +N: Pedro Aguilar +F: package/libunistring/ + +N: Peter Korsgaard +F: board/orangepi/ +F: configs/orangepi_pc_defconfig +F: package/flickcurl/ +F: package/libfastjson/ +F: package/lzop/ +F: package/mosquitto/ +F: package/python-alsaaudio/ +F: package/python-enum/ +F: package/python-enum34/ +F: package/python-ipaddr/ +F: package/python-pam/ +F: package/python-psutil/ +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/ghostscript-fonts/ +F: package/gstreamer1/gst1-validate/ +F: package/libevdev/ +F: package/log4cplus/ +F: package/postgresql/ +F: package/qt5/ +F: package/racehound/ +F: package/wiringpi/ + +N: Peter Thompson +F: package/sdl2_gfx/ +F: package/sdl2_image/ +F: package/sdl2_ttf/ + +N: Petr Vorel +F: package/linux-backports/ +F: package/ltp-testsuite/ + +N: Phil Eichinger +F: package/libqrencode/ +F: package/psplash/ +F: package/sispmctl/ +F: package/zsh/ + +N: Philipp Claves +F: package/libassuan/ +F: package/libgpgme/ + +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 Floury +F: package/trace-cmd/ + +N: Pieter De Gendt +F: package/libvips/ + +N: Pieterjan Camerlynck +F: package/libdvbpsi/ +F: package/mraa/ + +N: Pranit Sirsat +F: package/paho-mqtt-c/ + +N: Qais Yousef +F: package/bellagio/ + +N: Rahul Bedarkar +F: package/cxxtest/ +F: package/gflags/ +F: package/glog/ +F: package/gssdp/ +F: package/gupnp/ +F: package/gupnp-av/ + +N: Rahul Jain +F: package/uhttpd/ +F: package/ustream-ssl/ + +N: Renaud Aubin +F: package/libhttpparser/ + +N: Ricardo Martincoski +F: package/atop/ + +N: Rhys Williams +F: package/lirc-tools/ + +N: Richard Braun +F: package/curlftpfs/ +F: package/tzdata/ + +N: Rico Bachmann +F: package/apr-util/ +F: package/subversion/ + +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/enlightenment/ +F: package/expedite/ +F: package/iqvlinux/ +F: package/liblinear/ +F: package/linux-syscall-support/ +F: package/mcelog/ +F: package/openpowerlink/ +F: package/stress-ng/ +F: package/terminology/ +F: package/upower/ +F: package/xenomai/ + +N: Romain Perier +F: package/amd-catalyst/ + +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/ + +N: Ryan Coe +F: package/inadyn/ +F: package/libite/ +F: package/mariadb/ + +N: Ryan Wilkins +F: package/biosdevname/ + +N: Rémi Rérolle +F: package/libfreeimage/ + +N: Sagaert Johan +F: package/git/ +F: package/gsl/ +F: package/jquery-mobile/ +F: package/libgsasl/ +F: package/qdecoder/ +F: package/qlibc/ + +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: Sebastien Bourdelin +F: package/atf/ +F: package/cppunit/ +F: package/kyua/ +F: package/lutok/ +F: package/yaml-cpp/ + +N: Sergio Prado +F: package/libgdiplus/ +F: package/mongodb/ +F: package/stella/ +F: package/tunctl/ +F: package/ubus/ + +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/sunxi-mali/ +F: package/ti-gfx/ + +N: Stefan Fröberg +F: package/elfutils/ +F: package/libtasn1/ +F: package/proxychains-ng/ +F: package/yasm/ + +N: Stephan Hoffmann +F: package/cache-calibrator/ +F: package/gtest/ +F: package/mtdev/ +F: package/mtdev2tuio/ +F: package/qtuio/ + +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/xorriso/ + +N: Steve Thomas +F: package/cloog/ +F: package/isl/ + +N: Steven Noonan +F: package/hwloc/ +F: package/powertop/ + +N: Sven Neumann +F: package/gstreamer1/gst1-libav/ + +N: Sven Neumann +F: package/glib-networking/ +F: package/libmms/ +F: package/orc/ + +N: Sébastien Szymanski +F: package/mmc-utils/ +F: package/python-flask-jsonrpc/ +F: package/python-flask-login/ + +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: support/scripts/size-stats +F: support/scripts/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/polarssl/ +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/sam-ba/ +F: package/scons/ +F: package/squashfs/ +F: package/wayland/ +F: package/weston/ +F: toolchain/ + +N: Tiago Brusamarello +F: package/aer-inject/ + +N: Tzu-Jung Lee +F: package/dropwatch/ +F: package/tstools/ + +N: Vanya Sergeev +F: package/lua-periphery/ + +N: Vicente Olivert Riera +F: arch/Config.in.mips +F: package/gnupg2/ +F: package/hidapi/ +F: package/libfm/ +F: package/libfm-extra/ +F: package/libksba/ +F: package/menu-cache/ +F: package/openblas/ +F: package/openmpi/ +F: package/pinentry/ +F: package/trinity/ + +N: Vincent Stehlé +F: package/i7z/ +F: package/msr-tools/ + +N: Vinicius Tinti +F: package/python-thrift/ + +N: Volkov Viacheslav +F: package/rfkill/ +F: package/v4l2grab/ +F: package/zbar/ + +N: Wade Berrier +F: package/ngrep/ + +N: Waldemar Brodkorb +F: arch/Config.in.bfin +F: arch/Config.in.m68k +F: arch/Config.in.or1k +F: arch/Config.in.sparc +F: package/uclibc/ +F: package/uclibc-ng-test/ +F: package/mksh/ + +N: Waldemar Rymarkiewicz +F: package/ccid/ +F: package/pcsc-lite/ + +N: Will Newton +F: package/enchant/ +F: package/erlang/ +F: package/libmicrohttpd/ +F: package/sysprof/ +F: package/time/ + +N: Will Newton +F: package/numactl/ + +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: package/cegui06/ +F: package/celt051/ +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/libseccomp/ +F: package/linux-tools/ +F: package/mesa3d-headers/ +F: package/mke2img/ +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: 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/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: support/scripts/scanpypi + +N: Zoltan Gyarmati +F: package/crudini/ +F: package/grantlee/ +F: package/python-configobj/ +F: package/python-iniparse/ +F: package/qjson/ +F: package/quazip/ +F: package/shapelib/ +F: package/tinc/ diff --git a/bsp/buildroot/Makefile b/bsp/buildroot/Makefile index 2bf55fcd..0308f9b5 100644 --- a/bsp/buildroot/Makefile +++ b/bsp/buildroot/Makefile @@ -2,7 +2,7 @@ # # Copyright (C) 1999-2005 by Erik Andersen # Copyright (C) 2006-2014 by the Buildroot developers -# Copyright (C) 2014-2016 by the Buildroot developers +# Copyright (C) 2014-2017 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 @@ -24,29 +24,71 @@ # 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) -# Trick for always running with a fixed umask -UMASK = 0022 -ifneq ($(shell umask),$(UMASK)) +# 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)) + +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 $(UMASK) && $(MAKE) --no-print-directory $(MAKECMDGOALS) + @umask $(REQ_UMASK) && \ + $(MAKE) -C $(CANONICAL_CURDIR) --no-print-directory \ + $(MAKECMDGOALS) $(EXTRAMAKEARGS) -else # umask +else # umask / $(CURDIR) / $(O) # This is our default rule, so must come first all: # Set and export the version string -export BR2_VERSION := 2016.08.1 +export BR2_VERSION := 2017.02 +# Actual time the release is cut (for reproducible builds) +BR2_VERSION_EPOCH = 1488315000 # Save running make version since it's clobbered by the make package RUNNING_MAKE_VERSION := $(MAKE_VERSION) @@ -86,7 +128,8 @@ export BR2_VERSION_FULL := $(BR2_VERSION)$(shell $(TOPDIR)/support/scripts/setlo noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconfig \ defconfig %_defconfig allyesconfig allnoconfig silentoldconfig release \ randpackageconfig allyespackageconfig allnopackageconfig \ - print-version olddefconfig + print-version olddefconfig distclean manual manual-html manual-split-html \ + manual-pdf manual-text manual-epub # Some global targets do not trigger a build, but are used to collect # metadata, or do various checks. When such targets are triggered, @@ -97,80 +140,63 @@ noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconf # 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-check \ - legal-info external-deps _external-deps \ - clean distclean help +nobuild_targets := source %-source source-check \ + 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 printvars ifeq ($(MAKECMDGOALS),) BR_BUILDING = y else ifneq ($(filter-out $(nobuild_targets),$(MAKECMDGOALS)),) BR_BUILDING = y endif -# Strip quotes and then whitespaces -qstrip = $(strip $(subst ",,$(1))) -#")) +# 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 := -# Variables for use in Make constructs -comma := , -empty := -space := $(empty) $(empty) +# Include some helper macros and variables +include support/misc/utils.mk -ifneq ("$(origin O)", "command line") -O := output -CONFIG_DIR := $(TOPDIR) +# 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 -# other packages might also support Linux-style out of tree builds -# with the O= syntax (E.G. BusyBox does). As make automatically -# forwards command line variable definitions those packages get very -# confused. Fix this by telling make to not do so -MAKEOVERRIDES = -# strangely enough O is still passed to submakes with MAKEOVERRIDES -# (with make 3.81 atleast), the only thing that changes is the output -# of the origin function (command line -> environment). -# Unfortunately some packages don't look at origin (E.G. uClibc 0.9.31+) -# To really make O go away, we have to override it. -override O := $(O) CONFIG_DIR := $(O) -# we need to pass O= everywhere we call back into the toplevel makefile -EXTRAMAKEARGS = O=$(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, so -# explictly throw away any output from 'cd' here. +# line doesn't affect the environment of $(shell ..) calls. export CDPATH := -BASE_DIR := $(shell mkdir -p $(O) && cd $(O) >/dev/null && pwd) + +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. -# On subsequent invocations of make, it is read in. It can still be overridden -# on the command line, therefore the file is re-created every time make is run. -# -# When BR2_EXTERNAL is set to an empty value (e.g. explicitly in command -# line), the .br-external file is removed and we point to -# support/dummy-external. This makes sure we can unconditionally include the -# Config.in and external.mk from the BR2_EXTERNAL directory. In this case, -# override is necessary so the user can clear BR2_EXTERNAL from the command -# line, but the dummy path is still used internally. +# 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 +BR2_EXTERNAL_FILE = $(BASE_DIR)/.br-external.mk -include $(BR2_EXTERNAL_FILE) -ifeq ($(BR2_EXTERNAL),) - override BR2_EXTERNAL = support/dummy-external - $(shell rm -f $(BR2_EXTERNAL_FILE)) -else - _BR2_EXTERNAL = $(shell cd $(BR2_EXTERNAL) >/dev/null 2>&1 && pwd) - ifeq ($(_BR2_EXTERNAL),) - $(error BR2_EXTERNAL='$(BR2_EXTERNAL)' does not exist, relative to $(TOPDIR)) - endif - override BR2_EXTERNAL := $(_BR2_EXTERNAL) - $(shell echo BR2_EXTERNAL ?= $(BR2_EXTERNAL) > $(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, @@ -201,11 +227,18 @@ 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_LICENSES_TXT_TARGET = $(LEGAL_INFO_DIR)/licenses.txt -LEGAL_LICENSES_TXT_HOST = $(LEGAL_INFO_DIR)/host-licenses.txt LEGAL_WARNINGS = $(LEGAL_INFO_DIR)/.warnings LEGAL_REPORT = $(LEGAL_INFO_DIR)/README +################################################################################ +# +# staging and target directories do NOT list these as +# dependencies anywhere else +# +################################################################################ +$(BUILD_DIR) $(TARGET_DIR) $(HOST_DIR) $(BINARIES_DIR) $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST): + @mkdir -p $@ + BR2_CONFIG = $(CONFIG_DIR)/.config # Pull in the user's configuration file @@ -215,9 +248,13 @@ endif # timezone and locale may affect build output ifeq ($(BR2_REPRODUCIBLE),y) -export TZ=UTC -export LANG=C -export LC_ALL=C +export TZ = UTC +export LANG = C +export LC_ALL = C +export GZIP = -n +BR2_VERSION_GIT_EPOCH = $(shell GIT_DIR=$(TOPDIR)/.git $(GIT) log -1 --format=%at) +export SOURCE_DATE_EPOCH = $(if $(wildcard $(TOPDIR)/.git),$(BR2_VERSION_GIT_EPOCH),$(BR2_VERSION_EPOCH)) +DEPENDENCIES_HOST_PREREQ += host-fakedate endif # To put more focus on warnings, be less verbose as default @@ -286,6 +323,7 @@ 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 @@ -364,6 +402,7 @@ unexport QMAKESPEC unexport TERMINFO unexport MACHINE unexport O +unexport GCC_COLORS GNU_HOST_NAME := $(shell support/gnuconfig/config.guess) @@ -383,6 +422,7 @@ KERNEL_ARCH := $(shell echo "$(ARCH)" | sed -e "s/-.*//" \ -e s/arm.*/arm/ -e s/sa110/arm/ \ -e s/aarch64.*/arm64/ \ -e s/bfin/blackfin/ \ + -e s/or1k/openrisc/ \ -e s/parisc64/parisc/ \ -e s/powerpc64.*/powerpc/ \ -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ @@ -392,6 +432,7 @@ KERNEL_ARCH := $(shell echo "$(ARCH)" | sed -e "s/-.*//" \ 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 @@ -435,9 +476,7 @@ all: world # Include legacy before the other things, because package .mk files # may rely on it. -ifneq ($(BR2_DEPRECATED),y) include Makefile.legacy -endif include package/Makefile.in include support/dependencies/dependencies.mk @@ -458,7 +497,15 @@ include boot/common.mk include linux/linux.mk include fs/common.mk -include $(BR2_EXTERNAL)/external.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 @@ -498,21 +545,9 @@ prepare: $(BUILD_DIR)/buildroot-config/auto.conf world: target-post-image -rebuild: $(foreach pkg,$(PACKAGES),$(pkg)-clean-for-rebuild) world - .PHONY: all world toolchain dirs clean distclean source outputmakefile \ legal-info legal-info-prepare legal-info-clean printvars help \ - list-defconfigs target-finalize target-post-image source-check \ - rebuild - -################################################################################ -# -# staging and target directories do NOT list these as -# dependencies anywhere else -# -################################################################################ -$(BUILD_DIR) $(TARGET_DIR) $(HOST_DIR) $(BINARIES_DIR) $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST): - @mkdir -p $@ + list-defconfigs target-finalize target-post-image source-check # Populating the staging with the base directories is handled by the skeleton package $(STAGING_DIR): @@ -623,7 +658,7 @@ target-finalize: $(PACKAGES) $(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 \ + 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 @@ -638,23 +673,20 @@ endif 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 + rmdir $(TARGET_DIR)/usr/share 2>/dev/null || true $(STRIP_FIND_CMD) | xargs -0 $(STRIPCMD) 2>/dev/null || true - if test -d $(TARGET_DIR)/lib/modules; then \ - find $(TARGET_DIR)/lib/modules -type f -name '*.ko' -print0 | \ - xargs -0 -r $(KSTRIPCMD); fi # See http://sourceware.org/gdb/wiki/FAQ, "GDB does not see any threads # besides the one in which crash occurred; or SIGTRAP kills my program when # I set a breakpoint" ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) - find $(TARGET_DIR)/lib -type f -name 'libpthread*.so*' | \ + find $(TARGET_DIR)/lib/ -type f -name 'libpthread*.so*' | \ xargs -r $(STRIPCMD) $(STRIP_STRIP_DEBUG) endif # Valgrind needs ld.so with enough information, so only strip # debugging symbols. - find $(TARGET_DIR)/lib -type f -name 'ld-*.so*' | \ + find $(TARGET_DIR)/lib/ -type f -name 'ld-*.so*' | \ xargs -r $(STRIPCMD) $(STRIP_STRIP_DEBUG) test -f $(TARGET_DIR)/etc/ld.so.conf && \ { echo "ERROR: we shouldn't have a /etc/ld.so.conf file"; exit 1; } || true @@ -741,7 +773,7 @@ graph-depends: graph-depends-requirements @$(INSTALL) -d $(GRAPHS_DIR) @cd "$(CONFIG_DIR)"; \ $(TOPDIR)/support/scripts/graph-depends $(BR2_GRAPH_DEPS_OPTS) \ - -o $(GRAPHS_DIR)/$(@).dot + --direct -o $(GRAPHS_DIR)/$(@).dot dot $(BR2_GRAPH_DOT_OPTS) -T$(BR_GRAPH_OUT) \ -o $(GRAPHS_DIR)/$(@).$(BR_GRAPH_OUT) \ $(GRAPHS_DIR)/$(@).dot @@ -769,6 +801,9 @@ endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y) 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)" \ @@ -784,23 +819,23 @@ COMMON_CONFIG_ENV = \ KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \ KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \ BR2_CONFIG=$(BR2_CONFIG) \ - BR2_EXTERNAL=$(BR2_EXTERNAL) \ HOST_GCC_VERSION="$(HOSTCC_VERSION)" \ + BUILD_DIR=$(BUILD_DIR) \ SKIP_LEGACY= -xconfig: $(BUILD_DIR)/buildroot-config/qconf outputmakefile +xconfig: $(BUILD_DIR)/buildroot-config/qconf prepare-kconfig @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) -gconfig: $(BUILD_DIR)/buildroot-config/gconf outputmakefile +gconfig: $(BUILD_DIR)/buildroot-config/gconf prepare-kconfig @$(COMMON_CONFIG_ENV) srctree=$(TOPDIR) $< $(CONFIG_CONFIG_IN) -menuconfig: $(BUILD_DIR)/buildroot-config/mconf outputmakefile +menuconfig: $(BUILD_DIR)/buildroot-config/mconf prepare-kconfig @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) -nconfig: $(BUILD_DIR)/buildroot-config/nconf outputmakefile +nconfig: $(BUILD_DIR)/buildroot-config/nconf prepare-kconfig @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) -config: $(BUILD_DIR)/buildroot-config/conf outputmakefile +config: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) # For the config targets that automatically select options, we pass @@ -808,22 +843,22 @@ config: $(BUILD_DIR)/buildroot-config/conf outputmakefile # no values are set for the legacy options so a subsequent oldconfig # will query them. Therefore, run an additional olddefconfig. -oldconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +oldconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig @$(COMMON_CONFIG_ENV) $< --oldconfig $(CONFIG_CONFIG_IN) -randconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +randconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --randconfig $(CONFIG_CONFIG_IN) @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null -allyesconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +allyesconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --allyesconfig $(CONFIG_CONFIG_IN) @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null -allnoconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +allnoconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --allnoconfig $(CONFIG_CONFIG_IN) @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null -randpackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +randpackageconfig: $(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 \ @@ -831,7 +866,7 @@ randpackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile @rm -f $(CONFIG_DIR)/.config.nopkg @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null -allyespackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +allyespackageconfig: $(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 \ @@ -839,7 +874,7 @@ allyespackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile @rm -f $(CONFIG_DIR)/.config.nopkg @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null -allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +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 \ @@ -847,25 +882,24 @@ allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile @rm -f $(CONFIG_DIR)/.config.nopkg @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null -silentoldconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +silentoldconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig $(COMMON_CONFIG_ENV) $< --silentoldconfig $(CONFIG_CONFIG_IN) -olddefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +olddefconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig $(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) -defconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +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 $(TOPDIR)/configs/%_defconfig outputmakefile - @$(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$(TOPDIR)/configs/$@ \ - $< --defconfig=$(TOPDIR)/configs/$@ $(CONFIG_CONFIG_IN) +%_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))) -%_defconfig: $(BUILD_DIR)/buildroot-config/conf $(BR2_EXTERNAL)/configs/%_defconfig outputmakefile - @$(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$(BR2_EXTERNAL)/configs/$@ \ - $< --defconfig=$(BR2_EXTERNAL)/configs/$@ $(CONFIG_CONFIG_IN) - -savedefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile +savedefconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig @$(COMMON_CONFIG_ENV) $< \ --savedefconfig=$(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) \ $(CONFIG_CONFIG_IN) @@ -887,6 +921,13 @@ 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 @@ -904,13 +945,10 @@ clean: $(LEGAL_INFO_DIR) $(GRAPHS_DIR) distclean: clean -ifeq ($(DL_DIR),$(TOPDIR)/dl) - rm -rf $(DL_DIR) -endif -ifeq ($(O),output) +ifeq ($(O),$(CURDIR)/output) rm -rf $(O) endif - rm -rf $(BR2_CONFIG) $(CONFIG_DIR)/.config.old $(CONFIG_DIR)/..config.tmp \ + rm -rf $(TOPDIR)/dl $(BR2_CONFIG) $(CONFIG_DIR)/.config.old $(CONFIG_DIR)/..config.tmp \ $(CONFIG_DIR)/.auto.deps $(BR2_EXTERNAL_FILE) help: @@ -948,7 +986,10 @@ help: @echo ' -depends - Build '\''s dependencies' @echo ' -configure - Build up to the configure step' @echo ' -build - Build up to the build step' + @echo ' -show-depends - List packages on which depends' + @echo ' -show-rdepends - 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' @@ -982,17 +1023,34 @@ help: @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. list-defconfigs: - @echo 'Built-in configs:' - @$(foreach b, $(sort $(notdir $(wildcard $(TOPDIR)/configs/*_defconfig))), \ - printf " %-35s - Build for %s\\n" $(b) $(b:_defconfig=);) -ifneq ($(wildcard $(BR2_EXTERNAL)/configs/*_defconfig),) - @echo - @echo 'User-provided configs:' - @$(foreach b, $(sort $(notdir $(wildcard $(BR2_EXTERNAL)/configs/*_defconfig))), \ - printf " %-35s - Build for %s\\n" $(b) $(b:_defconfig=);) -endif - @echo + $(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) @@ -1011,8 +1069,8 @@ print-version: @echo $(BR2_VERSION_FULL) include docs/manual/manual.mk --include $(BR2_EXTERNAL)/docs/*/*.mk +-include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(dir)/docs/*/*.mk) .PHONY: $(noconfig_targets) -endif #umask +endif #umask / $(CURDIR) / $(O) diff --git a/bsp/buildroot/Makefile.legacy b/bsp/buildroot/Makefile.legacy index 764cfcd1..800c0892 100644 --- a/bsp/buildroot/Makefile.legacy +++ b/bsp/buildroot/Makefile.legacy @@ -4,9 +4,6 @@ # 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. -# -# This file is not included if BR2_DEPRECATED is selected, so it is possible -# to bypass the errors (although that's usually a bad idea). ifeq ($(BR2_LEGACY),y) $(error "You have legacy configuration in your .config! Please check your configuration.") diff --git a/bsp/buildroot/arch/Config.in b/bsp/buildroot/arch/Config.in index 3caca158..7149b2cb 100644 --- a/bsp/buildroot/arch/Config.in +++ b/bsp/buildroot/arch/Config.in @@ -159,6 +159,13 @@ config BR2_nios2 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 @@ -197,16 +204,6 @@ config BR2_sh http://www.hitachi.com/ http://en.wikipedia.org/wiki/SuperH -config BR2_sh64 - bool "SuperH64" - depends on BR2_DEPRECATED_SINCE_2015_05 - select BR2_ARCH_HAS_MMU_MANDATORY - help - SuperH64 (or SH) is a 64-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 @@ -364,14 +361,10 @@ if BR2_arcle || BR2_arceb source "arch/Config.in.arc" endif -if BR2_arm || BR2_armeb +if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be source "arch/Config.in.arm" endif -if BR2_aarch64 || BR2_aarch64_be -source "arch/Config.in.aarch64" -endif - if BR2_bfin source "arch/Config.in.bfin" endif @@ -392,11 +385,15 @@ 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_sh || BR2_sh64 +if BR2_sh source "arch/Config.in.sh" endif diff --git a/bsp/buildroot/arch/Config.in.aarch64 b/bsp/buildroot/arch/Config.in.aarch64 deleted file mode 100644 index 34cd409a..00000000 --- a/bsp/buildroot/arch/Config.in.aarch64 +++ /dev/null @@ -1,7 +0,0 @@ -config BR2_ARCH - default "aarch64" if BR2_aarch64 - default "aarch64_be" if BR2_aarch64_be - -config BR2_ENDIAN - default "LITTLE" if BR2_aarch64 - default "BIG" if BR2_aarch64_be diff --git a/bsp/buildroot/arch/Config.in.arm b/bsp/buildroot/arch/Config.in.arm index ee612f50..2617976f 100644 --- a/bsp/buildroot/arch/Config.in.arm +++ b/bsp/buildroot/arch/Config.in.arm @@ -31,6 +31,10 @@ config BR2_ARM_CPU_HAS_VFPV4 bool select BR2_ARM_CPU_HAS_VFPV3 +config BR2_ARM_CPU_HAS_FP_ARMV8 + bool + select BR2_ARM_CPU_HAS_VFPV4 + config BR2_ARM_CPU_HAS_ARM bool @@ -55,9 +59,11 @@ config BR2_ARM_CPU_ARMV7A config BR2_ARM_CPU_ARMV7M bool +config BR2_ARM_CPU_ARMV8 + bool + choice prompt "Target Architecture Variant" - depends on BR2_arm || BR2_armeb default BR2_arm926t help Specific CPU variant to use @@ -68,12 +74,14 @@ config BR2_arm920t select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_ARMV4 select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 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 + depends on !BR2_ARCH_IS_64 config BR2_arm926t bool "arm926t" select BR2_ARM_CPU_HAS_ARM @@ -81,12 +89,14 @@ config BR2_arm926t select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_ARMV5 select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 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 + depends on !BR2_ARCH_IS_64 config BR2_arm1136jf_s bool "arm1136jf-s" select BR2_ARM_CPU_HAS_ARM @@ -94,12 +104,14 @@ config BR2_arm1136jf_s select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_ARMV6 select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 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 + depends on !BR2_ARCH_IS_64 config BR2_arm1176jzf_s bool "arm1176jzf-s" select BR2_ARM_CPU_HAS_ARM @@ -107,6 +119,7 @@ config BR2_arm1176jzf_s select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_ARMV6 select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 config BR2_arm11mpcore bool "mpcore" select BR2_ARM_CPU_HAS_ARM @@ -114,6 +127,7 @@ config BR2_arm11mpcore select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_ARMV6 select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 config BR2_cortex_a5 bool "cortex-A5" select BR2_ARM_CPU_HAS_ARM @@ -122,6 +136,7 @@ config BR2_cortex_a5 select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7A select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 config BR2_cortex_a7 bool "cortex-A7" select BR2_ARM_CPU_HAS_ARM @@ -130,6 +145,7 @@ config BR2_cortex_a7 select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7A select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 config BR2_cortex_a8 bool "cortex-A8" select BR2_ARM_CPU_HAS_ARM @@ -138,6 +154,7 @@ config BR2_cortex_a8 select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7A select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 config BR2_cortex_a9 bool "cortex-A9" select BR2_ARM_CPU_HAS_ARM @@ -146,6 +163,7 @@ config BR2_cortex_a9 select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7A select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 config BR2_cortex_a12 bool "cortex-A12" select BR2_ARM_CPU_HAS_ARM @@ -154,6 +172,7 @@ config BR2_cortex_a12 select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7A select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 config BR2_cortex_a15 bool "cortex-A15" select BR2_ARM_CPU_HAS_ARM @@ -162,6 +181,7 @@ config BR2_cortex_a15 select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7A select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 config BR2_cortex_a17 bool "cortex-A17" select BR2_ARM_CPU_HAS_ARM @@ -170,41 +190,73 @@ config BR2_cortex_a17 select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7A select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 +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_ARMV8 + 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_ARMV8 + select BR2_ARCH_HAS_MMU_OPTIONAL +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_ARMV8 + select BR2_ARCH_HAS_MMU_OPTIONAL config BR2_cortex_m3 bool "cortex-M3" select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7M + depends on !BR2_ARCH_IS_64 config BR2_cortex_m4 bool "cortex-M4" select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_ARMV7M + depends on !BR2_ARCH_IS_64 config BR2_fa526 bool "fa526/626" select BR2_ARM_CPU_HAS_ARM select BR2_ARM_CPU_ARMV4 select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 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 + depends on !BR2_ARCH_IS_64 config BR2_strongarm bool "strongarm sa110/sa1100" select BR2_ARM_CPU_HAS_ARM select BR2_ARM_CPU_ARMV4 select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 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 + depends on !BR2_ARCH_IS_64 config BR2_iwmmxt bool "iwmmxt" select BR2_ARM_CPU_HAS_ARM select BR2_ARM_CPU_ARMV5 select BR2_ARCH_HAS_MMU_OPTIONAL + depends on !BR2_ARCH_IS_64 endchoice config BR2_ARM_ENABLE_NEON @@ -284,7 +336,7 @@ endchoice choice prompt "Floating point strategy" - depends on BR2_ARM_EABI || BR2_ARM_EABIHF + default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8 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 @@ -395,10 +447,25 @@ config BR2_ARM_FPU_NEON_VFPV4 example on Cortex-A5 and Cortex-A7, support for VFPv4 and NEON is optional. +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" @@ -434,12 +501,14 @@ config BR2_ARM_INSTRUCTIONS_THUMB2 endchoice config BR2_ARCH - default "arm" if BR2_arm - default "armeb" if BR2_armeb + 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 - default "BIG" if BR2_armeb + default "LITTLE" if (BR2_arm || BR2_aarch64) + default "BIG" if (BR2_armeb || BR2_aarch64_be) config BR2_GCC_TARGET_CPU default "arm920t" if BR2_arm920t @@ -465,11 +534,22 @@ config BR2_GCC_TARGET_CPU default "strongarm" if BR2_strongarm default "xscale" if BR2_xscale default "iwmmxt" if BR2_iwmmxt + default "cortex-a53" if (BR2_cortex_a53 && !BR2_ARCH_IS_64) + default "cortex-a53+fp" if (BR2_cortex_a53 && BR2_ARCH_IS_64 && BR2_ARM_FPU_FP_ARMV8) + default "cortex-a53+fp+simd" if (BR2_cortex_a53 && BR2_ARCH_IS_64 && BR2_ARM_FPU_NEON_FP_ARMV8) + default "cortex-a57" if (BR2_cortex_a57 && !BR2_ARCH_IS_64) + default "cortex-a57+fp" if (BR2_cortex_a57 && BR2_ARCH_IS_64 && BR2_ARM_FPU_FP_ARMV8) + default "cortex-a57+fp+simd" if (BR2_cortex_a57 && BR2_ARCH_IS_64 && BR2_ARM_FPU_NEON_FP_ARMV8) + default "cortex-a72" if (BR2_cortex_a72 && !BR2_ARCH_IS_64) + default "cortex-a72+fp" if (BR2_cortex_a72 && BR2_ARCH_IS_64 && BR2_ARM_FPU_FP_ARMV8) + default "cortex-a72+fp+simd" if (BR2_cortex_a72 && BR2_ARCH_IS_64 && BR2_ARM_FPU_NEON_FP_ARMV8) config BR2_GCC_TARGET_ABI - default "aapcs-linux" + default "aapcs-linux" if BR2_arm || BR2_armeb + default "lp64" if BR2_aarch64 || BR2_aarch64_be config BR2_GCC_TARGET_FPU + depends on BR2_arm || BR2_armeb default "vfp" if BR2_ARM_FPU_VFPV2 default "vfpv3" if BR2_ARM_FPU_VFPV3 default "vfpv3-d16" if BR2_ARM_FPU_VFPV3D16 @@ -477,6 +557,8 @@ config BR2_GCC_TARGET_FPU 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 "fp-armv8" if BR2_ARM_FPU_FP_ARMV8 + default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8 config BR2_GCC_TARGET_FLOAT_ABI default "soft" if BR2_ARM_SOFT_FLOAT diff --git a/bsp/buildroot/arch/Config.in.mips b/bsp/buildroot/arch/Config.in.mips index fda1a1d7..ce41e9e7 100644 --- a/bsp/buildroot/arch/Config.in.mips +++ b/bsp/buildroot/arch/Config.in.mips @@ -1,3 +1,21 @@ +# mips default CPU ISAs +config BR2_MIPS_CPU_MIPS32 + bool +config BR2_MIPS_CPU_MIPS32R2 + bool +config BR2_MIPS_CPU_MIPS32R5 + bool +config BR2_MIPS_CPU_MIPS32R6 + bool +config BR2_MIPS_CPU_MIPS64 + bool +config BR2_MIPS_CPU_MIPS64R2 + bool +config BR2_MIPS_CPU_MIPS64R5 + bool +config BR2_MIPS_CPU_MIPS64R6 + bool + choice prompt "Target Architecture Variant" depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el @@ -6,27 +24,78 @@ choice help Specific CPU variant to use - 64bit cabable: 64, 64r2, 64r6 - non-64bit capable: 32, 32r2, 32r6 + 64bit cabable: 64, 64r2, 64r5, 64r6 + non-64bit capable: 32, 32r2, 32r5, 32r6 config BR2_mips_32 - bool "mips 32" + bool "Generic MIPS32" depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32 config BR2_mips_32r2 - bool "mips 32r2" + bool "Generic MIPS32R2" depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 +config BR2_mips_32r5 + bool "Generic MIPS32R5" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 config BR2_mips_32r6 - bool "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 +config BR2_mips_m5150 + bool "M5150" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 +config BR2_mips_m6250 + bool "M6250" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R6 +config BR2_mips_p5600 + bool "P5600" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 +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 "mips 64" + bool "Generic MIPS64" depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64 config BR2_mips_64r2 - bool "mips 64r2" + bool "Generic MIPS64R2" depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R2 +config BR2_mips_64r5 + bool "Generic MIPS64R5" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R5 config BR2_mips_64r6 - bool "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 +config BR2_mips_p6600 + bool "P6600" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R6 endchoice @@ -70,10 +139,19 @@ config BR2_ENDIAN config BR2_GCC_TARGET_ARCH default "mips32" if BR2_mips_32 default "mips32r2" if BR2_mips_32r2 + 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 "mips64r5" if BR2_mips_64r5 default "mips64r6" if BR2_mips_64r6 + default "i6400" if BR2_mips_i6400 + default "p6600" if BR2_mips_p6600 config BR2_MIPS_OABI32 bool diff --git a/bsp/buildroot/arch/Config.in.or1k b/bsp/buildroot/arch/Config.in.or1k new file mode 100644 index 00000000..dba64a6a --- /dev/null +++ b/bsp/buildroot/arch/Config.in.or1k @@ -0,0 +1,5 @@ +config BR2_ARCH + default "or1k" + +config BR2_ENDIAN + default "BIG" diff --git a/bsp/buildroot/arch/Config.in.sh b/bsp/buildroot/arch/Config.in.sh index 1bdea37c..47052125 100644 --- a/bsp/buildroot/arch/Config.in.sh +++ b/bsp/buildroot/arch/Config.in.sh @@ -23,8 +23,7 @@ config BR2_ARCH default "sh4eb" if BR2_sh4eb default "sh4a" if BR2_sh4a default "sh4aeb" if BR2_sh4aeb - default "sh64" if BR2_sh64 config BR2_ENDIAN - default "LITTLE" if BR2_sh4 || BR2_sh4a || BR2_sh64 + default "LITTLE" if BR2_sh4 || BR2_sh4a default "BIG" if BR2_sh2a || BR2_sh4eb || BR2_sh4aeb diff --git a/bsp/buildroot/board/acmesystems/aria-g25/genimage.cfg b/bsp/buildroot/board/acmesystems/aria-g25/genimage.cfg new file mode 100644 index 00000000..2e2eb129 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/acmesystems/aria-g25/post-image.sh b/bsp/buildroot/board/acmesystems/aria-g25/post-image.sh new file mode 100755 index 00000000..2846f56d --- /dev/null +++ b/bsp/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/bsp/buildroot/board/acmesystems/aria-g25/readme.txt b/bsp/buildroot/board/acmesystems/aria-g25/readme.txt index 734ccd2d..cb9e9abf 100644 --- a/bsp/buildroot/board/acmesystems/aria-g25/readme.txt +++ b/bsp/buildroot/board/acmesystems/aria-g25/readme.txt @@ -1,51 +1,44 @@ +Acme Systems Aria G25 + Build instructions ================== -As a regular user configure and then build: +To build an image for the Aria G25 choose the configuration +corresponding to the Aria variant. -$ make acmesystems_aria_g25_128mb_defconfig (128MB RAM variant) - or... -$ make acmesystems_aria_g25_256mb_defconfig (256MB RAM 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 -Writing to the MicroSD card -=========================== +How to write the microSD card +============================= -Assuming your Aria G25 baseboard has a MicroSD socket, for example with -the Terra baseboard, you'll need a blank MicroSD (obviously) initialized -in a particular way to be able to boot from it. +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. -Assuming the card is seen as /dev/sdb in your PC/laptop/other device -you'll need to run the following commands as root or via sudo. +Write the bootable SD card image "sdcard.img" onto an SD card with +"dd" command: -Make sure all of the card partitions are unmounted before starting. + $ sudo dd if=output/images/sdcard.img of=/dev/sdX -First we'll need to create two partitions: +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. -# sfdisk -uM /dev/sdb < Preparing your rootfs ====================== @@ -113,7 +127,8 @@ Installing kernel image and DTB 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. Press the red button in the front pannel of ARM Juno +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/bsp/buildroot/board/armadeus/apf28/linux-3.12.config b/bsp/buildroot/board/armadeus/apf28/linux-4.4.config similarity index 100% rename from bsp/buildroot/board/armadeus/apf28/linux-3.12.config rename to bsp/buildroot/board/armadeus/apf28/linux-4.4.config index 137bd12c..cf389d80 100644 --- a/bsp/buildroot/board/armadeus/apf28/linux-3.12.config +++ b/bsp/buildroot/board/armadeus/apf28/linux-4.4.config @@ -117,8 +117,6 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set CONFIG_BACKLIGHT_PWM=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 @@ -183,3 +181,5 @@ CONFIG_NLS_ISO8859_1=y CONFIG_DEBUG_FS=y # CONFIG_CRYPTO_ANSI_CPRNG is not set # CONFIG_CRYPTO_HW is not set +CONFIG_FONTS=y +CONFIG_FONT_8x8=y diff --git a/bsp/buildroot/board/armadeus/apf51/linux-3.12.config b/bsp/buildroot/board/armadeus/apf51/linux-4.4.config similarity index 93% rename from bsp/buildroot/board/armadeus/apf51/linux-3.12.config rename to bsp/buildroot/board/armadeus/apf51/linux-4.4.config index 6c461b6f..6957b635 100644 --- a/bsp/buildroot/board/armadeus/apf51/linux-3.12.config +++ b/bsp/buildroot/board/armadeus/apf51/linux-4.4.config @@ -20,7 +20,7 @@ CONFIG_BSD_DISKLABEL=y # CONFIG_IOSCHED_CFQ is not set CONFIG_ARCH_MXC=y CONFIG_MXC_IRQ_PRIOR=y -CONFIG_MACH_IMX51_DT=y +CONFIG_SOC_IMX51=y CONFIG_ARM_THUMBEE=y CONFIG_PREEMPT=y CONFIG_AEABI=y @@ -111,7 +111,9 @@ 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 @@ -127,19 +129,24 @@ CONFIG_SPI_IMX=y CONFIG_SPI_SPIDEV=m CONFIG_GPIO_SYSFS=y CONFIG_GPIO_WM831X=m -CONFIG_POWER_SUPPLY=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 @@ -203,12 +210,13 @@ 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=m +CONFIG_USB_GADGET=y CONFIG_USB_GADGET_DEBUG_FILES=y CONFIG_USB_GADGET_DEBUG_FS=y CONFIG_USB_ETH=m @@ -227,12 +235,19 @@ 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 @@ -242,6 +257,7 @@ 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 @@ -249,10 +265,6 @@ CONFIG_ZISOFS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_COMPRESSION_OPTIONS=y -CONFIG_JFFS2_LZO=y -CONFIG_JFFS2_CMODE_NONE=y CONFIG_UBIFS_FS=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y diff --git a/bsp/buildroot/board/atmel/at91sam9260ek/linux-3.9.config b/bsp/buildroot/board/atmel/at91sam9260ek/linux-3.9.config deleted file mode 100644 index 48dc656f..00000000 --- a/bsp/buildroot/board/atmel/at91sam9260ek/linux-3.9.config +++ /dev/null @@ -1,98 +0,0 @@ -CONFIG_EXPERIMENTAL=y -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_KERNEL_LZO=y -# CONFIG_SWAP is not set -CONFIG_SYSVIPC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_BLK_DEV_INITRD=y -CONFIG_SLAB=y -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_AT91=y -CONFIG_ARCH_AT91SAM9260=y -CONFIG_ARCH_AT91SAM9260_SAM9XE=y -CONFIG_MACH_AT91SAM9260EK=y -CONFIG_MACH_CAM60=y -CONFIG_MACH_SAM9_L9260=y -CONFIG_MACH_AFEB9260=y -CONFIG_MACH_USB_A9260=y -CONFIG_MACH_QIL_A9260=y -CONFIG_MACH_CPU9260=y -CONFIG_MACH_FLEXIBITY=y -CONFIG_MACH_SNAPPER_9260=y -CONFIG_MACH_AT91SAM_DT=y -CONFIG_AT91_PROGRAMMABLE_CLOCKS=y -# CONFIG_ARM_THUMB is not set -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_ARM_APPENDED_DTB=y -CONFIG_ARM_ATAG_DTB_COMPAT=y -CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw" -CONFIG_FPE_NWFPE=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=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_IPV6 is not set -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_ATMEL=y -CONFIG_MTD_UBI=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_MACB=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_SERIO is not set -CONFIG_SERIAL_ATMEL=y -CONFIG_SERIAL_ATMEL_CONSOLE=y -# CONFIG_HW_RANDOM is not set -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_GPIO=y -# CONFIG_HWMON is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_NOWAYOUT=y -CONFIG_AT91SAM9X_WATCHDOG=y -# CONFIG_USB_HID is not set -CONFIG_USB=y -CONFIG_USB_DEVICEFS=y -CONFIG_USB_MON=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_DEBUG=y -CONFIG_USB_GADGET=y -CONFIG_USB_ZERO=m -CONFIG_USB_GADGETFS=m -CONFIG_USB_MASS_STORAGE=m -CONFIG_USB_G_SERIAL=m -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_AT91SAM9=y -CONFIG_EXT2_FS=y -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_UBIFS_FS=y -CONFIG_CRAMFS=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_ISO8859_1=y -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_LL=y diff --git a/bsp/buildroot/board/atmel/readme.txt b/bsp/buildroot/board/atmel/readme.txt index 3a79e57c..4f90e4b4 100644 --- a/bsp/buildroot/board/atmel/readme.txt +++ b/bsp/buildroot/board/atmel/readme.txt @@ -13,7 +13,6 @@ This guide covers the following configurations: - atmel_sama5d3_xplained_dev_defconfig - atmel_sama5d3_xplained_mmc_defconfig - atmel_sama5d3_xplained_mmc_dev_defconfig - - atmel_sama5d4ek_defconfig - atmel_sama5d4_xplained_defconfig - atmel_sama5d4_xplained_dev_defconfig - atmel_sama5d4_xplained_mmc_defconfig @@ -45,7 +44,7 @@ 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 "Preparting the SD card" sction. +in the "Preparing the SD card" section. To configure and build Buildroot, run: diff --git a/bsp/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg b/bsp/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg index b0ba22db..d3b7af5b 100644 --- a/bsp/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg +++ b/bsp/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg @@ -23,6 +23,7 @@ image sdcard.img { partition-type = 0xC bootable = "true" image = "boot.vfat" + offset = 1M } partition rootfs { diff --git a/bsp/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg b/bsp/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg index 32df453b..277ce5f9 100644 --- a/bsp/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg +++ b/bsp/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg @@ -23,6 +23,7 @@ image sdcard.img { partition-type = 0xC bootable = "true" image = "boot.vfat" + offset = 1M } partition rootfs { diff --git a/bsp/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg b/bsp/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg index b23ebe47..70bb3e4f 100644 --- a/bsp/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg +++ b/bsp/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg @@ -24,6 +24,7 @@ image sdcard.img { partition-type = 0xC bootable = "true" image = "boot.vfat" + offset = 1M } partition rootfs { diff --git a/bsp/buildroot/board/beagleboardx15/genimage.cfg b/bsp/buildroot/board/beagleboardx15/genimage.cfg new file mode 100644 index 00000000..d27eff60 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/beagleboardx15/post-image.sh b/bsp/buildroot/board/beagleboardx15/post-image.sh new file mode 100755 index 00000000..f52682f5 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/beagleboardx15/readme.txt b/bsp/buildroot/board/beagleboardx15/readme.txt new file mode 100644 index 00000000..56ebca8c --- /dev/null +++ b/bsp/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/bsp/buildroot/board/beaglebone/genimage.cfg b/bsp/buildroot/board/beaglebone/genimage.cfg index 0c29a804..ba60297d 100644 --- a/bsp/buildroot/board/beaglebone/genimage.cfg +++ b/bsp/buildroot/board/beaglebone/genimage.cfg @@ -5,8 +5,10 @@ image boot.vfat { "u-boot.img", "zImage", "uEnv.txt", + "am335x-evm.dtb", + "am335x-evmsk.dtb", "am335x-bone.dtb", - "am335x-boneblack.dtb" + "am335x-boneblack.dtb", } } size = 16M diff --git a/bsp/buildroot/board/beaglebone/linux-3.12.config b/bsp/buildroot/board/beaglebone/linux-3.12.config deleted file mode 100644 index 0be5722b..00000000 --- a/bsp/buildroot/board/beaglebone/linux-3.12.config +++ /dev/null @@ -1,251 +0,0 @@ -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_BLK_DEV_INITRD=y -CONFIG_EXPERT=y -CONFIG_SLAB=y -CONFIG_PROFILING=y -CONFIG_KPROBES=y -CONFIG_MODULES=y -CONFIG_MODULE_FORCE_LOAD=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -# CONFIG_BLK_DEV_BSG is not set -CONFIG_ARCH_OMAP2PLUS=y -CONFIG_OMAP_RESET_CLOCKS=y -CONFIG_OMAP_MUX_DEBUG=y -CONFIG_ARCH_OMAP3=y -CONFIG_ARCH_OMAP4=y -CONFIG_SOC_AM43XX=y -# CONFIG_ARCH_OMAP2PLUS_TYPICAL is not set -# CONFIG_SOC_TI81XX is not set -# CONFIG_MACH_OMAP3_BEAGLE is not set -# CONFIG_MACH_DEVKIT8000 is not set -# CONFIG_MACH_OMAP_LDP is not set -# CONFIG_MACH_OMAP3530_LV_SOM is not set -# CONFIG_MACH_OMAP3_TORPEDO is not set -# CONFIG_MACH_OVERO is not set -# CONFIG_MACH_OMAP3EVM is not set -# CONFIG_MACH_OMAP3_PANDORA is not set -# CONFIG_MACH_TOUCHBOOK is not set -# CONFIG_MACH_OMAP_3430SDP is not set -# CONFIG_MACH_NOKIA_RM680 is not set -# CONFIG_MACH_NOKIA_RX51 is not set -# CONFIG_MACH_OMAP_ZOOM2 is not set -# CONFIG_MACH_OMAP_ZOOM3 is not set -# CONFIG_MACH_CM_T35 is not set -# CONFIG_MACH_CM_T3517 is not set -# CONFIG_MACH_IGEP0020 is not set -# CONFIG_MACH_IGEP0030 is not set -# CONFIG_MACH_SBC3530 is not set -# CONFIG_MACH_OMAP_3630SDP is not set -CONFIG_ARM_THUMBEE=y -CONFIG_HAVE_ARM_ARCH_TIMER=y -CONFIG_PREEMPT=y -CONFIG_AEABI=y -CONFIG_HIGHMEM=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="root=/dev/mmcblk0p2 rootwait console=ttyO2,115200" -CONFIG_KEXEC=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_STAT_DETAILS=y -CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_GENERIC_CPUFREQ_CPU0=y -# CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set -CONFIG_FPE_NWFPE=y -CONFIG_VFP=y -CONFIG_NEON=y -CONFIG_BINFMT_MISC=y -CONFIG_PM_RUNTIME=y -CONFIG_PM_DEBUG=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_INET_LRO is not set -# CONFIG_IPV6 is not set -# CONFIG_WIRELESS is not set -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_OMAP_OCP2SCP=y -CONFIG_CONNECTOR=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=16384 -CONFIG_CROSSBAR=y -CONFIG_EEPROM_93CX6=y -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_SCSI_SCAN_ASYNC=y -CONFIG_MD=y -CONFIG_NETDEVICES=y -# CONFIG_NET_VENDOR_ARC is not set -# CONFIG_NET_CADENCE is not set -# 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_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_TI_CPSW=y -CONFIG_TI_CPTS=y -# CONFIG_NET_VENDOR_VIA is not set -# CONFIG_NET_VENDOR_WIZNET is not set -CONFIG_AT803X_PHY=y -CONFIG_SMSC_PHY=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_LIBPS2=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=32 -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_OMAP=y -CONFIG_SERIAL_OMAP_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_OMAP=y -CONFIG_SPI=y -CONFIG_SPI_OMAP24XX=y -CONFIG_SPI_TI_QSPI=y -CONFIG_PINCTRL_SINGLE=y -CONFIG_DEBUG_GPIO=y -CONFIG_GPIO_SYSFS=y -CONFIG_W1=y -CONFIG_POWER_SUPPLY=y -CONFIG_THERMAL=y -CONFIG_THERMAL_GOV_FAIR_SHARE=y -CONFIG_THERMAL_GOV_USER_SPACE=y -CONFIG_CPU_THERMAL=y -CONFIG_TI_SOC_THERMAL=y -CONFIG_TI_THERMAL=y -CONFIG_WATCHDOG=y -CONFIG_OMAP_WATCHDOG=y -CONFIG_MFD_SYSCON=y -CONFIG_MFD_TPS65217=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_PBIAS=y -CONFIG_REGULATOR_TPS65023=y -CONFIG_REGULATOR_TPS6507X=y -CONFIG_REGULATOR_TPS65217=y -CONFIG_REGULATOR_TIAVSCLASS0=y -CONFIG_FB=y -CONFIG_FIRMWARE_EDID=y -CONFIG_FB_DA8XX=y -CONFIG_FB_DA8XX_TDA998X=y -CONFIG_OMAP2_DSS=y -CONFIG_OMAP2_DSS_SDI=y -CONFIG_OMAP2_DSS_DSI=y -CONFIG_FB_OMAP2=y -CONFIG_DISPLAY_CONNECTOR_HDMI=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_MON=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_MUSB_HDRC=m -CONFIG_USB_MUSB_OMAP2PLUS=m -CONFIG_USB_MUSB_DSPS=m -CONFIG_USB_TI_CPPI41_DMA=y -CONFIG_USB_STORAGE=y -CONFIG_AM335X_PHY_USB=y -CONFIG_USB_GADGET=y -CONFIG_USB_GADGET_DEBUG=y -CONFIG_USB_GADGET_DEBUG_FS=y -CONFIG_USB_ZERO=m -CONFIG_USB_ETH=m -CONFIG_USB_ETH_EEM=y -CONFIG_USB_MASS_STORAGE=m -CONFIG_USB_G_MULTI=m -CONFIG_USB_G_MULTI_CDC=y -CONFIG_MMC=y -CONFIG_MMC_UNSAFE_RESUME=y -CONFIG_SDIO_UART=y -CONFIG_MMC_OMAP=y -CONFIG_MMC_OMAP_HS=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_RTC_CLASS=y -CONFIG_RTC_DRV_OMAP=y -CONFIG_DMADEVICES=y -CONFIG_TI_EDMA=y -CONFIG_DMA_OMAP=y -CONFIG_TI_CPPI41=y -CONFIG_COMMON_CLK_DEBUG=y -CONFIG_OMAP_USB2=y -CONFIG_OMAP_PIPE3=y -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y -# CONFIG_EXT3_FS_XATTR is not set -CONFIG_EXT4_FS=y -CONFIG_QUOTA=y -CONFIG_QFMT_V2=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V4=y -CONFIG_ROOT_NFS=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ISO8859_1=y -CONFIG_PRINTK_TIME=y -CONFIG_DEBUG_INFO=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_SCHEDSTATS=y -CONFIG_TIMER_STATS=y -CONFIG_PROVE_LOCKING=y -# CONFIG_DEBUG_BUGVERBOSE is not set -CONFIG_CRYPTO_MANAGER=m -CONFIG_CRYPTO_SHA256=m -CONFIG_CRYPTO_DEFLATE=y -CONFIG_CRYPTO_LZO=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -# CONFIG_CRYPTO_HW is not set -CONFIG_CRC_CCITT=y -CONFIG_CRC_T10DIF=y -CONFIG_CRC_ITU_T=y -CONFIG_CRC7=y -CONFIG_LIBCRC32C=y -CONFIG_AVERAGE=y diff --git a/bsp/buildroot/board/beaglebone/linux-4.1-sgx.fragment b/bsp/buildroot/board/beaglebone/linux-4.1-sgx.fragment new file mode 100644 index 00000000..c0d2e7b2 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch b/bsp/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch new file mode 100644 index 00000000..8e36d9ab --- /dev/null +++ b/bsp/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/bsp/buildroot/board/beaglebone/patches/linux/linux-0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch b/bsp/buildroot/board/beaglebone/patches/linux/linux-0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch deleted file mode 100644 index 1ca1e70c..00000000 --- a/bsp/buildroot/board/beaglebone/patches/linux/linux-0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 29885f2f3d700341d322274db6ad085e601c0994 Mon Sep 17 00:00:00 2001 -From: Pantelis Antoniou -Date: Fri, 4 Jan 2013 00:32:33 +0200 -Subject: [PATCH 3/3] arm: Export cache flush management symbols when - !MULTI_CACHE - -When compiling a kernel without CONFIG_MULTI_CACHE enabled the -dma access functions end up not being exported. Fix it. - -Signed-off-by: Pantelis Antoniou ---- - arch/arm/kernel/setup.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c -index da1d1aa..dcb678c 100644 ---- a/arch/arm/kernel/setup.c -+++ b/arch/arm/kernel/setup.c -@@ -923,3 +923,12 @@ const struct seq_operations cpuinfo_op = { - .stop = c_stop, - .show = c_show - }; -+ -+/* export the cache management functions */ -+#ifndef MULTI_CACHE -+ -+EXPORT_SYMBOL(__glue(_CACHE,_dma_map_area)); -+EXPORT_SYMBOL(__glue(_CACHE,_dma_unmap_area)); -+EXPORT_SYMBOL(__glue(_CACHE,_dma_flush_range)); -+ -+#endif --- -1.7.10.4 - diff --git a/bsp/buildroot/board/beaglebone/post-image.sh b/bsp/buildroot/board/beaglebone/post-image.sh index ceeec685..f0c2bc7f 100755 --- a/bsp/buildroot/board/beaglebone/post-image.sh +++ b/bsp/buildroot/board/beaglebone/post-image.sh @@ -1,6 +1,7 @@ #!/bin/sh -# post-image.sh for BeagleBone +# post-image.sh for CircuitCo BeagleBone and TI am335x-evm # 2014, Marcin Jabrzyk +# 2016, Lothar Felten BOARD_DIR="$(dirname $0)" diff --git a/bsp/buildroot/board/beaglebone/readme.txt b/bsp/buildroot/board/beaglebone/readme.txt index 664bde2a..e908b222 100644 --- a/bsp/buildroot/board/beaglebone/readme.txt +++ b/bsp/buildroot/board/beaglebone/readme.txt @@ -1,44 +1,52 @@ -BeagleBone +CircuitCo BeagleBone +Texas Instuments AM335x Evaluation Module (TMDXEVM3358) -Intro -===== -To be able to use BeagleBone board with the images generated by -Buildroot, you have to prepare the SDCard. +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 =============== - $ make beaglebone_defconfig +Select the default configuration for the target: +$ make beaglebone_defconfig -Then you can edit the build options using +Optional: modify the configuration: +$ make menuconfig - $ make menuconfig - -Compile all and build rootfs image: - - $ make +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 -After building, you should get a tree like this: +To copy the image file to the sdcard use dd: +$ dd if=output/images/sdcard.img of=/dev/XXX - output/images/ - ├── am335x-boneblack.dtb - ├── am335x-bone.dtb - ├── MLO - ├── rootfs.ext2 - ├── sdcard.img - ├── u-boot.img - ├── uEnv.txt - └── zImage +Tested hardware +=============== +am335x-evm (rev. 1.1A) +beagleboneblack (rev. A5A) +beaglebone (rev. A6) -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 +2016, Lothar Felten diff --git a/bsp/buildroot/board/beaglebone/uEnv.txt b/bsp/buildroot/board/beaglebone/uEnv.txt index e09fff51..70b3b721 100644 --- a/bsp/buildroot/board/beaglebone/uEnv.txt +++ b/bsp/buildroot/board/beaglebone/uEnv.txt @@ -1,3 +1,4 @@ bootpart=0:1 bootdir= -uenvcmd=run loadimage;run loadramdisk;run findfdt;run loadfdt;run ramboot +bootargs=console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait +uenvcmd=run loadimage;run loadfdt;printenv bootargs;bootz ${loadaddr} - ${fdtaddr}; diff --git a/bsp/buildroot/board/boundarydevices/common/6x_bootscript.txt b/bsp/buildroot/board/boundarydevices/common/6x_bootscript.txt index e8a08aa8..2fc687af 100644 --- a/bsp/buildroot/board/boundarydevices/common/6x_bootscript.txt +++ b/bsp/buildroot/board/boundarydevices/common/6x_bootscript.txt @@ -92,14 +92,12 @@ fi setenv bootargs "${bootargs} console=${console},115200 vmalloc=400M consoleblank=0 rootwait fixrtc" -bpart=1 - if test "sata" = "${dtype}" ; then - setenv bootargs "${bootargs} root=/dev/sda${bpart}" ; + setenv bootargs "${bootargs} root=/dev/sda${bootpart}" ; elif test "usb" = "${dtype}" ; then - setenv bootargs "${bootargs} root=/dev/sda${bpart}" ; + setenv bootargs "${bootargs} root=/dev/sda${bootpart}" ; else - setenv bootargs "${bootargs} root=/dev/mmcblk${disk}p${bpart}" + setenv bootargs "${bootargs} root=/dev/mmcblk${disk}p${bootpart}" fi if itest.s "x" != "x${disable_giga}" ; then diff --git a/bsp/buildroot/board/boundarydevices/common/genimage.cfg b/bsp/buildroot/board/boundarydevices/common/genimage.cfg index 7a5e71e5..a383fb75 100644 --- a/bsp/buildroot/board/boundarydevices/common/genimage.cfg +++ b/bsp/buildroot/board/boundarydevices/common/genimage.cfg @@ -1,13 +1,15 @@ +# 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 u-boot { - in-partition-table = "no" - image = "u-boot.imx" - offset = 1024 - } - partition rootfs { partition-type = 0x83 image = "rootfs.ext4" diff --git a/bsp/buildroot/board/calao/qil-a9260/linux-3.4.7.config b/bsp/buildroot/board/calao/qil-a9260/linux-3.4.7.config deleted file mode 100644 index 105d7600..00000000 --- a/bsp/buildroot/board/calao/qil-a9260/linux-3.4.7.config +++ /dev/null @@ -1,111 +0,0 @@ -CONFIG_EXPERIMENTAL=y -# CONFIG_LOCALVERSION_AUTO is not set -# CONFIG_SWAP is not set -CONFIG_SYSVIPC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_SLAB=y -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_AT91=y -CONFIG_ARCH_AT91SAM9260=y -CONFIG_MACH_QIL_A9260=y -CONFIG_AT91_SLOW_CLOCK=y -CONFIG_AT91_EARLY_USART0=y -# CONFIG_ARM_THUMB is not set -CONFIG_AEABI=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="mem=64M console=ttyS1,115200" -CONFIG_FPE_NWFPE=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=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_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_DATAFLASH=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_ATMEL=y -CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y -CONFIG_MTD_UBI=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_MACB=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_EVBUG=y -# CONFIG_KEYBOARD_ATKBD is not set -CONFIG_KEYBOARD_GPIO=y -# CONFIG_INPUT_MOUSE is not set -# CONFIG_SERIO is not set -CONFIG_SERIAL_ATMEL=y -CONFIG_SERIAL_ATMEL_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_SPI=y -CONFIG_SPI_ATMEL=y -# CONFIG_HWMON is not set -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_NOWAYOUT=y -# CONFIG_USB_HID is not set -CONFIG_USB=y -CONFIG_USB_DEVICEFS=y -CONFIG_USB_MON=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_ETH=m -CONFIG_MMC=y -CONFIG_MMC_AT91=m -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_M41T94=y -CONFIG_EXT2_FS=y -CONFIG_FUSE_FS=m -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_UBIFS_FS=y -CONFIG_UBIFS_FS_XATTR=y -CONFIG_UBIFS_FS_ADVANCED_COMPR=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_NFS_V3_ACL=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_KERNEL=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_LL=y diff --git a/bsp/buildroot/board/calao/qil-a9260/patches/at91bootstrap/0001-qil-a9260.patch b/bsp/buildroot/board/calao/qil-a9260/patches/at91bootstrap/0001-qil-a9260.patch deleted file mode 100644 index eb9de2a1..00000000 --- a/bsp/buildroot/board/calao/qil-a9260/patches/at91bootstrap/0001-qil-a9260.patch +++ /dev/null @@ -1,603 +0,0 @@ -From a3e08beea8bf5e96e1237eef4a82f4a2fdd5286b Mon Sep 17 00:00:00 2001 -From: Gregory Hermant -Date: Thu, 19 Jul 2012 14:19:59 +0200 -Subject: [PATCH] Add support for the Calao-systems QIL-A9260 - - -Signed-off-by: Gregory Hermant ---- - board/qil_a9260/nandflash/Makefile | 122 ++++++++++++++ - board/qil_a9260/nandflash/qil-a9260.h | 109 ++++++++++++ - board/qil_a9260/qil_a9260.c | 298 +++++++++++++++++++++++++++++++++ - crt0_gnu.S | 7 + - include/part.h | 6 +- - 5 files changed, 541 insertions(+), 1 deletions(-) - create mode 100644 board/qil_a9260/nandflash/Makefile - create mode 100644 board/qil_a9260/nandflash/qil-a9260.h - create mode 100644 board/qil_a9260/qil_a9260.c - -diff --git a/board/qil_a9260/nandflash/Makefile b/board/qil_a9260/nandflash/Makefile -new file mode 100644 -index 0000000..209a25f ---- /dev/null -+++ b/board/qil_a9260/nandflash/Makefile -@@ -0,0 +1,122 @@ -+# TODO: set this appropriately for your local toolchain -+ifndef ERASE_FCT -+ERASE_FCT=rm -f -+endif -+ifndef CROSS_COMPILE -+CROSS_COMPILE=arm-elf- -+endif -+ -+TOOLCHAIN=gcc -+ -+BOOTSTRAP_PATH=../../.. -+ -+# NandFlashBoot Configuration for QIL-A9260 -+ -+# Target name (case sensitive!!!) -+TARGET=AT91SAM9260 -+# Board name (case sensitive!!!) -+BOARD=qil_a9260 -+# Link Address and Top_of_Memory -+LINK_ADDR=0x200000 -+TOP_OF_MEMORY=0x301000 -+# Name of current directory -+PROJECT=nandflash -+ -+ifndef BOOT_NAME -+BOOT_NAME=$(PROJECT)_$(BOARD) -+endif -+ -+INCL=./$(BOOTSTRAP_PATH)/board/$(BOARD)/$(PROJECT) -+ -+ifeq ($(TOOLCHAIN), gcc) -+ -+AS=$(CROSS_COMPILE)gcc -+CC=$(CROSS_COMPILE)gcc -+LD=$(CROSS_COMPILE)gcc -+NM= $(CROSS_COMPILE)nm -+SIZE=$(CROSS_COMPILE)size -+OBJCOPY=$(CROSS_COMPILE)objcopy -+OBJDUMP=$(CROSS_COMPILE)objdump -+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -+ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) -+ -+# Linker flags. -+# -Wl,...: tell GCC to pass this to linker. -+# -Map: create map file -+# --cref: add cross reference to map file -+LDFLAGS+=-nostartfiles -nostdlib -Wl,-Map=$(BOOT_NAME).map,--cref -+LDFLAGS+=-T $(BOOTSTRAP_PATH)/elf32-littlearm.lds -Ttext $(LINK_ADDR) -+OBJS=crt0_gnu.o -+ -+endif -+ -+OBJS+=\ -+ $(BOARD).o \ -+ main.o \ -+ gpio.o \ -+ pmc.o \ -+ debug.o \ -+ sdramc.o \ -+ nandflash.o \ -+ _udivsi3.o \ -+ _umodsi3.o \ -+ div0.o \ -+ udiv.o \ -+ string.o -+ -+ -+rebuild: clean all -+ -+all: $(BOOT_NAME) -+ -+ifeq ($(TOOLCHAIN), gcc) -+$(BOOT_NAME): $(OBJS) -+ $(LD) $(LDFLAGS) -n -o $(BOOT_NAME).elf $(OBJS) -+ $(OBJCOPY) --strip-debug --strip-unneeded $(BOOT_NAME).elf -O binary $(BOOT_NAME).bin -+endif -+ -+ -+$(BOARD).o: $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -o $(BOARD).o -+ -+main.o: $(BOOTSTRAP_PATH)/main.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/main.c -o main.o -+ -+gpio.o: $(BOOTSTRAP_PATH)/driver/gpio.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/gpio.c -o gpio.o -+ -+pmc.o: $(BOOTSTRAP_PATH)/driver/pmc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/pmc.c -o pmc.o -+ -+debug.o: $(BOOTSTRAP_PATH)/driver/debug.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/debug.c -o debug.o -+ -+sdramc.o: $(BOOTSTRAP_PATH)/driver/sdramc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/sdramc.c -o sdramc.o -+ -+dataflash.o: $(BOOTSTRAP_PATH)/driver/dataflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/dataflash.c -o dataflash.o -+ -+nandflash.o: $(BOOTSTRAP_PATH)/driver/nandflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/nandflash.c -o nandflash.o -+ -+crt0_gnu.o: $(BOOTSTRAP_PATH)/crt0_gnu.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/crt0_gnu.S -o crt0_gnu.o -+ -+div0.o: $(BOOTSTRAP_PATH)/lib/div0.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/div0.c -o div0.o -+ -+string.o: $(BOOTSTRAP_PATH)/lib/string.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/string.c -o string.o -+ -+udiv.o: $(BOOTSTRAP_PATH)/lib/udiv.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/udiv.c -o udiv.o -+ -+_udivsi3.o: $(BOOTSTRAP_PATH)/lib/_udivsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_udivsi3.S -o _udivsi3.o -+ -+_umodsi3.o: $(BOOTSTRAP_PATH)/lib/_umodsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_umodsi3.S -o _umodsi3.o -+ -+clean: -+ $(ERASE_FCT) *.o *.bin *.elf *.map -diff --git a/board/qil_a9260/nandflash/qil-a9260.h b/board/qil_a9260/nandflash/qil-a9260.h -new file mode 100644 -index 0000000..c87002e ---- /dev/null -+++ b/board/qil_a9260/nandflash/qil-a9260.h -@@ -0,0 +1,109 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2006, 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : qil-a9260.h -+ * Object : -+ * Creation : GH July 19th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#ifndef _QIL_A9260_H -+#define _QIL_A9260_H -+ -+/* ******************************************************************* */ -+/* PMC Settings */ -+/* */ -+/* The main oscillator is enabled as soon as possible in the c_startup */ -+/* and MCK is switched on the main oscillator. */ -+/* PLL initialization is done later in the hw_init() function */ -+/* ******************************************************************* */ -+#define MASTER_CLOCK (180000000/2) -+#define PLL_LOCK_TIMEOUT 1000000 -+ -+#define PLLA_SETTINGS 0x20593F06 -+#define PLLB_SETTINGS 0x10483F0E -+ -+/* Switch MCK on PLLA output PCK = PLLA = 2 * MCK */ -+#define MCKR_SETTINGS (AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2) -+#define MCKR_CSS_SETTINGS (AT91C_PMC_CSS_PLLA_CLK | MCKR_SETTINGS) -+ -+/* ******************************************************************* */ -+/* NandFlash Settings */ -+/* */ -+/* ******************************************************************* */ -+#define AT91C_SMARTMEDIA_BASE 0x40000000 -+ -+#define AT91_SMART_MEDIA_ALE (1 << 21) /* our ALE is AD21 */ -+#define AT91_SMART_MEDIA_CLE (1 << 22) /* our CLE is AD22 */ -+ -+#define NAND_DISABLE_CE() do { *(volatile unsigned int *)AT91C_PIOC_SODR = AT91C_PIO_PC14;} while(0) -+#define NAND_ENABLE_CE() do { *(volatile unsigned int *)AT91C_PIOC_CODR = AT91C_PIO_PC14;} while(0) -+ -+#define NAND_WAIT_READY() while (!(*(volatile unsigned int *)AT91C_PIOC_PDSR & AT91C_PIO_PC13)) -+ -+ -+/* ******************************************************************** */ -+/* SMC Chip Select 3 Timings for NandFlash for MASTER_CLOCK = 90000000.*/ -+/* Please refer to SMC section in AT91SAM datasheet to learn how */ -+/* to generate these values. */ -+/* ******************************************************************** */ -+#define AT91C_SM_NWE_SETUP (1 << 0) -+#define AT91C_SM_NCS_WR_SETUP (0 << 8) -+#define AT91C_SM_NRD_SETUP (1 << 16) -+#define AT91C_SM_NCS_RD_SETUP (0 << 24) -+ -+#define AT91C_SM_NWE_PULSE (3 << 0) -+#define AT91C_SM_NCS_WR_PULSE (3 << 8) -+#define AT91C_SM_NRD_PULSE (3 << 16) -+#define AT91C_SM_NCS_RD_PULSE (3 << 24) -+ -+#define AT91C_SM_NWE_CYCLE (5 << 0) -+#define AT91C_SM_NRD_CYCLE (5 << 16) -+#define AT91C_SM_TDF (2 << 16) -+ -+/* ******************************************************************* */ -+/* BootStrap Settings */ -+/* */ -+/* ******************************************************************* */ -+#define IMG_ADDRESS 0x20000 /* Image Address in NandFlash */ -+#define IMG_SIZE 0x40000 /* Image Size in NandFlash */ -+ -+#define MACH_TYPE 0x6AF /* QIL-A9260 */ -+#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ -+ -+/* ******************************************************************* */ -+/* Application Settings */ -+/* ******************************************************************* */ -+#undef CFG_DEBUG -+#undef CFG_DATAFLASH -+ -+#define CFG_NANDFLASH -+#undef NANDFLASH_SMALL_BLOCKS /* NANDFLASH_LARGE_BLOCKS used instead */ -+ -+#define CFG_HW_INIT -+#define CFG_SDRAM -+ -+#endif /* _QIL_A9260_H */ -diff --git a/board/qil_a9260/qil_a9260.c b/board/qil_a9260/qil_a9260.c -new file mode 100644 -index 0000000..ae122e7 ---- /dev/null -+++ b/board/qil_a9260/qil_a9260.c -@@ -0,0 +1,298 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2006, 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 disclaiimer 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : qil_a9260.c -+ * Object : -+ * Creation : GH July 19th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#include "../../include/part.h" -+#include "../../include/gpio.h" -+#include "../../include/pmc.h" -+#include "../../include/debug.h" -+#include "../../include/sdramc.h" -+#include "../../include/main.h" -+#ifdef CFG_NANDFLASH -+#include "../../include/nandflash.h" -+#endif -+#ifdef CFG_DATAFLASH -+#include "../../include/dataflash.h" -+#endif -+ -+static inline unsigned int get_cp15(void) -+{ -+ unsigned int value; -+ __asm__("mrc p15, 0, %0, c1, c0, 0" : "=r" (value)); -+ return value; -+} -+ -+static inline void set_cp15(unsigned int value) -+{ -+ __asm__("mcr p15, 0, %0, c1, c0, 0" : : "r" (value)); -+} -+ -+#ifdef CFG_HW_INIT -+/*----------------------------------------------------------------------------*/ -+/* \fn hw_init */ -+/* \brief This function performs very low level HW initialization */ -+/* This function is invoked as soon as possible during the c_startup */ -+/* The bss segment must be initialized */ -+/*----------------------------------------------------------------------------*/ -+void hw_init(void) -+{ -+ unsigned int cp15; -+ -+ /* Configure PIOs */ -+ const struct pio_desc hw_pio[] = { -+#ifdef CFG_DEBUG -+ {"RXD", AT91C_PIN_PB(14), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"TXD", AT91C_PIN_PB(15), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#endif -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Disable watchdog */ -+ writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); -+ -+ /* At this stage the main oscillator is supposed to be enabled -+ * PCK = MCK = MOSC */ -+ -+ /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ -+ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* PCK = PLLA = 2 * MCK */ -+ pmc_cfg_mck(MCKR_SETTINGS, PLL_LOCK_TIMEOUT); -+ /* Switch MCK on PLLA output */ -+ pmc_cfg_mck(MCKR_CSS_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* Configure PLLB */ -+ pmc_cfg_pllb(PLLB_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* Configure CP15 */ -+ cp15 = get_cp15(); -+ cp15 |= I_CACHE; -+ set_cp15(cp15); -+ -+ /* Configure the PIO controller */ -+ pio_setup(hw_pio); -+ -+ /* Configure the EBI Slave Slot Cycle to 64 */ -+ writel( (readl((AT91C_BASE_MATRIX + MATRIX_SCFG3)) & ~0xFF) | 0x40, (AT91C_BASE_MATRIX + MATRIX_SCFG3)); -+ -+#ifdef CFG_DEBUG -+ /* Enable Debug messages on the DBGU */ -+ dbg_init(BAUDRATE(MASTER_CLOCK, 115200)); -+ -+ dbg_print("Start AT91Bootstrap...\n\r"); -+#endif /* CFG_DEBUG */ -+ -+#ifdef CFG_SDRAM -+ /* Initialize the matrix */ -+ writel(readl(AT91C_BASE_CCFG + CCFG_EBICSA) | AT91C_EBI_CS1A_SDRAMC, AT91C_BASE_CCFG + CCFG_EBICSA); -+ -+ /* Configure SDRAM Controller */ -+ sdram_init( AT91C_SDRAMC_NC_9 | -+ AT91C_SDRAMC_NR_13 | -+ AT91C_SDRAMC_CAS_2 | -+ AT91C_SDRAMC_NB_4_BANKS | -+ AT91C_SDRAMC_DBW_32_BITS | -+ AT91C_SDRAMC_TWR_2 | -+ AT91C_SDRAMC_TRC_7 | -+ AT91C_SDRAMC_TRP_2 | -+ AT91C_SDRAMC_TRCD_2 | -+ AT91C_SDRAMC_TRAS_5 | -+ AT91C_SDRAMC_TXSR_8, /* Control Register */ -+ (MASTER_CLOCK * 7)/1000000, /* Refresh Timer Register */ -+ AT91C_SDRAMC_MD_SDRAM); /* SDRAM (no low power) */ -+ -+ -+#endif /* CFG_SDRAM */ -+} -+#endif /* CFG_HW_INIT */ -+ -+#ifdef CFG_SDRAM -+/*------------------------------------------------------------------------------*/ -+/* \fn sdramc_hw_init */ -+/* \brief This function performs SDRAMC HW initialization */ -+/*------------------------------------------------------------------------------*/ -+void sdramc_hw_init(void) -+{ -+ /* Configure PIOs */ -+/* const struct pio_desc sdramc_pio[] = { -+ {"D16", AT91C_PIN_PC(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D17", AT91C_PIN_PC(17), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D18", AT91C_PIN_PC(18), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D19", AT91C_PIN_PC(19), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D20", AT91C_PIN_PC(20), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D21", AT91C_PIN_PC(21), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D22", AT91C_PIN_PC(22), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D23", AT91C_PIN_PC(23), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D24", AT91C_PIN_PC(24), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D25", AT91C_PIN_PC(25), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D26", AT91C_PIN_PC(26), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D27", AT91C_PIN_PC(27), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D28", AT91C_PIN_PC(28), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D29", AT91C_PIN_PC(29), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D30", AT91C_PIN_PC(30), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D31", AT91C_PIN_PC(31), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+*/ -+ /* Configure the SDRAMC PIO controller to output PCK0 */ -+/* pio_setup(sdramc_pio); */ -+ -+ writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_ASR(0)); -+ writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_PDR(0)); -+ -+} -+#endif /* CFG_SDRAM */ -+ -+#ifdef CFG_DATAFLASH -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn df_recovery */ -+/* \brief This function erases DataFlash Page 0 if USR PB is pressed */ -+/* during boot sequence */ -+/*------------------------------------------------------------------------------*/ -+void df_recovery(AT91PS_DF pDf) -+{ -+#if (AT91C_SPI_PCS_DATAFLASH == AT91C_SPI_PCS0_DATAFLASH) -+ /* Configure PIOs */ -+ const struct pio_desc usrpb_pio[] = { -+ {"USRPB", AT91C_PIN_PB(10), 0, PIO_PULLUP, PIO_INPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOB), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(usrpb_pio); -+ -+ /* If USR PB is pressed during Boot sequence */ -+ /* Erase DataFlash Page 0*/ -+ if ( !pio_get_value(AT91C_PIN_PB(10)) ) -+ df_page_erase(pDf, 0); -+#endif -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn df_hw_init */ -+/* \brief This function performs DataFlash HW initialization */ -+/*------------------------------------------------------------------------------*/ -+void df_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc df_pio[] = { -+ {"MISO", AT91C_PIN_PA(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"MOSI", AT91C_PIN_PA(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"SPCK", AT91C_PIN_PA(2), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#if (AT91C_SPI_PCS_DATAFLASH == AT91C_SPI_PCS0_DATAFLASH) -+ {"NPCS0", AT91C_PIN_PA(3), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#endif -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ pio_setup(df_pio); -+} -+#endif /* CFG_DATAFLASH */ -+ -+ -+ -+#ifdef CFG_NANDFLASH -+/*------------------------------------------------------------------------------*/ -+/* \fn nand_recovery */ -+/* \brief This function erases NandFlash Block 0 if USR PB is pressed */ -+/* during boot sequence */ -+/*------------------------------------------------------------------------------*/ -+static void nand_recovery(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc usrpb_pio[] = { -+ {"USRPB", AT91C_PIN_PB(10), 0, PIO_PULLUP, PIO_INPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOB), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(usrpb_pio); -+ -+ /* If USR PB is pressed during Boot sequence */ -+ /* Erase NandFlash block 0*/ -+ if (!pio_get_value(AT91C_PIN_PB(10)) ) -+ AT91F_NandEraseBlock0(); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_hw_init */ -+/* \brief NandFlash HW init */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc nand_pio[] = { -+ {"RDY_BSY", AT91C_PIN_PC(13), 0, PIO_PULLUP, PIO_INPUT}, -+ {"NANDCS", AT91C_PIN_PC(14), 0, PIO_PULLUP, PIO_OUTPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Setup Smart Media, first enable the address range of CS3 in HMATRIX user interface */ -+ writel(readl(AT91C_BASE_CCFG + CCFG_EBICSA) | AT91C_EBI_CS3A_SM, AT91C_BASE_CCFG + CCFG_EBICSA); -+ -+ /* Configure SMC CS3 */ -+ writel((AT91C_SM_NWE_SETUP | AT91C_SM_NCS_WR_SETUP | AT91C_SM_NRD_SETUP | AT91C_SM_NCS_RD_SETUP), AT91C_BASE_SMC + SMC_SETUP3); -+ writel((AT91C_SM_NWE_PULSE | AT91C_SM_NCS_WR_PULSE | AT91C_SM_NRD_PULSE | AT91C_SM_NCS_RD_PULSE), AT91C_BASE_SMC + SMC_PULSE3); -+ writel((AT91C_SM_NWE_CYCLE | AT91C_SM_NRD_CYCLE) , AT91C_BASE_SMC + SMC_CYCLE3); -+ writel((AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE | AT91C_SMC_NWAITM_NWAIT_DISABLE | -+ AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS | AT91C_SM_TDF) , AT91C_BASE_SMC + SMC_CTRL3); -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOC), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(nand_pio); -+ -+ nand_recovery(); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_16bits_dbw_init */ -+/* \brief Configure SMC in 16 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_16bits_dbw_init(void) -+{ -+ writel(readl(AT91C_BASE_SMC + SMC_CTRL3) | AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS, AT91C_BASE_SMC + SMC_CTRL3); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_8bits_dbw_init */ -+/* \brief Configure SMC in 8 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_8bits_dbw_init(void) -+{ -+ writel((readl(AT91C_BASE_SMC + SMC_CTRL3) & ~(AT91C_SMC_DBW)) | AT91C_SMC_DBW_WIDTH_EIGTH_BITS, AT91C_BASE_SMC + SMC_CTRL3); -+} -+ -+ -+#endif /* #ifdef CFG_NANDFLASH */ -diff --git a/crt0_gnu.S b/crt0_gnu.S -index 042b617..002feef 100644 ---- a/crt0_gnu.S -+++ b/crt0_gnu.S -@@ -106,6 +106,13 @@ _relocate_to_sram: - #endif /* CFG_NORFLASH */ - - _setup_clocks: -+/* Test if main osc is bypassed */ -+ ldr r0,=AT91C_PMC_MOR -+ ldr r1, [r0] -+ ldr r2,=AT91C_CKGR_OSCBYPASS -+ ands r1, r1, r2 -+ bne _init_data /* branch if OSCBYPASS=1 */ -+ - /* Test if main oscillator is enabled */ - ldr r0,=AT91C_PMC_SR - ldr r1, [r0] -diff --git a/include/part.h b/include/part.h -index ba5985a..bbd33fe 100644 ---- a/include/part.h -+++ b/include/part.h -@@ -35,7 +35,11 @@ - - #ifdef AT91SAM9260 - #include "AT91SAM9260_inc.h" --#include "at91sam9260ek.h" -+ #ifdef at91sam9260ek -+ #include "at91sam9260ek.h" -+ #elif qil_a9260 -+ #include "qil-a9260.h" -+ #endif - #endif - - #ifdef AT91SAM9XE --- -1.5.6.3 - diff --git a/bsp/buildroot/board/calao/qil-a9260/patches/barebox/0001-qil-a9260.patch b/bsp/buildroot/board/calao/qil-a9260/patches/barebox/0001-qil-a9260.patch deleted file mode 100644 index a74e6570..00000000 --- a/bsp/buildroot/board/calao/qil-a9260/patches/barebox/0001-qil-a9260.patch +++ /dev/null @@ -1,36 +0,0 @@ -From d076aa6182dc6df6bb311e60bbddb03573b9483b Mon Sep 17 00:00:00 2001 -From: Gregory Hermant -Date: Fri, 3 Aug 2012 11:25:49 +0200 -Subject: [PATCH] Enable pull-up on Rx serial ports for the CALAO MB-QIL-A9260 - - -Signed-off-by: Gregory Hermant ---- - arch/arm/boards/qil-a9260/init.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -diff --git a/arch/arm/boards/qil-a9260/init.c b/arch/arm/boards/qil-a9260/init.c -index 305d733..b43cace 100644 ---- a/arch/arm/boards/qil-a9260/init.c -+++ b/arch/arm/boards/qil-a9260/init.c -@@ -196,11 +196,17 @@ device_initcall(qil_a9260_devices_init); - static int qil_a9260_console_init(void) - { - at91_register_uart(0, 0); -+ at91_set_A_periph(AT91_PIN_PB14, 1); /* Enable pull-up on DRXD */ -+ - at91_register_uart(1, ATMEL_UART_CTS | ATMEL_UART_RTS - | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD - | ATMEL_UART_RI); -+ - at91_register_uart(2, ATMEL_UART_CTS | ATMEL_UART_RTS); -+ at91_set_A_periph(AT91_PIN_PB7, 1); /* Enable pull-up on RXD1 */ -+ - at91_register_uart(3, ATMEL_UART_CTS | ATMEL_UART_RTS); -+ at91_set_A_periph(AT91_PIN_PB9, 1); /* Enable pull-up on RXD2 */ - - return 0; - } --- -1.5.6.3 - diff --git a/bsp/buildroot/board/calao/qil-a9260/patches/linux/0001-qil-a9260.patch b/bsp/buildroot/board/calao/qil-a9260/patches/linux/0001-qil-a9260.patch deleted file mode 100644 index 5d355d23..00000000 --- a/bsp/buildroot/board/calao/qil-a9260/patches/linux/0001-qil-a9260.patch +++ /dev/null @@ -1,27 +0,0 @@ -From fe6432a9728b62bce3db73c5a4efe026018fd495 Mon Sep 17 00:00:00 2001 -From: Gregory Hermant -Date: Fri, 3 Aug 2012 16:45:37 +0200 -Subject: [PATCH] QIL-A9260: rtc modalias m41t48 renamed to rtc-m41t48 - - -Signed-off-by: Gregory Hermant ---- - arch/arm/mach-at91/board-qil-a9260.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c -index bf351e2..c0df05c 100644 ---- a/arch/arm/mach-at91/board-qil-a9260.c -+++ b/arch/arm/mach-at91/board-qil-a9260.c -@@ -78,7 +78,7 @@ static struct at91_udc_data __initdata ek_udc_data = { - static struct spi_board_info ek_spi_devices[] = { - #if defined(CONFIG_RTC_DRV_M41T94) - { /* M41T94 RTC */ -- .modalias = "m41t94", -+ .modalias = "rtc-m41t94", - .chip_select = 0, - .max_speed_hz = 1 * 1000 * 1000, - .bus_num = 0, --- -1.5.6.3 - diff --git a/bsp/buildroot/board/calao/tny-a9g20-lpw/at91bootstrap-1.16-tny-a9g20-lpw.patch b/bsp/buildroot/board/calao/tny-a9g20-lpw/at91bootstrap-1.16-tny-a9g20-lpw.patch deleted file mode 100644 index 71746ce5..00000000 --- a/bsp/buildroot/board/calao/tny-a9g20-lpw/at91bootstrap-1.16-tny-a9g20-lpw.patch +++ /dev/null @@ -1,551 +0,0 @@ -From 53bd82b122f4530a98cba45795832820bb1d0b45 Mon Sep 17 00:00:00 2001 -From: Gregory Hermant -Date: Mon, 13 Aug 2012 11:26:10 +0200 -Subject: [PATCH] Add support for the Calao-systems TNY-A9G20-LPW - - -Signed-off-by: Gregory Hermant ---- - board/tny_a9g20_lpw/nandflash/Makefile | 121 ++++++++++++ - board/tny_a9g20_lpw/nandflash/tny-a9g20-lpw.h | 114 ++++++++++++ - board/tny_a9g20_lpw/tny_a9g20_lpw.c | 243 +++++++++++++++++++++++++ - crt0_gnu.S | 6 + - include/part.h | 6 +- - 5 files changed, 489 insertions(+), 1 deletion(-) - create mode 100644 board/tny_a9g20_lpw/nandflash/Makefile - create mode 100644 board/tny_a9g20_lpw/nandflash/tny-a9g20-lpw.h - create mode 100644 board/tny_a9g20_lpw/tny_a9g20_lpw.c - -diff --git a/board/tny_a9g20_lpw/nandflash/Makefile b/board/tny_a9g20_lpw/nandflash/Makefile -new file mode 100644 -index 0000000..7efbea7 ---- /dev/null -+++ b/board/tny_a9g20_lpw/nandflash/Makefile -@@ -0,0 +1,121 @@ -+# TODO: set this appropriately for your local toolchain -+ifndef ERASE_FCT -+ERASE_FCT=rm -f -+endif -+ifndef CROSS_COMPILE -+CROSS_COMPILE=arm-elf- -+endif -+ -+TOOLCHAIN=gcc -+ -+BOOTSTRAP_PATH=../../.. -+ -+# NandFlashBoot Configuration for AT91SAM9260EK -+ -+# Target name (case sensitive!!!) -+TARGET=AT91SAM9G20 -+# Board name (case sensitive!!!) -+BOARD=tny_a9g20_lpw -+# Link Address and Top_of_Memory -+LINK_ADDR=0x200000 -+TOP_OF_MEMORY=0x301000 -+# Name of current directory -+PROJECT=nandflash -+ -+ifndef BOOT_NAME -+BOOT_NAME=$(PROJECT)_$(BOARD) -+endif -+ -+INCL=./$(BOOTSTRAP_PATH)/board/$(BOARD)/$(PROJECT) -+ -+ifeq ($(TOOLCHAIN), gcc) -+ -+AS=$(CROSS_COMPILE)gcc -+CC=$(CROSS_COMPILE)gcc -+LD=$(CROSS_COMPILE)gcc -+NM= $(CROSS_COMPILE)nm -+SIZE=$(CROSS_COMPILE)size -+OBJCOPY=$(CROSS_COMPILE)objcopy -+OBJDUMP=$(CROSS_COMPILE)objdump -+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -+ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) -+ -+# Linker flags. -+# -Wl,...: tell GCC to pass this to linker. -+# -Map: create map file -+# --cref: add cross reference to map file -+LDFLAGS+=-nostartfiles -nostdlib -Wl,-Map=$(BOOT_NAME).map,--cref -+LDFLAGS+=-T $(BOOTSTRAP_PATH)/elf32-littlearm.lds -Ttext $(LINK_ADDR) -+OBJS=crt0_gnu.o -+ -+endif -+ -+OBJS+=\ -+ $(BOARD).o \ -+ main.o \ -+ gpio.o \ -+ pmc.o \ -+ debug.o \ -+ sdramc.o \ -+ nandflash.o \ -+ _udivsi3.o \ -+ _umodsi3.o \ -+ div0.o \ -+ udiv.o \ -+ string.o -+ -+rebuild: clean all -+ -+all: $(BOOT_NAME) -+ -+ifeq ($(TOOLCHAIN), gcc) -+$(BOOT_NAME): $(OBJS) -+ $(LD) $(LDFLAGS) -n -o $(BOOT_NAME).elf $(OBJS) -+ $(OBJCOPY) --strip-debug --strip-unneeded $(BOOT_NAME).elf -O binary $(BOOT_NAME).bin -+endif -+ -+ -+$(BOARD).o: $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -o $(BOARD).o -+ -+main.o: $(BOOTSTRAP_PATH)/main.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/main.c -o main.o -+ -+gpio.o: $(BOOTSTRAP_PATH)/driver/gpio.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/gpio.c -o gpio.o -+ -+pmc.o: $(BOOTSTRAP_PATH)/driver/pmc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/pmc.c -o pmc.o -+ -+debug.o: $(BOOTSTRAP_PATH)/driver/debug.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/debug.c -o debug.o -+ -+sdramc.o: $(BOOTSTRAP_PATH)/driver/sdramc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/sdramc.c -o sdramc.o -+ -+dataflash.o: $(BOOTSTRAP_PATH)/driver/dataflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/dataflash.c -o dataflash.o -+ -+nandflash.o: $(BOOTSTRAP_PATH)/driver/nandflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/nandflash.c -o nandflash.o -+ -+crt0_gnu.o: $(BOOTSTRAP_PATH)/crt0_gnu.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/crt0_gnu.S -o crt0_gnu.o -+ -+div0.o: $(BOOTSTRAP_PATH)/lib/div0.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/div0.c -o div0.o -+ -+string.o: $(BOOTSTRAP_PATH)/lib/string.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/string.c -o string.o -+ -+udiv.o: $(BOOTSTRAP_PATH)/lib/udiv.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/udiv.c -o udiv.o -+ -+_udivsi3.o: $(BOOTSTRAP_PATH)/lib/_udivsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_udivsi3.S -o _udivsi3.o -+ -+_umodsi3.o: $(BOOTSTRAP_PATH)/lib/_umodsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_umodsi3.S -o _umodsi3.o -+ -+clean: -+ $(ERASE_FCT) *.o *.bin *.elf *.map -diff --git a/board/tny_a9g20_lpw/nandflash/tny-a9g20-lpw.h b/board/tny_a9g20_lpw/nandflash/tny-a9g20-lpw.h -new file mode 100644 -index 0000000..b1f8a1d ---- /dev/null -+++ b/board/tny_a9g20_lpw/nandflash/tny-a9g20-lpw.h -@@ -0,0 +1,114 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2008, 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : tny-a9g20-lpw.h -+ * Object : -+ * Creation : GH August 13th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#ifndef _TNY_A9G20_LPW_H -+#define _TNY_A9G20_LPW_H -+ -+/* ******************************************************************* */ -+/* PMC Settings */ -+/* */ -+/* The main oscillator is enabled as soon as possible in the c_startup */ -+/* and MCK is switched on the main oscillator. */ -+/* PLL initialization is done later in the hw_init() function */ -+/* ******************************************************************* */ -+#define MASTER_CLOCK (100000000) -+#define PLL_LOCK_TIMEOUT 1000000 -+ -+/* set PLLA to 800Mhz from MAINCK= 12Mhz MULA=199 (0xC7+1= 200), DIVA=0x03 (Fplla=12Mhz x [(199+1)/3]=800Mhz) */ -+#define PLLA_SETTINGS 0x20C73F03 -+#define PLLB_SETTINGS 0x100F3F02 -+ -+/* Switch MCK on PLLA output PCK = PLLA/2 = 3 * MCK */ -+/* LP-SDRAM (fmax=100Mhz) PDIV=0 => PRESCALER CLK=PCLK; */ -+/* MDIV = 2 => PRESCALER CLK / 4 = MCLK=100Mhz */ -+/* PRESCALER CLK = PLLA (800Mhz) / 2 (PRES=1) = 400Mhz */ -+#define MCKR_SETTINGS 0x0204 -+#define MCKR_CSS_SETTINGS (AT91C_PMC_CSS_PLLA_CLK | MCKR_SETTINGS) -+ -+/* ******************************************************************* */ -+/* NandFlash Settings */ -+/* */ -+/* ******************************************************************* */ -+#define AT91C_SMARTMEDIA_BASE 0x40000000 -+ -+#define AT91_SMART_MEDIA_ALE (1 << 21) /* our ALE is AD21 */ -+#define AT91_SMART_MEDIA_CLE (1 << 22) /* our CLE is AD22 */ -+ -+#define NAND_DISABLE_CE() do { *(volatile unsigned int *)AT91C_PIOC_SODR = AT91C_PIO_PC14;} while(0) -+#define NAND_ENABLE_CE() do { *(volatile unsigned int *)AT91C_PIOC_CODR = AT91C_PIO_PC14;} while(0) -+ -+#define NAND_WAIT_READY() while (!(*(volatile unsigned int *)AT91C_PIOC_PDSR & AT91C_PIO_PC13)) -+ -+ -+/* ******************************************************************** */ -+/* SMC Chip Select 3 Timings for NandFlash for MASTER_CLOCK = 100000000.*/ -+/* Please refer to SMC section in AT91SAM9 datasheet to learn how */ -+/* to generate these values. */ -+/* ******************************************************************** */ -+#define AT91C_SM_NWE_SETUP (1 << 0) -+#define AT91C_SM_NCS_WR_SETUP (0 << 8) -+#define AT91C_SM_NRD_SETUP (1 << 16) -+#define AT91C_SM_NCS_RD_SETUP (0 << 24) -+ -+#define AT91C_SM_NWE_PULSE (3 << 0) -+#define AT91C_SM_NCS_WR_PULSE (3 << 8) -+#define AT91C_SM_NRD_PULSE (3 << 16) -+#define AT91C_SM_NCS_RD_PULSE (3 << 24) -+ -+#define AT91C_SM_NWE_CYCLE (5 << 0) -+#define AT91C_SM_NRD_CYCLE (5 << 16) -+ -+#define AT91C_SM_TDF (2 << 16) -+ -+/* ******************************************************************* */ -+/* BootStrap Settings */ -+/* */ -+/* ******************************************************************* */ -+#define IMG_ADDRESS 0x20000 /* Image Address in NandFlash */ -+#define IMG_SIZE 0x40000 /* Image Size in NandFlash */ -+ -+#define MACH_TYPE 0x80B /* TNY-A9G20 */ -+#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ -+ -+/* ******************************************************************* */ -+/* Application Settings */ -+/* ******************************************************************* */ -+#undef CFG_DEBUG -+#undef CFG_DATAFLASH -+ -+#define CFG_NANDFLASH -+#undef NANDFLASH_SMALL_BLOCKS /* NANDFLASH_LARGE_BLOCKS used instead */ -+ -+#define CFG_SDRAM -+#define CFG_HW_INIT -+ -+#endif /* _TNY_A9G20_LPW_H */ -diff --git a/board/tny_a9g20_lpw/tny_a9g20_lpw.c b/board/tny_a9g20_lpw/tny_a9g20_lpw.c -new file mode 100644 -index 0000000..cef9055 ---- /dev/null -+++ b/board/tny_a9g20_lpw/tny_a9g20_lpw.c -@@ -0,0 +1,243 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2008, 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : tny_a9g20_lpw.c -+ * Object : -+ * Creation : GH August 13th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#include "../../include/part.h" -+#include "../../include/gpio.h" -+#include "../../include/pmc.h" -+#include "../../include/debug.h" -+#include "../../include/sdramc.h" -+#include "../../include/main.h" -+#ifdef CFG_NANDFLASH -+#include "../../include/nandflash.h" -+#endif -+ -+static inline unsigned int get_cp15(void) -+{ -+ unsigned int value; -+ __asm__("mrc p15, 0, %0, c1, c0, 0" : "=r" (value)); -+ return value; -+} -+ -+static inline void set_cp15(unsigned int value) -+{ -+ __asm__("mcr p15, 0, %0, c1, c0, 0" : : "r" (value)); -+} -+ -+#ifdef CFG_HW_INIT -+/*----------------------------------------------------------------------------*/ -+/* \fn hw_init */ -+/* \brief This function performs very low level HW initialization */ -+/* This function is invoked as soon as possible during the c_startup */ -+/* The bss segment must be initialized */ -+/*----------------------------------------------------------------------------*/ -+void hw_init(void) -+{ -+ unsigned int cp15; -+ -+ /* Configure PIOs */ -+ const struct pio_desc hw_pio[] = { -+#ifdef CFG_DEBUG -+ {"RXD", AT91C_PIN_PB(14), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"TXD", AT91C_PIN_PB(15), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#endif -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Disable watchdog */ -+ writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); -+ -+ /* At this stage the main oscillator is supposed to be enabled -+ * PCK = MCK = MOSC */ -+ writel(0x00, AT91C_BASE_PMC + PMC_PLLICPR); -+ -+ /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ -+ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* PCK = PLLA/2 = 3 * MCK */ -+ pmc_cfg_mck(MCKR_SETTINGS, PLL_LOCK_TIMEOUT); -+ /* Switch MCK on PLLA output */ -+ pmc_cfg_mck(MCKR_CSS_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* Configure PLLB */ -+ pmc_cfg_pllb(PLLB_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* Configure CP15 */ -+ cp15 = get_cp15(); -+ cp15 |= I_CACHE; -+ set_cp15(cp15); -+ -+ /* Configure the PIO controller */ -+ pio_setup(hw_pio); -+ -+ /* Configure the EBI Slave Slot Cycle to 64 */ -+ writel((readl((AT91C_BASE_MATRIX + MATRIX_SCFG3)) & ~0xFF) | 0x40, (AT91C_BASE_MATRIX + MATRIX_SCFG3)); -+ -+#ifdef CFG_DEBUG -+ /* Enable Debug messages on the DBGU */ -+ dbg_init(BAUDRATE(MASTER_CLOCK, 115200)); -+ -+ dbg_print("Start AT91Bootstrap...\n\r"); -+#endif /* CFG_DEBUG */ -+ -+#ifdef CFG_SDRAM -+ /* Initialize the matrix (slow slew rate enabled and LPSDRAM memory voltage = 1.8V) */ -+ writel(((readl(AT91C_BASE_CCFG + CCFG_EBICSA)) | AT91C_EBI_CS1A_SDRAMC | (1<<17)) & ~0x00010000, AT91C_BASE_CCFG + CCFG_EBICSA); -+ -+ /* Configure SDRAM Controller */ -+ sdram_init( AT91C_SDRAMC_NC_9 | -+ AT91C_SDRAMC_NR_13 | -+ AT91C_SDRAMC_CAS_3 | -+ AT91C_SDRAMC_NB_4_BANKS | -+ AT91C_SDRAMC_DBW_32_BITS | -+ AT91C_SDRAMC_TWR_2 | -+ AT91C_SDRAMC_TRC_7 | -+ AT91C_SDRAMC_TRP_2 | -+ AT91C_SDRAMC_TRCD_2 | -+ AT91C_SDRAMC_TRAS_5 | -+ AT91C_SDRAMC_TXSR_8, /* Control Register */ -+ (MASTER_CLOCK * 7)/1000000, /* Refresh Timer Register */ -+ AT91C_SDRAMC_MD_LOW_POWER_SDRAM); /* SDRAM (low power) */ -+ -+#endif /* CFG_SDRAM */ -+} -+#endif /* CFG_HW_INIT */ -+ -+#ifdef CFG_SDRAM -+/*------------------------------------------------------------------------------*/ -+/* \fn sdramc_hw_init */ -+/* \brief This function performs SDRAMC HW initialization */ -+/*------------------------------------------------------------------------------*/ -+void sdramc_hw_init(void) -+{ -+ /* Configure PIOs */ -+/* const struct pio_desc sdramc_pio[] = { -+ {"D16", AT91C_PIN_PC(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D17", AT91C_PIN_PC(17), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D18", AT91C_PIN_PC(18), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D19", AT91C_PIN_PC(19), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D20", AT91C_PIN_PC(20), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D21", AT91C_PIN_PC(21), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D22", AT91C_PIN_PC(22), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D23", AT91C_PIN_PC(23), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D24", AT91C_PIN_PC(24), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D25", AT91C_PIN_PC(25), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D26", AT91C_PIN_PC(26), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D27", AT91C_PIN_PC(27), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D28", AT91C_PIN_PC(28), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D29", AT91C_PIN_PC(29), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D30", AT91C_PIN_PC(30), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D31", AT91C_PIN_PC(31), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+*/ -+ /* Configure the SDRAMC PIO controller to output PCK0 */ -+/* pio_setup(sdramc_pio); */ -+ -+ writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_ASR(0)); -+ writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_PDR(0)); -+ -+} -+#endif /* CFG_SDRAM */ -+ -+#ifdef CFG_NANDFLASH -+/*------------------------------------------------------------------------------*/ -+/* \fn nand_recovery */ -+/* \brief This function erases NandFlash Block 0 if BP4 is pressed */ -+/* during boot sequence */ -+/*------------------------------------------------------------------------------*/ -+static void nand_recovery(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc bp4_pio[] = { -+ {"BP4", AT91C_PIN_PA(31), 0, PIO_PULLUP, PIO_INPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOA), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(bp4_pio); -+ -+ /* If BP4 is pressed during Boot sequence */ -+ /* Erase NandFlash block 0*/ -+ if (!pio_get_value(AT91C_PIN_PA(31)) ) -+ AT91F_NandEraseBlock0(); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_hw_init */ -+/* \brief NandFlash HW init */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc nand_pio[] = { -+ {"RDY_BSY", AT91C_PIN_PC(13), 0, PIO_PULLUP, PIO_INPUT}, -+ {"NANDCS", AT91C_PIN_PC(14), 0, PIO_PULLUP, PIO_OUTPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Setup Smart Media, first enable the address range of CS3 in HMATRIX user interface */ -+ writel(readl(AT91C_BASE_CCFG + CCFG_EBICSA) | AT91C_EBI_CS3A_SM, AT91C_BASE_CCFG + CCFG_EBICSA); -+ -+ /* Configure SMC CS3 */ -+ writel((AT91C_SM_NWE_SETUP | AT91C_SM_NCS_WR_SETUP | AT91C_SM_NRD_SETUP | AT91C_SM_NCS_RD_SETUP), AT91C_BASE_SMC + SMC_SETUP3); -+ writel((AT91C_SM_NWE_PULSE | AT91C_SM_NCS_WR_PULSE | AT91C_SM_NRD_PULSE | AT91C_SM_NCS_RD_PULSE), AT91C_BASE_SMC + SMC_PULSE3); -+ writel((AT91C_SM_NWE_CYCLE | AT91C_SM_NRD_CYCLE) , AT91C_BASE_SMC + SMC_CYCLE3); -+ writel((AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE | AT91C_SMC_NWAITM_NWAIT_DISABLE | -+ AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS | AT91C_SM_TDF) , AT91C_BASE_SMC + SMC_CTRL3); -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOC), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(nand_pio); -+ -+ nand_recovery(); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_16bits_dbw_init */ -+/* \brief Configure SMC in 16 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_16bits_dbw_init(void) -+{ -+ writel(readl(AT91C_BASE_SMC + SMC_CTRL3) | AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS, AT91C_BASE_SMC + SMC_CTRL3); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_8bits_dbw_init */ -+/* \brief Configure SMC in 8 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_8bits_dbw_init(void) -+{ -+ writel((readl(AT91C_BASE_SMC + SMC_CTRL3) & ~(AT91C_SMC_DBW)) | AT91C_SMC_DBW_WIDTH_EIGTH_BITS, AT91C_BASE_SMC + SMC_CTRL3); -+} -+ -+#endif /* #ifdef CFG_NANDFLASH */ -diff --git a/crt0_gnu.S b/crt0_gnu.S -index 042b617..c6cd49d 100644 ---- a/crt0_gnu.S -+++ b/crt0_gnu.S -@@ -106,6 +106,12 @@ _relocate_to_sram: - #endif /* CFG_NORFLASH */ - - _setup_clocks: -+/* Test if main osc is bypassed */ -+ ldr r0,=AT91C_PMC_MOR -+ ldr r1, [r0] -+ ldr r2,=AT91C_CKGR_OSCBYPASS -+ ands r1, r1, r2 -+ bne _init_data /* branch if OSCBYPASS=1 */ - /* Test if main oscillator is enabled */ - ldr r0,=AT91C_PMC_SR - ldr r1, [r0] -diff --git a/include/part.h b/include/part.h -index ba5985a..ab79af1 100644 ---- a/include/part.h -+++ b/include/part.h -@@ -46,7 +46,11 @@ - - #ifdef AT91SAM9G20 - #include "AT91SAM9260_inc.h" --#include "at91sam9g20ek.h" -+ #ifdef at91sam9g20ek -+ #include "at91sam9g20ek.h" -+ #elif tny_a9g20_lpw -+ #include "tny-a9g20-lpw.h" -+ #endif - #endif - - #ifdef AT91SAM9261 --- -1.7.9.5 - diff --git a/bsp/buildroot/board/calao/tny-a9g20-lpw/linux-3.9.config b/bsp/buildroot/board/calao/tny-a9g20-lpw/linux-3.9.config deleted file mode 100644 index 797c15a4..00000000 --- a/bsp/buildroot/board/calao/tny-a9g20-lpw/linux-3.9.config +++ /dev/null @@ -1,187 +0,0 @@ -# CONFIG_LOCALVERSION_AUTO is not set -# CONFIG_SWAP is not set -CONFIG_SYSVIPC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_BLK_DEV_INITRD=y -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_KALLSYMS_ALL=y -CONFIG_EMBEDDED=y -CONFIG_SLAB=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -# CONFIG_LBDAF is not set -# CONFIG_BLK_DEV_BSG is not set -# CONFIG_IOSCHED_DEADLINE is not set -# CONFIG_IOSCHED_CFQ is not set -CONFIG_ARCH_AT91=y -CONFIG_SOC_AT91SAM9260=y -CONFIG_SOC_AT91SAM9263=y -CONFIG_SOC_AT91SAM9G45=y -CONFIG_SOC_AT91SAM9X5=y -CONFIG_SOC_AT91SAM9N12=y -CONFIG_MACH_AT91SAM_DT=y -CONFIG_AT91_PROGRAMMABLE_CLOCKS=y -CONFIG_AT91_TIMER_HZ=128 -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set -CONFIG_UACCESS_WITH_MEMCPY=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_ARM_APPENDED_DTB=y -CONFIG_ARM_ATAG_DTB_COMPAT=y -CONFIG_CMDLINE="console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw" -CONFIG_KEXEC=y -CONFIG_AUTO_ZRELADDR=y -# 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_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_DIAG is not set -CONFIG_IPV6=y -# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set -# CONFIG_INET6_XFRM_MODE_TUNNEL is not set -# CONFIG_INET6_XFRM_MODE_BEET is not set -CONFIG_IPV6_SIT_6RD=y -# CONFIG_WIRELESS is not set -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_STANDALONE is not set -# CONFIG_PREVENT_FIRMWARE_BUILD is not set -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_ATMEL=y -CONFIG_MTD_UBI=y -CONFIG_MTD_UBI_GLUEBI=y -CONFIG_PROC_DEVICETREE=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=4 -CONFIG_BLK_DEV_RAM_SIZE=8192 -CONFIG_ATMEL_PWM=y -CONFIG_ATMEL_TCLIB=y -CONFIG_EEPROM_93CX6=m -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -# CONFIG_SCSI_LOWLEVEL is not set -CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_MACB=y -# CONFIG_NET_VENDOR_BROADCOM 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_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_DAVICOM_PHY=y -CONFIG_MICREL_PHY=y -# CONFIG_WLAN is not set -CONFIG_INPUT_POLLDEV=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_MOUSEDEV_SCREEN_X=480 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272 -CONFIG_INPUT_JOYDEV=y -CONFIG_INPUT_EVDEV=y -# CONFIG_KEYBOARD_ATKBD is not set -CONFIG_KEYBOARD_GPIO=y -# CONFIG_INPUT_MOUSE is not set -CONFIG_INPUT_TOUCHSCREEN=y -# CONFIG_SERIO is not set -CONFIG_LEGACY_PTY_COUNT=4 -CONFIG_SERIAL_ATMEL=y -CONFIG_SERIAL_ATMEL_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_I2C=y -CONFIG_I2C_GPIO=y -CONFIG_SPI=y -CONFIG_SPI_ATMEL=y -# CONFIG_HWMON is not set -CONFIG_WATCHDOG=y -CONFIG_AT91SAM9X_WATCHDOG=y -CONFIG_SSB=m -CONFIG_FB=y -CONFIG_FB_MODE_HELPERS=y -CONFIG_FB_ATMEL=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_ATMEL_LCDC=y -# CONFIG_BACKLIGHT_GENERIC is not set -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y -CONFIG_FONTS=y -CONFIG_FONT_8x8=y -CONFIG_FONT_ACORN_8x8=y -CONFIG_FONT_MINI_4x6=y -CONFIG_LOGO=y -CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_ACM=y -CONFIG_USB_STORAGE=y -CONFIG_USB_SERIAL=y -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_FTDI_SIO=y -CONFIG_USB_SERIAL_PL2303=y -CONFIG_USB_GADGET=y -CONFIG_USB_AT91=m -CONFIG_USB_ETH=m -CONFIG_USB_GADGETFS=m -CONFIG_USB_CDC_COMPOSITE=m -CONFIG_USB_G_ACM_MS=m -CONFIG_USB_G_MULTI=m -CONFIG_USB_G_MULTI_CDC=y -CONFIG_MMC=y -CONFIG_MMC_ATMELMCI=y -CONFIG_MMC_SPI=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_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_GPIO=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_AT91RM9200=y -CONFIG_RTC_DRV_AT91SAM9=y -CONFIG_DMADEVICES=y -# CONFIG_IOMMU_SUPPORT is not set -CONFIG_EXT2_FS=y -CONFIG_FANOTIFY=y -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_UBIFS_FS=y -CONFIG_UBIFS_FS_ADVANCED_COMPR=y -CONFIG_NFS_FS=y -CONFIG_ROOT_NFS=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_ISO8859_1=y -CONFIG_STRIP_ASM_SYMS=y -CONFIG_DEBUG_FS=y -# CONFIG_SCHED_DEBUG is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_FTRACE is not set -CONFIG_DEBUG_USER=y -CONFIG_CRYPTO_ECB=y -CONFIG_CRYPTO_ARC4=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -CONFIG_CRYPTO_USER_API_HASH=m -CONFIG_CRYPTO_USER_API_SKCIPHER=m -# CONFIG_CRYPTO_HW is not set -CONFIG_CRC_CCITT=m -CONFIG_AVERAGE=y diff --git a/bsp/buildroot/board/calao/usb-a9260/at91bootstrap-1.16-usb-a9260.patch b/bsp/buildroot/board/calao/usb-a9260/at91bootstrap-1.16-usb-a9260.patch deleted file mode 100644 index 1393677d..00000000 --- a/bsp/buildroot/board/calao/usb-a9260/at91bootstrap-1.16-usb-a9260.patch +++ /dev/null @@ -1,603 +0,0 @@ -From 43e8c90f13806405bde8eaaf3a956d0ddc806f64 Mon Sep 17 00:00:00 2001 -From: Gregory Hermant -Date: Tue, 2 Oct 2012 09:19:15 +0200 -Subject: [PATCH] Add support for the USB-A9260 - - -Signed-off-by: Gregory Hermant ---- - board/usb_a9260/nandflash/Makefile | 122 ++++++++++++++ - board/usb_a9260/nandflash/usb-a9260.h | 109 ++++++++++++ - board/usb_a9260/usb_a9260.c | 298 +++++++++++++++++++++++++++++++++ - crt0_gnu.S | 7 + - include/part.h | 6 +- - 5 files changed, 541 insertions(+), 1 deletion(-) - create mode 100644 board/usb_a9260/nandflash/Makefile - create mode 100644 board/usb_a9260/nandflash/usb-a9260.h - create mode 100644 board/usb_a9260/usb_a9260.c - -diff --git a/board/usb_a9260/nandflash/Makefile b/board/usb_a9260/nandflash/Makefile -new file mode 100644 -index 0000000..02f4b50 ---- /dev/null -+++ b/board/usb_a9260/nandflash/Makefile -@@ -0,0 +1,122 @@ -+# TODO: set this appropriately for your local toolchain -+ifndef ERASE_FCT -+ERASE_FCT=rm -f -+endif -+ifndef CROSS_COMPILE -+CROSS_COMPILE=arm-elf- -+endif -+ -+TOOLCHAIN=gcc -+ -+BOOTSTRAP_PATH=../../.. -+ -+# NandFlashBoot Configuration for USB-A9260 -+ -+# Target name (case sensitive!!!) -+TARGET=AT91SAM9260 -+# Board name (case sensitive!!!) -+BOARD=usb_a9260 -+# Link Address and Top_of_Memory -+LINK_ADDR=0x200000 -+TOP_OF_MEMORY=0x301000 -+# Name of current directory -+PROJECT=nandflash -+ -+ifndef BOOT_NAME -+BOOT_NAME=$(PROJECT)_$(BOARD) -+endif -+ -+INCL=./$(BOOTSTRAP_PATH)/board/$(BOARD)/$(PROJECT) -+ -+ifeq ($(TOOLCHAIN), gcc) -+ -+AS=$(CROSS_COMPILE)gcc -+CC=$(CROSS_COMPILE)gcc -+LD=$(CROSS_COMPILE)gcc -+NM= $(CROSS_COMPILE)nm -+SIZE=$(CROSS_COMPILE)size -+OBJCOPY=$(CROSS_COMPILE)objcopy -+OBJDUMP=$(CROSS_COMPILE)objdump -+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -+ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) -+ -+# Linker flags. -+# -Wl,...: tell GCC to pass this to linker. -+# -Map: create map file -+# --cref: add cross reference to map file -+LDFLAGS+=-nostartfiles -nostdlib -Wl,-Map=$(BOOT_NAME).map,--cref -+LDFLAGS+=-T $(BOOTSTRAP_PATH)/elf32-littlearm.lds -Ttext $(LINK_ADDR) -+OBJS=crt0_gnu.o -+ -+endif -+ -+OBJS+=\ -+ $(BOARD).o \ -+ main.o \ -+ gpio.o \ -+ pmc.o \ -+ debug.o \ -+ sdramc.o \ -+ nandflash.o \ -+ _udivsi3.o \ -+ _umodsi3.o \ -+ div0.o \ -+ udiv.o \ -+ string.o -+ -+ -+rebuild: clean all -+ -+all: $(BOOT_NAME) -+ -+ifeq ($(TOOLCHAIN), gcc) -+$(BOOT_NAME): $(OBJS) -+ $(LD) $(LDFLAGS) -n -o $(BOOT_NAME).elf $(OBJS) -+ $(OBJCOPY) --strip-debug --strip-unneeded $(BOOT_NAME).elf -O binary $(BOOT_NAME).bin -+endif -+ -+ -+$(BOARD).o: $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -o $(BOARD).o -+ -+main.o: $(BOOTSTRAP_PATH)/main.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/main.c -o main.o -+ -+gpio.o: $(BOOTSTRAP_PATH)/driver/gpio.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/gpio.c -o gpio.o -+ -+pmc.o: $(BOOTSTRAP_PATH)/driver/pmc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/pmc.c -o pmc.o -+ -+debug.o: $(BOOTSTRAP_PATH)/driver/debug.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/debug.c -o debug.o -+ -+sdramc.o: $(BOOTSTRAP_PATH)/driver/sdramc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/sdramc.c -o sdramc.o -+ -+dataflash.o: $(BOOTSTRAP_PATH)/driver/dataflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/dataflash.c -o dataflash.o -+ -+nandflash.o: $(BOOTSTRAP_PATH)/driver/nandflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/nandflash.c -o nandflash.o -+ -+crt0_gnu.o: $(BOOTSTRAP_PATH)/crt0_gnu.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/crt0_gnu.S -o crt0_gnu.o -+ -+div0.o: $(BOOTSTRAP_PATH)/lib/div0.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/div0.c -o div0.o -+ -+string.o: $(BOOTSTRAP_PATH)/lib/string.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/string.c -o string.o -+ -+udiv.o: $(BOOTSTRAP_PATH)/lib/udiv.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/udiv.c -o udiv.o -+ -+_udivsi3.o: $(BOOTSTRAP_PATH)/lib/_udivsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_udivsi3.S -o _udivsi3.o -+ -+_umodsi3.o: $(BOOTSTRAP_PATH)/lib/_umodsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_umodsi3.S -o _umodsi3.o -+ -+clean: -+ $(ERASE_FCT) *.o *.bin *.elf *.map -diff --git a/board/usb_a9260/nandflash/usb-a9260.h b/board/usb_a9260/nandflash/usb-a9260.h -new file mode 100644 -index 0000000..2aaf759 ---- /dev/null -+++ b/board/usb_a9260/nandflash/usb-a9260.h -@@ -0,0 +1,109 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2006, 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : usb-a9260.h -+ * Object : -+ * Creation : GH Oct 1th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#ifndef _USB_A9260_H -+#define _USB_A9260_H -+ -+/* ******************************************************************* */ -+/* PMC Settings */ -+/* */ -+/* The main oscillator is enabled as soon as possible in the c_startup */ -+/* and MCK is switched on the main oscillator. */ -+/* PLL initialization is done later in the hw_init() function */ -+/* ******************************************************************* */ -+#define MASTER_CLOCK (180000000/2) -+#define PLL_LOCK_TIMEOUT 1000000 -+ -+#define PLLA_SETTINGS 0x20593F06 -+#define PLLB_SETTINGS 0x10483F0E -+ -+/* Switch MCK on PLLA output PCK = PLLA = 2 * MCK */ -+#define MCKR_SETTINGS (AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2) -+#define MCKR_CSS_SETTINGS (AT91C_PMC_CSS_PLLA_CLK | MCKR_SETTINGS) -+ -+/* ******************************************************************* */ -+/* NandFlash Settings */ -+/* */ -+/* ******************************************************************* */ -+#define AT91C_SMARTMEDIA_BASE 0x40000000 -+ -+#define AT91_SMART_MEDIA_ALE (1 << 21) /* our ALE is AD21 */ -+#define AT91_SMART_MEDIA_CLE (1 << 22) /* our CLE is AD22 */ -+ -+#define NAND_DISABLE_CE() do { *(volatile unsigned int *)AT91C_PIOC_SODR = AT91C_PIO_PC14;} while(0) -+#define NAND_ENABLE_CE() do { *(volatile unsigned int *)AT91C_PIOC_CODR = AT91C_PIO_PC14;} while(0) -+ -+#define NAND_WAIT_READY() while (!(*(volatile unsigned int *)AT91C_PIOC_PDSR & AT91C_PIO_PC13)) -+ -+ -+/* ******************************************************************** */ -+/* SMC Chip Select 3 Timings for NandFlash for MASTER_CLOCK = 90000000.*/ -+/* Please refer to SMC section in AT91SAM datasheet to learn how */ -+/* to generate these values. */ -+/* ******************************************************************** */ -+#define AT91C_SM_NWE_SETUP (1 << 0) -+#define AT91C_SM_NCS_WR_SETUP (0 << 8) -+#define AT91C_SM_NRD_SETUP (1 << 16) -+#define AT91C_SM_NCS_RD_SETUP (0 << 24) -+ -+#define AT91C_SM_NWE_PULSE (3 << 0) -+#define AT91C_SM_NCS_WR_PULSE (3 << 8) -+#define AT91C_SM_NRD_PULSE (3 << 16) -+#define AT91C_SM_NCS_RD_PULSE (3 << 24) -+ -+#define AT91C_SM_NWE_CYCLE (5 << 0) -+#define AT91C_SM_NRD_CYCLE (5 << 16) -+#define AT91C_SM_TDF (2 << 16) -+ -+/* ******************************************************************* */ -+/* BootStrap Settings */ -+/* */ -+/* ******************************************************************* */ -+#define IMG_ADDRESS 0x20000 /* Image Address in NandFlash */ -+#define IMG_SIZE 0x40000 /* Image Size in NandFlash */ -+ -+#define MACH_TYPE 0x6AD /* USB-A9260 */ -+#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ -+ -+/* ******************************************************************* */ -+/* Application Settings */ -+/* ******************************************************************* */ -+#undef CFG_DEBUG -+#undef CFG_DATAFLASH -+ -+#define CFG_NANDFLASH -+#undef NANDFLASH_SMALL_BLOCKS /* NANDFLASH_LARGE_BLOCKS used instead */ -+ -+#define CFG_HW_INIT -+#define CFG_SDRAM -+ -+#endif /* _USB_A9260_H */ -diff --git a/board/usb_a9260/usb_a9260.c b/board/usb_a9260/usb_a9260.c -new file mode 100644 -index 0000000..de30f0b ---- /dev/null -+++ b/board/usb_a9260/usb_a9260.c -@@ -0,0 +1,298 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2006, 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 disclaiimer 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : usb_a9260.c -+ * Object : -+ * Creation : GH Oct 1th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#include "../../include/part.h" -+#include "../../include/gpio.h" -+#include "../../include/pmc.h" -+#include "../../include/debug.h" -+#include "../../include/sdramc.h" -+#include "../../include/main.h" -+#ifdef CFG_NANDFLASH -+#include "../../include/nandflash.h" -+#endif -+#ifdef CFG_DATAFLASH -+#include "../../include/dataflash.h" -+#endif -+ -+static inline unsigned int get_cp15(void) -+{ -+ unsigned int value; -+ __asm__("mrc p15, 0, %0, c1, c0, 0" : "=r" (value)); -+ return value; -+} -+ -+static inline void set_cp15(unsigned int value) -+{ -+ __asm__("mcr p15, 0, %0, c1, c0, 0" : : "r" (value)); -+} -+ -+#ifdef CFG_HW_INIT -+/*----------------------------------------------------------------------------*/ -+/* \fn hw_init */ -+/* \brief This function performs very low level HW initialization */ -+/* This function is invoked as soon as possible during the c_startup */ -+/* The bss segment must be initialized */ -+/*----------------------------------------------------------------------------*/ -+void hw_init(void) -+{ -+ unsigned int cp15; -+ -+ /* Configure PIOs */ -+ const struct pio_desc hw_pio[] = { -+#ifdef CFG_DEBUG -+ {"RXD", AT91C_PIN_PB(14), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"TXD", AT91C_PIN_PB(15), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#endif -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Disable watchdog */ -+ writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); -+ -+ /* At this stage the main oscillator is supposed to be enabled -+ * PCK = MCK = MOSC */ -+ -+ /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ -+ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* PCK = PLLA = 2 * MCK */ -+ pmc_cfg_mck(MCKR_SETTINGS, PLL_LOCK_TIMEOUT); -+ /* Switch MCK on PLLA output */ -+ pmc_cfg_mck(MCKR_CSS_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* Configure PLLB */ -+ pmc_cfg_pllb(PLLB_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* Configure CP15 */ -+ cp15 = get_cp15(); -+ cp15 |= I_CACHE; -+ set_cp15(cp15); -+ -+ /* Configure the PIO controller */ -+ pio_setup(hw_pio); -+ -+ /* Configure the EBI Slave Slot Cycle to 64 */ -+ writel( (readl((AT91C_BASE_MATRIX + MATRIX_SCFG3)) & ~0xFF) | 0x40, (AT91C_BASE_MATRIX + MATRIX_SCFG3)); -+ -+#ifdef CFG_DEBUG -+ /* Enable Debug messages on the DBGU */ -+ dbg_init(BAUDRATE(MASTER_CLOCK, 115200)); -+ -+ dbg_print("Start AT91Bootstrap...\n\r"); -+#endif /* CFG_DEBUG */ -+ -+#ifdef CFG_SDRAM -+ /* Initialize the matrix */ -+ writel(readl(AT91C_BASE_CCFG + CCFG_EBICSA) | AT91C_EBI_CS1A_SDRAMC, AT91C_BASE_CCFG + CCFG_EBICSA); -+ -+ /* Configure SDRAM Controller */ -+ sdram_init( AT91C_SDRAMC_NC_9 | -+ AT91C_SDRAMC_NR_13 | -+ AT91C_SDRAMC_CAS_2 | -+ AT91C_SDRAMC_NB_4_BANKS | -+ AT91C_SDRAMC_DBW_32_BITS | -+ AT91C_SDRAMC_TWR_2 | -+ AT91C_SDRAMC_TRC_7 | -+ AT91C_SDRAMC_TRP_2 | -+ AT91C_SDRAMC_TRCD_2 | -+ AT91C_SDRAMC_TRAS_5 | -+ AT91C_SDRAMC_TXSR_8, /* Control Register */ -+ (MASTER_CLOCK * 7)/1000000, /* Refresh Timer Register */ -+ AT91C_SDRAMC_MD_SDRAM); /* SDRAM (no low power) */ -+ -+ -+#endif /* CFG_SDRAM */ -+} -+#endif /* CFG_HW_INIT */ -+ -+#ifdef CFG_SDRAM -+/*------------------------------------------------------------------------------*/ -+/* \fn sdramc_hw_init */ -+/* \brief This function performs SDRAMC HW initialization */ -+/*------------------------------------------------------------------------------*/ -+void sdramc_hw_init(void) -+{ -+ /* Configure PIOs */ -+/* const struct pio_desc sdramc_pio[] = { -+ {"D16", AT91C_PIN_PC(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D17", AT91C_PIN_PC(17), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D18", AT91C_PIN_PC(18), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D19", AT91C_PIN_PC(19), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D20", AT91C_PIN_PC(20), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D21", AT91C_PIN_PC(21), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D22", AT91C_PIN_PC(22), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D23", AT91C_PIN_PC(23), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D24", AT91C_PIN_PC(24), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D25", AT91C_PIN_PC(25), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D26", AT91C_PIN_PC(26), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D27", AT91C_PIN_PC(27), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D28", AT91C_PIN_PC(28), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D29", AT91C_PIN_PC(29), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D30", AT91C_PIN_PC(30), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D31", AT91C_PIN_PC(31), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+*/ -+ /* Configure the SDRAMC PIO controller to output PCK0 */ -+/* pio_setup(sdramc_pio); */ -+ -+ writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_ASR(0)); -+ writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_PDR(0)); -+ -+} -+#endif /* CFG_SDRAM */ -+ -+#ifdef CFG_DATAFLASH -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn df_recovery */ -+/* \brief This function erases DataFlash Page 0 if USR PB is pressed */ -+/* during boot sequence */ -+/*------------------------------------------------------------------------------*/ -+void df_recovery(AT91PS_DF pDf) -+{ -+#if (AT91C_SPI_PCS_DATAFLASH == AT91C_SPI_PCS0_DATAFLASH) -+ /* Configure PIOs */ -+ const struct pio_desc usrpb_pio[] = { -+ {"USRPB", AT91C_PIN_PB(10), 0, PIO_PULLUP, PIO_INPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOB), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(usrpb_pio); -+ -+ /* If USR PB is pressed during Boot sequence */ -+ /* Erase DataFlash Page 0*/ -+ if ( !pio_get_value(AT91C_PIN_PB(10)) ) -+ df_page_erase(pDf, 0); -+#endif -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn df_hw_init */ -+/* \brief This function performs DataFlash HW initialization */ -+/*------------------------------------------------------------------------------*/ -+void df_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc df_pio[] = { -+ {"MISO", AT91C_PIN_PA(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"MOSI", AT91C_PIN_PA(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"SPCK", AT91C_PIN_PA(2), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#if (AT91C_SPI_PCS_DATAFLASH == AT91C_SPI_PCS0_DATAFLASH) -+ {"NPCS0", AT91C_PIN_PA(3), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#endif -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ pio_setup(df_pio); -+} -+#endif /* CFG_DATAFLASH */ -+ -+ -+ -+#ifdef CFG_NANDFLASH -+/*------------------------------------------------------------------------------*/ -+/* \fn nand_recovery */ -+/* \brief This function erases NandFlash Block 0 if USR PB is pressed */ -+/* during boot sequence */ -+/*------------------------------------------------------------------------------*/ -+static void nand_recovery(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc usrpb_pio[] = { -+ {"USRPB", AT91C_PIN_PB(10), 0, PIO_PULLUP, PIO_INPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOB), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(usrpb_pio); -+ -+ /* If USR PB is pressed during Boot sequence */ -+ /* Erase NandFlash block 0*/ -+ if (!pio_get_value(AT91C_PIN_PB(10)) ) -+ AT91F_NandEraseBlock0(); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_hw_init */ -+/* \brief NandFlash HW init */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc nand_pio[] = { -+ {"RDY_BSY", AT91C_PIN_PC(13), 0, PIO_PULLUP, PIO_INPUT}, -+ {"NANDCS", AT91C_PIN_PC(14), 0, PIO_PULLUP, PIO_OUTPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Setup Smart Media, first enable the address range of CS3 in HMATRIX user interface */ -+ writel(readl(AT91C_BASE_CCFG + CCFG_EBICSA) | AT91C_EBI_CS3A_SM, AT91C_BASE_CCFG + CCFG_EBICSA); -+ -+ /* Configure SMC CS3 */ -+ writel((AT91C_SM_NWE_SETUP | AT91C_SM_NCS_WR_SETUP | AT91C_SM_NRD_SETUP | AT91C_SM_NCS_RD_SETUP), AT91C_BASE_SMC + SMC_SETUP3); -+ writel((AT91C_SM_NWE_PULSE | AT91C_SM_NCS_WR_PULSE | AT91C_SM_NRD_PULSE | AT91C_SM_NCS_RD_PULSE), AT91C_BASE_SMC + SMC_PULSE3); -+ writel((AT91C_SM_NWE_CYCLE | AT91C_SM_NRD_CYCLE) , AT91C_BASE_SMC + SMC_CYCLE3); -+ writel((AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE | AT91C_SMC_NWAITM_NWAIT_DISABLE | -+ AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS | AT91C_SM_TDF) , AT91C_BASE_SMC + SMC_CTRL3); -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOC), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(nand_pio); -+ -+ nand_recovery(); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_16bits_dbw_init */ -+/* \brief Configure SMC in 16 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_16bits_dbw_init(void) -+{ -+ writel(readl(AT91C_BASE_SMC + SMC_CTRL3) | AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS, AT91C_BASE_SMC + SMC_CTRL3); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_8bits_dbw_init */ -+/* \brief Configure SMC in 8 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_8bits_dbw_init(void) -+{ -+ writel((readl(AT91C_BASE_SMC + SMC_CTRL3) & ~(AT91C_SMC_DBW)) | AT91C_SMC_DBW_WIDTH_EIGTH_BITS, AT91C_BASE_SMC + SMC_CTRL3); -+} -+ -+ -+#endif /* #ifdef CFG_NANDFLASH */ -diff --git a/crt0_gnu.S b/crt0_gnu.S -index 042b617..002feef 100644 ---- a/crt0_gnu.S -+++ b/crt0_gnu.S -@@ -106,6 +106,13 @@ _relocate_to_sram: - #endif /* CFG_NORFLASH */ - - _setup_clocks: -+/* Test if main osc is bypassed */ -+ ldr r0,=AT91C_PMC_MOR -+ ldr r1, [r0] -+ ldr r2,=AT91C_CKGR_OSCBYPASS -+ ands r1, r1, r2 -+ bne _init_data /* branch if OSCBYPASS=1 */ -+ - /* Test if main oscillator is enabled */ - ldr r0,=AT91C_PMC_SR - ldr r1, [r0] -diff --git a/include/part.h b/include/part.h -index ba5985a..212789f 100644 ---- a/include/part.h -+++ b/include/part.h -@@ -35,7 +35,11 @@ - - #ifdef AT91SAM9260 - #include "AT91SAM9260_inc.h" --#include "at91sam9260ek.h" -+ #ifdef at91sam9260ek -+ #include "at91sam9260ek.h" -+ #elif usb_a9260 -+ #include "usb-a9260.h" -+ #endif - #endif - - #ifdef AT91SAM9XE --- -1.7.9.5 - diff --git a/bsp/buildroot/board/calao/usb-a9260/linux-3.7.4.config b/bsp/buildroot/board/calao/usb-a9260/linux-3.7.4.config deleted file mode 100644 index c466bdc8..00000000 --- a/bsp/buildroot/board/calao/usb-a9260/linux-3.7.4.config +++ /dev/null @@ -1,97 +0,0 @@ -CONFIG_EXPERIMENTAL=y -# CONFIG_LOCALVERSION_AUTO is not set -# CONFIG_SWAP is not set -CONFIG_SYSVIPC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_SLAB=y -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_AT91=y -CONFIG_ARCH_AT91SAM9260=y -CONFIG_MACH_USB_A9260=y -CONFIG_AT91_SLOW_CLOCK=y -# CONFIG_ARM_THUMB is not set -CONFIG_AEABI=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="mem=64M console=ttyS0,115200" -CONFIG_FPE_NWFPE=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=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_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_DATAFLASH=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_ATMEL=y -CONFIG_MTD_UBI=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_MACB=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_EVBUG=y -# CONFIG_KEYBOARD_ATKBD is not set -CONFIG_KEYBOARD_GPIO=y -# CONFIG_INPUT_MOUSE is not set -# CONFIG_SERIO is not set -CONFIG_SERIAL_ATMEL=y -CONFIG_SERIAL_ATMEL_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_SPI=y -CONFIG_SPI_ATMEL=y -# CONFIG_HWMON is not set -# CONFIG_USB_HID is not set -CONFIG_USB=y -CONFIG_USB_MON=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_ETH=m -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_EXT2_FS=y -CONFIG_FUSE_FS=m -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_UBIFS_FS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3_ACL=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_KERNEL=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_LL=y diff --git a/bsp/buildroot/board/calao/usb-a9263/at91bootstrap-1.16-usb-a9263.patch b/bsp/buildroot/board/calao/usb-a9263/at91bootstrap-1.16-usb-a9263.patch deleted file mode 100644 index 57989305..00000000 --- a/bsp/buildroot/board/calao/usb-a9263/at91bootstrap-1.16-usb-a9263.patch +++ /dev/null @@ -1,851 +0,0 @@ -From 74796655212d321f50ab89e8c5570245901f4cba Mon Sep 17 00:00:00 2001 -From: Gregory Hermant -Date: Thu, 5 Jul 2012 18:44:07 +0200 -Subject: [PATCH] Add support for the Calao-systems USB-A9263 - - -Signed-off-by: Gregory Hermant ---- - board/usb_a9263/dataflash/Makefile | 115 +++++++++++++ - board/usb_a9263/dataflash/usb-a9263.h | 97 +++++++++++ - board/usb_a9263/nandflash/Makefile | 117 ++++++++++++++ - board/usb_a9263/nandflash/usb-a9263.h | 116 +++++++++++++ - board/usb_a9263/usb_a9263.c | 285 +++++++++++++++++++++++++++++++++ - crt0_gnu.S | 7 + - driver/dataflash.c | 6 +- - include/part.h | 6 +- - 8 files changed, 745 insertions(+), 4 deletions(-) - create mode 100644 board/usb_a9263/dataflash/Makefile - create mode 100644 board/usb_a9263/dataflash/usb-a9263.h - create mode 100644 board/usb_a9263/nandflash/Makefile - create mode 100644 board/usb_a9263/nandflash/usb-a9263.h - create mode 100644 board/usb_a9263/usb_a9263.c - -diff --git a/board/usb_a9263/dataflash/Makefile b/board/usb_a9263/dataflash/Makefile -new file mode 100644 -index 0000000..332685e ---- /dev/null -+++ b/board/usb_a9263/dataflash/Makefile -@@ -0,0 +1,115 @@ -+# TODO: set this appropriately for your local toolchain -+#SHELL=C:\CYGWIN_REP\dwn_071004\bin\BASH.exe -+CROSS_COMPILE=arm-elf- -+#CROSS_COMPILE = arm-softfloat-linux-gnu- -+ -+TOOLCHAIN=gcc -+ -+BOOTSTRAP_PATH=../../.. -+ -+# DataFlashBoot Configuration for USB-A9263 -+ -+# Target name (case sensitive!!!) -+TARGET=AT91SAM9263 -+# Board name (case sensitive!!!) -+BOARD=usb_a9263 -+# Link Address and Top_of_Memory -+LINK_ADDR=0x300000 -+TOP_OF_MEMORY=0x314000 -+# Name of current directory -+PROJECT=dataflash -+ -+ifndef BOOT_NAME -+BOOT_NAME=$(PROJECT)_$(BOARD) -+endif -+ -+INCL=./$(BOOTSTRAP_PATH)/board/$(BOARD)/$(PROJECT) -+ -+ifeq ($(TOOLCHAIN), gcc) -+ -+AS=$(CROSS_COMPILE)gcc -+CC=$(CROSS_COMPILE)gcc -+LD=$(CROSS_COMPILE)gcc -+NM= $(CROSS_COMPILE)nm -+SIZE=$(CROSS_COMPILE)size -+OBJCOPY=$(CROSS_COMPILE)objcopy -+OBJDUMP=$(CROSS_COMPILE)objdump -+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -+ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) -+ -+# Linker flags. -+# -Wl,...: tell GCC to pass this to linker. -+# -Map: create map file -+# --cref: add cross reference to map file -+LDFLAGS+=-nostartfiles -nostdlib -Wl,-Map=$(BOOT_NAME).map,--cref -+LDFLAGS+=-T $(BOOTSTRAP_PATH)/elf32-littlearm.lds -Ttext $(LINK_ADDR) -+OBJS=crt0_gnu.o -+ -+endif -+ -+OBJS+=\ -+ $(BOARD).o \ -+ main.o \ -+ gpio.o \ -+ pmc.o \ -+ debug.o \ -+ sdramc.o \ -+ dataflash.o \ -+ _udivsi3.o \ -+ _umodsi3.o \ -+ div0.o \ -+ udiv.o \ -+ string.o -+ -+rebuild: clean all -+ -+all: $(BOOT_NAME) -+ -+ifeq ($(TOOLCHAIN), gcc) -+$(BOOT_NAME): $(OBJS) -+ $(LD) $(LDFLAGS) -n -o $(BOOT_NAME).elf $(OBJS) -+ $(OBJCOPY) --strip-debug --strip-unneeded $(BOOT_NAME).elf -O binary $(BOOT_NAME).bin -+endif -+ -+ -+$(BOARD).o: $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -o $(BOARD).o -+ -+main.o: $(BOOTSTRAP_PATH)/main.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/main.c -o main.o -+ -+gpio.o: $(BOOTSTRAP_PATH)/driver/gpio.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/gpio.c -o gpio.o -+ -+pmc.o: $(BOOTSTRAP_PATH)/driver/pmc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/pmc.c -o pmc.o -+ -+debug.o: $(BOOTSTRAP_PATH)/driver/debug.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/debug.c -o debug.o -+ -+sdramc.o: $(BOOTSTRAP_PATH)/driver/sdramc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/sdramc.c -o sdramc.o -+ -+dataflash.o: $(BOOTSTRAP_PATH)/driver/dataflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/dataflash.c -o dataflash.o -+ -+crt0_gnu.o: $(BOOTSTRAP_PATH)/crt0_gnu.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/crt0_gnu.S -o crt0_gnu.o -+ -+div0.o: $(BOOTSTRAP_PATH)/lib/div0.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/div0.c -o div0.o -+ -+string.o: $(BOOTSTRAP_PATH)/lib/string.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/string.c -o string.o -+ -+udiv.o: $(BOOTSTRAP_PATH)/lib/udiv.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/udiv.c -o udiv.o -+ -+_udivsi3.o: $(BOOTSTRAP_PATH)/lib/_udivsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_udivsi3.S -o _udivsi3.o -+ -+_umodsi3.o: $(BOOTSTRAP_PATH)/lib/_umodsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_umodsi3.S -o _umodsi3.o -+ -+clean: -+ rm -f *.o *.bin *.elf *.map -diff --git a/board/usb_a9263/dataflash/usb-a9263.h b/board/usb_a9263/dataflash/usb-a9263.h -new file mode 100644 -index 0000000..40a3af8 ---- /dev/null -+++ b/board/usb_a9263/dataflash/usb-a9263.h -@@ -0,0 +1,97 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2006, 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : usb-a9263.h -+ * Object : -+ * Creation : GH Jun 28th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#ifndef _USB_A9263_H -+#define _USB_A9263_H -+ -+/* ******************************************************************* */ -+/* PMC Settings */ -+/* */ -+/* The main oscillator is enabled as soon as possible in the c_startup */ -+/* and MCK is switched on the main oscillator. */ -+/* PLL initialization is done later in the hw_init() function */ -+/* ******************************************************************* */ -+#define MASTER_CLOCK (180000000/2) -+#define PLL_LOCK_TIMEOUT 1000000 -+ -+#define PLLA_SETTINGS 0x20593F06 -+#define PLLB_SETTINGS 0x10483F0E -+ -+/* Switch MCK on PLLA output PCK = PLLA = 2 * MCK */ -+#define MCKR_SETTINGS (AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2) -+#define MCKR_CSS_SETTINGS (AT91C_PMC_CSS_PLLA_CLK | MCKR_SETTINGS) -+ -+/* ******************************************************************* */ -+/* DataFlash Settings */ -+/* */ -+/* ******************************************************************* */ -+#define AT91C_BASE_SPI AT91C_BASE_SPI0 -+#define AT91C_ID_SPI AT91C_ID_SPI0 -+ -+/* SPI CLOCK */ -+#define AT91C_SPI_CLK 8000000 -+/* AC characteristics */ -+/* DLYBS = tCSS= 250ns min and DLYBCT = tCSH = 250ns */ -+#define DATAFLASH_TCSS (0x1a << 16) /* 250ns min (tCSS) <=> 12/48000000 = 250ns */ -+#define DATAFLASH_TCHS (0x1 << 24) /* 250ns min (tCSH) <=> (64*1+SCBR)/(2*48000000) */ -+ -+#define DF_CS_SETTINGS (AT91C_SPI_NCPHA | (AT91C_SPI_DLYBS & DATAFLASH_TCSS) | (AT91C_SPI_DLYBCT & DATAFLASH_TCHS) | ((MASTER_CLOCK / AT91C_SPI_CLK) << 8)) -+ -+/* ******************************************************************* */ -+/* SDRAMC Settings */ -+/* */ -+/* ******************************************************************* */ -+#define AT91C_BASE_SDRAMC AT91C_BASE_SDRAMC0 -+#define AT91C_EBI_SDRAM AT91C_EBI0_SDRAM -+ -+/* ******************************************************************* */ -+/* BootStrap Settings */ -+/* */ -+/* ******************************************************************* */ -+#define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ -+ -+#define IMG_ADDRESS 0x4000 /* Image Address in DataFlash */ -+#define IMG_SIZE 0x40000 /* Image Size in DataFlash */ -+ -+#define MACH_TYPE 0x6AE /* USB-A9263 */ -+#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ -+ -+/* ******************************************************************* */ -+/* Application Settings */ -+/* ******************************************************************* */ -+#define CFG_HW_INIT -+#define CFG_SDRAM -+#undef CFG_DEBUG -+ -+#define CFG_DATAFLASH -+ -+#endif /* _USB_A9263_H */ -diff --git a/board/usb_a9263/nandflash/Makefile b/board/usb_a9263/nandflash/Makefile -new file mode 100644 -index 0000000..c453098 ---- /dev/null -+++ b/board/usb_a9263/nandflash/Makefile -@@ -0,0 +1,117 @@ -+# TODO: set this appropriately for your local toolchain -+#SHELL=C:\CYGWIN_REP\dwn_071004\bin\BASH.exe -+CROSS_COMPILE=arm-elf- -+ -+TOOLCHAIN=gcc -+ -+BOOTSTRAP_PATH=../../.. -+ -+# NandFlashBoot Configuration for USB-A9263 -+ -+# Target name (case sensitive!!!) -+TARGET=AT91SAM9263 -+# Board name (case sensitive!!!) -+BOARD=usb_a9263 -+# Link Address and Top_of_Memory -+LINK_ADDR=0x300000 -+TOP_OF_MEMORY=0x314000 -+# Name of current directory -+PROJECT=nandflash -+ -+ifndef BOOT_NAME -+BOOT_NAME=$(PROJECT)_$(BOARD) -+endif -+ -+INCL=./$(BOOTSTRAP_PATH)/board/$(BOARD)/$(PROJECT) -+ -+ifeq ($(TOOLCHAIN), gcc) -+ -+AS=$(CROSS_COMPILE)gcc -+CC=$(CROSS_COMPILE)gcc -+LD=$(CROSS_COMPILE)gcc -+NM= $(CROSS_COMPILE)nm -+SIZE=$(CROSS_COMPILE)size -+OBJCOPY=$(CROSS_COMPILE)objcopy -+OBJDUMP=$(CROSS_COMPILE)objdump -+CCFLAGS=-g -mcpu=arm9 -O0 -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -+ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) -+ -+# Linker flags. -+# -Wl,...: tell GCC to pass this to linker. -+# -Map: create map file -+# --cref: add cross reference to map file -+LDFLAGS+=-nostartfiles -nostdlib -Wl,-Map=$(BOOT_NAME).map,--cref -+LDFLAGS+=-T $(BOOTSTRAP_PATH)/elf32-littlearm.lds -Ttext $(LINK_ADDR) -+OBJS=crt0_gnu.o -+ -+endif -+ -+OBJS+=\ -+ $(BOARD).o \ -+ main.o \ -+ gpio.o \ -+ pmc.o \ -+ debug.o \ -+ sdramc.o \ -+ nandflash.o \ -+ _udivsi3.o \ -+ _umodsi3.o \ -+ div0.o \ -+ udiv.o \ -+ string.o -+ -+rebuild: clean all -+ -+all: $(BOOT_NAME) -+ -+ifeq ($(TOOLCHAIN), gcc) -+$(BOOT_NAME): $(OBJS) -+ $(LD) $(LDFLAGS) -n -o $(BOOT_NAME).elf $(OBJS) -+ $(OBJCOPY) --strip-debug --strip-unneeded $(BOOT_NAME).elf -O binary $(BOOT_NAME).bin -+endif -+ -+ -+$(BOARD).o: $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -o $(BOARD).o -+ -+main.o: $(BOOTSTRAP_PATH)/main.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/main.c -o main.o -+ -+gpio.o: $(BOOTSTRAP_PATH)/driver/gpio.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/gpio.c -o gpio.o -+ -+pmc.o: $(BOOTSTRAP_PATH)/driver/pmc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/pmc.c -o pmc.o -+ -+debug.o: $(BOOTSTRAP_PATH)/driver/debug.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/debug.c -o debug.o -+ -+sdramc.o: $(BOOTSTRAP_PATH)/driver/sdramc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/sdramc.c -o sdramc.o -+ -+dataflash.o: $(BOOTSTRAP_PATH)/driver/dataflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/dataflash.c -o dataflash.o -+ -+nandflash.o: $(BOOTSTRAP_PATH)/driver/nandflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/nandflash.c -o nandflash.o -+ -+crt0_gnu.o: $(BOOTSTRAP_PATH)/crt0_gnu.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/crt0_gnu.S -o crt0_gnu.o -+ -+div0.o: $(BOOTSTRAP_PATH)/lib/div0.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/div0.c -o div0.o -+ -+string.o: $(BOOTSTRAP_PATH)/lib/string.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/string.c -o string.o -+ -+udiv.o: $(BOOTSTRAP_PATH)/lib/udiv.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/udiv.c -o udiv.o -+ -+_udivsi3.o: $(BOOTSTRAP_PATH)/lib/_udivsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_udivsi3.S -o _udivsi3.o -+ -+_umodsi3.o: $(BOOTSTRAP_PATH)/lib/_umodsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_umodsi3.S -o _umodsi3.o -+ -+clean: -+ rm -f *.o *.bin *.elf *.map -diff --git a/board/usb_a9263/nandflash/usb-a9263.h b/board/usb_a9263/nandflash/usb-a9263.h -new file mode 100644 -index 0000000..24e2cf1 ---- /dev/null -+++ b/board/usb_a9263/nandflash/usb-a9263.h -@@ -0,0 +1,116 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2006, 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : usb-a9263.h -+ * Object : -+ * Creation : GH Jun 28th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#ifndef _USB_A9263_H -+#define _USB_A9263_H -+ -+/* ******************************************************************* */ -+/* PMC Settings */ -+/* */ -+/* The main oscillator is enabled as soon as possible in the c_startup */ -+/* and MCK is switched on the main oscillator. */ -+/* PLL initialization is done later in the hw_init() function */ -+/* ******************************************************************* */ -+#define MASTER_CLOCK (180000000/2) -+#define PLL_LOCK_TIMEOUT 1000000 -+ -+#define PLLA_SETTINGS 0x20593F06 -+#define PLLB_SETTINGS 0x10483F0E -+ -+/* Switch MCK on PLLA output PCK = PLLA = 2 * MCK */ -+#define MCKR_SETTINGS (AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2) -+#define MCKR_CSS_SETTINGS (AT91C_PMC_CSS_PLLA_CLK | MCKR_SETTINGS) -+ -+/* ******************************************************************* */ -+/* NandFlash Settings */ -+/* */ -+/* ******************************************************************* */ -+#define AT91C_SMARTMEDIA_BASE 0x40000000 -+ -+#define AT91_SMART_MEDIA_ALE (1 << 21) /* our ALE is AD21 */ -+#define AT91_SMART_MEDIA_CLE (1 << 22) /* our CLE is AD22 */ -+ -+#define NAND_DISABLE_CE() do { *(volatile unsigned int *)AT91C_PIOD_SODR = AT91C_PIO_PD15;} while(0) -+#define NAND_ENABLE_CE() do { *(volatile unsigned int *)AT91C_PIOD_CODR = AT91C_PIO_PD15;} while(0) -+#define NAND_WAIT_READY() while (!(*(volatile unsigned int *)AT91C_PIOA_PDSR & AT91C_PIO_PA22)) -+ -+/* ******************************************************************* */ -+/* SDRAMC Settings */ -+/* */ -+/* ******************************************************************* */ -+#define AT91C_BASE_SDRAMC AT91C_BASE_SDRAMC0 -+#define AT91C_EBI_SDRAM AT91C_EBI0_SDRAM -+ -+/* ******************************************************************** */ -+/* SMC Chip Select 3 Timings for NandFlash for MASTER_CLOCK = 90000000. */ -+/* Please refer to SMC section in AT91SAM9x datasheet to learn how */ -+/* to generate these values. */ -+/* ******************************************************************** */ -+#define AT91C_SM_NWE_SETUP (1 << 0) -+#define AT91C_SM_NCS_WR_SETUP (0 << 8) -+#define AT91C_SM_NRD_SETUP (1 << 16) -+#define AT91C_SM_NCS_RD_SETUP (0 << 24) -+ -+#define AT91C_SM_NWE_PULSE (3 << 0) -+#define AT91C_SM_NCS_WR_PULSE (3 << 8) -+#define AT91C_SM_NRD_PULSE (3 << 16) -+#define AT91C_SM_NCS_RD_PULSE (3 << 24) -+ -+#define AT91C_SM_NWE_CYCLE (5 << 0) -+#define AT91C_SM_NRD_CYCLE (5 << 16) -+ -+#define AT91C_SM_TDF (2 << 16) -+ -+/* ******************************************************************* */ -+/* BootStrap Settings */ -+/* */ -+/* ******************************************************************* */ -+#define IMG_ADDRESS 0x20000 /* Image Address in NandFlash */ -+#define IMG_SIZE 0x40000 /* Image Size in NandFlash */ -+ -+#define MACH_TYPE 0x6AE /* USB-A9263 */ -+#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ -+ -+/* ******************************************************************* */ -+/* Application Settings */ -+/* ******************************************************************* */ -+#undef CFG_DEBUG -+#undef CFG_DATAFLASH -+ -+#define CFG_NANDFLASH -+#undef NANDFLASH_SMALL_BLOCKS /* NANDFLASH_LARGE_BLOCKS used instead */ -+ -+#define CFG_HW_INIT -+#define CFG_SDRAM -+ -+ -+#endif /* _USB_A9263_H */ -diff --git a/board/usb_a9263/usb_a9263.c b/board/usb_a9263/usb_a9263.c -new file mode 100644 -index 0000000..5630f99 ---- /dev/null -+++ b/board/usb_a9263/usb_a9263.c -@@ -0,0 +1,285 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2006, 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 disclaiimer 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : usb_a9263.c -+ * Object : -+ * Creation : GH Jun 28th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#include "../../include/part.h" -+#include "../../include/gpio.h" -+#include "../../include/pmc.h" -+#include "../../include/debug.h" -+#include "../../include/sdramc.h" -+#include "../../include/main.h" -+#ifdef CFG_NANDFLASH -+#include "../../include/nandflash.h" -+#endif -+#ifdef CFG_DATAFLASH -+#include "../../include/dataflash.h" -+#endif -+ -+static inline unsigned int get_cp15(void) -+{ -+ unsigned int value; -+ __asm__("mrc p15, 0, %0, c1, c0, 0" : "=r" (value)); -+ return value; -+} -+ -+static inline void set_cp15(unsigned int value) -+{ -+ __asm__("mcr p15, 0, %0, c1, c0, 0" : : "r" (value)); -+} -+ -+ -+#ifdef CFG_HW_INIT -+/*---------------------------------------------------------------------------- */ -+/* \fn hw_init */ -+/* \brief This function performs very low level HW initialization */ -+/* This function is invoked as soon as possible during the c_startup */ -+/* The bss segment must be initialized */ -+/*---------------------------------------------------------------------------- */ -+void hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc hw_pio[] = { -+#ifdef CFG_DEBUG -+ {"RXD", AT91C_PIN_PC(30), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"TXD", AT91C_PIN_PC(31), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#endif -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Disable watchdog */ -+ writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); -+ -+ /* At this stage the main oscillator is supposed to be enabled -+ * PCK = MCK = MOSC */ -+ -+ /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ -+ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* PCK = PLLA = 2 * MCK */ -+ pmc_cfg_mck(MCKR_SETTINGS, PLL_LOCK_TIMEOUT); -+ /* Switch MCK on PLLA output */ -+ pmc_cfg_mck(MCKR_CSS_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ -+ /* Configure PLLB */ -+ pmc_cfg_pllb(PLLB_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* Configure the PIO controller to output PCK0 */ -+ pio_setup(hw_pio); -+ -+ /* Configure the EBI0 Slave Slot Cycle to 64 */ -+ writel( (readl((AT91C_BASE_MATRIX + MATRIX_SCFG4)) & ~0xFF) | 0x40, (AT91C_BASE_MATRIX + MATRIX_SCFG4)); -+ -+#ifdef CFG_DEBUG -+ /* Enable Debug messages on the DBGU */ -+ dbg_init(BAUDRATE(MASTER_CLOCK, 115200)); -+ dbg_print("Start AT91Bootstrap...\n\r"); -+#endif /* CFG_DEBUG */ -+ -+#ifdef CFG_SDRAM -+ /* Initialize the matrix */ -+ /* VDDIOMSEL = 1 -> Memories are 3.3V powered */ -+ writel(readl(AT91C_BASE_CCFG + CCFG_EBI0CSA) | (1 << 16) | AT91C_EBI_CS1A_SDRAMC, AT91C_BASE_CCFG + CCFG_EBI0CSA); -+ -+ /* Configure SDRAM Controller */ -+ sdram_init( AT91C_SDRAMC_NC_9 | -+ AT91C_SDRAMC_NR_13 | -+ AT91C_SDRAMC_CAS_2 | -+ AT91C_SDRAMC_NB_4_BANKS | -+ AT91C_SDRAMC_DBW_32_BITS | -+ AT91C_SDRAMC_TWR_2 | -+ AT91C_SDRAMC_TRC_7 | -+ AT91C_SDRAMC_TRP_2 | -+ AT91C_SDRAMC_TRCD_2 | -+ AT91C_SDRAMC_TRAS_5 | -+ AT91C_SDRAMC_TXSR_8, /* Control Register */ -+ (MASTER_CLOCK * 7)/1000000, /* Refresh Timer Register */ -+ AT91C_SDRAMC_MD_SDRAM); /* SDRAM (no low power) */ -+#endif /* CFG_SDRAM */ -+} -+#endif /* CFG_HW_INIT */ -+ -+ -+#ifdef CFG_SDRAM -+//*---------------------------------------------------------------------------- -+//* \fn sdramc_hw_init -+//* \brief This function performs SDRAMC HW initialization -+//*----------------------------------------------------------------------------*/ -+void sdramc_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc sdramc_pio[] = { -+ {"D16", AT91C_PIN_PD(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D17", AT91C_PIN_PD(17), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D18", AT91C_PIN_PD(18), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D19", AT91C_PIN_PD(19), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D20", AT91C_PIN_PD(20), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D21", AT91C_PIN_PD(21), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D22", AT91C_PIN_PD(22), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D23", AT91C_PIN_PD(23), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D24", AT91C_PIN_PD(24), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D25", AT91C_PIN_PD(25), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D26", AT91C_PIN_PD(26), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D27", AT91C_PIN_PD(27), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D28", AT91C_PIN_PD(28), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D29", AT91C_PIN_PD(29), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D30", AT91C_PIN_PD(30), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D31", AT91C_PIN_PD(31), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the SDRAMC PIO controller */ -+ pio_setup(sdramc_pio); -+} -+#endif -+ -+#ifdef CFG_DATAFLASH -+/*------------------------------------------------------------------------------*/ -+/* \fn df_recovery */ -+/* \brief This function erases DataFlash Page 0 if USER PB is pressed */ -+/* during boot sequence */ -+/*------------------------------------------------------------------------------*/ -+void df_recovery(AT91PS_DF pDf) -+{ -+#if (AT91C_SPI_PCS_DATAFLASH == AT91C_SPI_PCS0_DATAFLASH) -+ /* Configure PIOs */ -+ const struct pio_desc usrpb_pio[] = { -+ {"USRPB", AT91C_PIN_PB(10), 0, PIO_PULLUP, PIO_INPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOB), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(usrpb_pio); -+ -+ /* If USER PB is pressed during Boot sequence */ -+ /* Erase NandFlash block 0*/ -+ if ( !pio_get_value(AT91C_PIN_PB(10)) ) -+ df_page_erase(pDf, 0); -+#endif -+} -+/*------------------------------------------------------------------------------*/ -+/* \fn df_hw_init */ -+/* \brief This function performs DataFlash HW initialization */ -+/*------------------------------------------------------------------------------*/ -+void df_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc df_pio[] = { -+ {"MISO", AT91C_PIN_PA(0), 0, PIO_DEFAULT, PIO_PERIPH_B}, -+ {"MOSI", AT91C_PIN_PA(1), 0, PIO_DEFAULT, PIO_PERIPH_B}, -+ {"SPCK", AT91C_PIN_PA(2), 0, PIO_DEFAULT, PIO_PERIPH_B}, -+ {"NPCS0", AT91C_PIN_PA(5), 0, PIO_DEFAULT, PIO_PERIPH_B}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ pio_setup(df_pio); -+} -+#endif /* CFG_DATAFLASH */ -+ -+ -+#ifdef CFG_NANDFLASH -+/*------------------------------------------------------------------------------*/ -+/* \fn nand_recovery */ -+/* \brief This function erases NandFlash Block 0 if USER PB is pressed */ -+/* during boot sequence */ -+/*------------------------------------------------------------------------------*/ -+static void nand_recovery(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc usrpb_pio[] = { -+ {"USRPB", AT91C_PIN_PB(10), 0, PIO_PULLUP, PIO_INPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOB), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(usrpb_pio); -+ -+ /* If USER PB is pressed during Boot sequence */ -+ /* Erase NandFlash block 0*/ -+ if (!pio_get_value(AT91C_PIN_PB(10)) ) -+ AT91F_NandEraseBlock0(); -+} -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_hw_init */ -+/* \brief NandFlash HW init */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc nand_pio[] = { -+ {"RDY_BSY", AT91C_PIN_PA(22), 0, PIO_PULLUP, PIO_INPUT}, -+ {"NANDCS", AT91C_PIN_PD(15), 0, PIO_PULLUP, PIO_OUTPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Setup Smart Media, first enable the address range of CS3 in HMATRIX user interface */ -+ writel(readl(AT91C_BASE_CCFG + CCFG_EBI0CSA) | AT91C_EBI_CS3A_SM, AT91C_BASE_CCFG + CCFG_EBI0CSA); -+ -+ /* Configure SMC CS3 */ -+ writel((AT91C_SM_NWE_SETUP | AT91C_SM_NCS_WR_SETUP | AT91C_SM_NRD_SETUP | AT91C_SM_NCS_RD_SETUP), AT91C_BASE_SMC0 + SMC_SETUP3); -+ writel((AT91C_SM_NWE_PULSE | AT91C_SM_NCS_WR_PULSE | AT91C_SM_NRD_PULSE | AT91C_SM_NCS_RD_PULSE), AT91C_BASE_SMC0 + SMC_PULSE3); -+ writel((AT91C_SM_NWE_CYCLE | AT91C_SM_NRD_CYCLE) , AT91C_BASE_SMC0 + SMC_CYCLE3); -+ writel((AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE | AT91C_SMC_NWAITM_NWAIT_DISABLE | -+ AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS | AT91C_SM_TDF) , AT91C_BASE_SMC0 + SMC_CTRL3); -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOA), PMC_PCER + AT91C_BASE_PMC); -+ writel((1 << AT91C_ID_PIOCDE), PMC_PCER + AT91C_BASE_PMC); -+ -+ pio_setup(nand_pio); -+ -+ nand_recovery(); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_16bits_dbw_init */ -+/* \brief Configure SMC in 16 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_16bits_dbw_init(void) -+{ -+ writel(readl(AT91C_BASE_SMC0 + SMC_CTRL3) | AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS, AT91C_BASE_SMC0 + SMC_CTRL3); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_8bits_dbw_init */ -+/* \brief Configure SMC in 8 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_8bits_dbw_init(void) -+{ -+ writel((readl(AT91C_BASE_SMC0 + SMC_CTRL3) & ~(AT91C_SMC_DBW)) | AT91C_SMC_DBW_WIDTH_EIGTH_BITS, AT91C_BASE_SMC0 + SMC_CTRL3); -+} -+ -+#endif /* #ifdef CFG_NANDFLASH */ -+ -+ -diff --git a/crt0_gnu.S b/crt0_gnu.S -index 042b617..002feef 100644 ---- a/crt0_gnu.S -+++ b/crt0_gnu.S -@@ -106,6 +106,13 @@ _relocate_to_sram: - #endif /* CFG_NORFLASH */ - - _setup_clocks: -+/* Test if main osc is bypassed */ -+ ldr r0,=AT91C_PMC_MOR -+ ldr r1, [r0] -+ ldr r2,=AT91C_CKGR_OSCBYPASS -+ ands r1, r1, r2 -+ bne _init_data /* branch if OSCBYPASS=1 */ -+ - /* Test if main oscillator is enabled */ - ldr r0,=AT91C_PMC_SR - ldr r1, [r0] -diff --git a/driver/dataflash.c b/driver/dataflash.c -index e28e49e..4de295a 100644 ---- a/driver/dataflash.c -+++ b/driver/dataflash.c -@@ -293,14 +293,14 @@ static int df_init (AT91PS_DF pDf) - pDf->dfDescription.pages_size = 264; - pDf->dfDescription.page_offset = 9; - break; -- -+*/ - case AT45DB021B: - pDf->dfDescription.pages_number = 1024; - pDf->dfDescription.pages_size = 264; - pDf->dfDescription.page_offset = 9; - break; - -- case AT45DB041B: -+/* case AT45DB041B: - pDf->dfDescription.pages_number = 2048; - pDf->dfDescription.pages_size = 264; - pDf->dfDescription.page_offset = 9; -@@ -373,7 +373,7 @@ int load_df(unsigned int pcs, unsigned int img_addr, unsigned int img_size, unsi - if (!df_init(pDf)) - return -1; - --#if defined(AT91SAM9260) || defined(AT91SAM9XE) || defined(AT91SAM9G20) -+#if defined(AT91SAM9260) || defined(AT91SAM9263) || defined(AT91SAM9XE) || defined(AT91SAM9G20) - /* Test if a button has been pressed or not */ - /* Erase Page 0 to avoid infinite loop */ - df_recovery(pDf); -diff --git a/include/part.h b/include/part.h -index ba5985a..a1863d0 100644 ---- a/include/part.h -+++ b/include/part.h -@@ -61,7 +61,11 @@ - - #ifdef AT91SAM9263 - #include "AT91SAM9263_inc.h" --#include "at91sam9263ek.h" -+ #ifdef at91sam9263ek -+ #include "at91sam9263ek.h" -+ #elif usb_a9263 -+ #include "usb-a9263.h" -+ #endif - #endif - - #ifdef AT91CAP9 --- -1.5.6.3 - diff --git a/bsp/buildroot/board/calao/usb-a9263/linux-3.4.4.config b/bsp/buildroot/board/calao/usb-a9263/linux-3.4.4.config deleted file mode 100644 index 8c71231f..00000000 --- a/bsp/buildroot/board/calao/usb-a9263/linux-3.4.4.config +++ /dev/null @@ -1,102 +0,0 @@ -CONFIG_EXPERIMENTAL=y -# CONFIG_LOCALVERSION_AUTO is not set -# CONFIG_SWAP is not set -CONFIG_SYSVIPC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_SLAB=y -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_AT91=y -CONFIG_ARCH_AT91SAM9263=y -CONFIG_MACH_USB_A9263=y -CONFIG_AT91_SLOW_CLOCK=y -# CONFIG_ARM_THUMB is not set -CONFIG_AEABI=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="mem=64M console=ttyS0,115200" -CONFIG_FPE_NWFPE=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=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_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_DATAFLASH=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_ATMEL=y -CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y -CONFIG_MTD_UBI=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_MACB=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_EVBUG=y -# CONFIG_KEYBOARD_ATKBD is not set -CONFIG_KEYBOARD_GPIO=y -# CONFIG_INPUT_MOUSE is not set -# CONFIG_SERIO is not set -CONFIG_SERIAL_ATMEL=y -CONFIG_SERIAL_ATMEL_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_SPI=y -CONFIG_SPI_ATMEL=y -# CONFIG_HWMON is not set -# CONFIG_USB_HID is not set -CONFIG_USB=y -CONFIG_USB_DEVICEFS=y -CONFIG_USB_MON=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_ETH=m -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_EXT2_FS=y -CONFIG_FUSE_FS=m -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_UBIFS_FS=y -CONFIG_UBIFS_FS_XATTR=y -CONFIG_UBIFS_FS_ADVANCED_COMPR=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_NFS_V3_ACL=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_KERNEL=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_LL=y diff --git a/bsp/buildroot/board/calao/usb-a9g20-lpw/linux-3.4.4.config b/bsp/buildroot/board/calao/usb-a9g20-lpw/linux-3.4.4.config deleted file mode 100644 index 56eb04bd..00000000 --- a/bsp/buildroot/board/calao/usb-a9g20-lpw/linux-3.4.4.config +++ /dev/null @@ -1,105 +0,0 @@ -CONFIG_EXPERIMENTAL=y -# CONFIG_LOCALVERSION_AUTO is not set -# CONFIG_SWAP is not set -CONFIG_SYSVIPC=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_SLAB=y -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_AT91=y -CONFIG_ARCH_AT91SAM9G20=y -CONFIG_MACH_USB_A9G20=y -CONFIG_AT91_SLOW_CLOCK=y -# CONFIG_ARM_THUMB is not set -CONFIG_AEABI=y -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="mem=64M console=ttyS0,115200" -CONFIG_FPE_NWFPE=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=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_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_DATAFLASH=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_ATMEL=y -CONFIG_MTD_UBI=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_NETDEVICES=y -CONFIG_MII=y -CONFIG_MACB=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_EVBUG=y -# CONFIG_KEYBOARD_ATKBD is not set -CONFIG_KEYBOARD_GPIO=y -# CONFIG_INPUT_MOUSE is not set -# CONFIG_SERIO is not set -CONFIG_SERIAL_ATMEL=y -CONFIG_SERIAL_ATMEL_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_I2C=y -CONFIG_I2C_GPIO=y -CONFIG_SPI=y -CONFIG_SPI_ATMEL=y -# CONFIG_HWMON is not set -# CONFIG_USB_HID is not set -CONFIG_USB=y -CONFIG_USB_DEVICEFS=y -CONFIG_USB_MON=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_STORAGE=y -CONFIG_USB_GADGET=y -CONFIG_USB_ETH=m -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_RV3029C2=y -CONFIG_EXT2_FS=y -CONFIG_FUSE_FS=m -CONFIG_VFAT_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_UBIFS_FS=y -CONFIG_UBIFS_FS_XATTR=y -CONFIG_UBIFS_FS_ADVANCED_COMPR=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_NFS_V3_ACL=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_KERNEL=y -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_LL=y diff --git a/bsp/buildroot/board/calao/usb-a9g20-lpw/patches/at91bootstrap/0001-usb-a9g20-lpw.patch b/bsp/buildroot/board/calao/usb-a9g20-lpw/patches/at91bootstrap/0001-usb-a9g20-lpw.patch deleted file mode 100644 index 06a89edd..00000000 --- a/bsp/buildroot/board/calao/usb-a9g20-lpw/patches/at91bootstrap/0001-usb-a9g20-lpw.patch +++ /dev/null @@ -1,610 +0,0 @@ -From 8d84757d5170969e8bdfebc7951f43c5aa2b05fd Mon Sep 17 00:00:00 2001 -From: Gregory Hermant -Date: Fri, 6 Jul 2012 16:32:47 +0200 -Subject: [PATCH] Add support for the Calao-systems USB-A9G20-LPW - - -Signed-off-by: Gregory Hermant ---- - board/usb_a9g20_lpw/nandflash/Makefile | 121 ++++++++++ - board/usb_a9g20_lpw/nandflash/usb-a9g20-lpw.h | 112 +++++++++ - board/usb_a9g20_lpw/usb_a9g20_lpw.c | 303 +++++++++++++++++++++++++ - crt0_gnu.S | 7 + - include/part.h | 6 +- - 5 files changed, 548 insertions(+), 1 deletions(-) - create mode 100644 board/usb_a9g20_lpw/nandflash/Makefile - create mode 100644 board/usb_a9g20_lpw/nandflash/usb-a9g20-lpw.h - create mode 100644 board/usb_a9g20_lpw/usb_a9g20_lpw.c - -diff --git a/board/usb_a9g20_lpw/nandflash/Makefile b/board/usb_a9g20_lpw/nandflash/Makefile -new file mode 100644 -index 0000000..8c9d99a ---- /dev/null -+++ b/board/usb_a9g20_lpw/nandflash/Makefile -@@ -0,0 +1,121 @@ -+# TODO: set this appropriately for your local toolchain -+ifndef ERASE_FCT -+ERASE_FCT=rm -f -+endif -+ifndef CROSS_COMPILE -+CROSS_COMPILE=arm-elf- -+endif -+ -+TOOLCHAIN=gcc -+ -+BOOTSTRAP_PATH=../../.. -+ -+# NandFlashBoot Configuration for USB-A9G20-LPW -+ -+# Target name (case sensitive!!!) -+TARGET=AT91SAM9G20 -+# Board name (case sensitive!!!) -+BOARD=usb_a9g20_lpw -+# Link Address and Top_of_Memory -+LINK_ADDR=0x200000 -+TOP_OF_MEMORY=0x301000 -+# Name of current directory -+PROJECT=nandflash -+ -+ifndef BOOT_NAME -+BOOT_NAME=$(PROJECT)_$(BOARD) -+endif -+ -+INCL=./$(BOOTSTRAP_PATH)/board/$(BOARD)/$(PROJECT) -+ -+ifeq ($(TOOLCHAIN), gcc) -+ -+AS=$(CROSS_COMPILE)gcc -+CC=$(CROSS_COMPILE)gcc -+LD=$(CROSS_COMPILE)gcc -+NM= $(CROSS_COMPILE)nm -+SIZE=$(CROSS_COMPILE)size -+OBJCOPY=$(CROSS_COMPILE)objcopy -+OBJDUMP=$(CROSS_COMPILE)objdump -+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -+ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) -+ -+# Linker flags. -+# -Wl,...: tell GCC to pass this to linker. -+# -Map: create map file -+# --cref: add cross reference to map file -+LDFLAGS+=-nostartfiles -nostdlib -Wl,-Map=$(BOOT_NAME).map,--cref -+LDFLAGS+=-T $(BOOTSTRAP_PATH)/elf32-littlearm.lds -Ttext $(LINK_ADDR) -+OBJS=crt0_gnu.o -+ -+endif -+ -+OBJS+=\ -+ $(BOARD).o \ -+ main.o \ -+ gpio.o \ -+ pmc.o \ -+ debug.o \ -+ sdramc.o \ -+ nandflash.o \ -+ _udivsi3.o \ -+ _umodsi3.o \ -+ div0.o \ -+ udiv.o \ -+ string.o -+ -+rebuild: clean all -+ -+all: $(BOOT_NAME) -+ -+ifeq ($(TOOLCHAIN), gcc) -+$(BOOT_NAME): $(OBJS) -+ $(LD) $(LDFLAGS) -n -o $(BOOT_NAME).elf $(OBJS) -+ $(OBJCOPY) --strip-debug --strip-unneeded $(BOOT_NAME).elf -O binary $(BOOT_NAME).bin -+endif -+ -+ -+$(BOARD).o: $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/board/$(BOARD)/$(BOARD).c -o $(BOARD).o -+ -+main.o: $(BOOTSTRAP_PATH)/main.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/main.c -o main.o -+ -+gpio.o: $(BOOTSTRAP_PATH)/driver/gpio.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/gpio.c -o gpio.o -+ -+pmc.o: $(BOOTSTRAP_PATH)/driver/pmc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/pmc.c -o pmc.o -+ -+debug.o: $(BOOTSTRAP_PATH)/driver/debug.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/debug.c -o debug.o -+ -+sdramc.o: $(BOOTSTRAP_PATH)/driver/sdramc.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/sdramc.c -o sdramc.o -+ -+dataflash.o: $(BOOTSTRAP_PATH)/driver/dataflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/dataflash.c -o dataflash.o -+ -+nandflash.o: $(BOOTSTRAP_PATH)/driver/nandflash.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/driver/nandflash.c -o nandflash.o -+ -+crt0_gnu.o: $(BOOTSTRAP_PATH)/crt0_gnu.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/crt0_gnu.S -o crt0_gnu.o -+ -+div0.o: $(BOOTSTRAP_PATH)/lib/div0.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/div0.c -o div0.o -+ -+string.o: $(BOOTSTRAP_PATH)/lib/string.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/string.c -o string.o -+ -+udiv.o: $(BOOTSTRAP_PATH)/lib/udiv.c -+ $(CC) -c $(CCFLAGS) $(BOOTSTRAP_PATH)/lib/udiv.c -o udiv.o -+ -+_udivsi3.o: $(BOOTSTRAP_PATH)/lib/_udivsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_udivsi3.S -o _udivsi3.o -+ -+_umodsi3.o: $(BOOTSTRAP_PATH)/lib/_umodsi3.S -+ $(AS) $(ASFLAGS) $(BOOTSTRAP_PATH)/lib/_umodsi3.S -o _umodsi3.o -+ -+clean: -+ $(ERASE_FCT) *.o *.bin *.elf *.map -diff --git a/board/usb_a9g20_lpw/nandflash/usb-a9g20-lpw.h b/board/usb_a9g20_lpw/nandflash/usb-a9g20-lpw.h -new file mode 100644 -index 0000000..c0bdc6e ---- /dev/null -+++ b/board/usb_a9g20_lpw/nandflash/usb-a9g20-lpw.h -@@ -0,0 +1,112 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2008, 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : usb-a9g20-lpw.h -+ * Object : -+ * Creation : GH July 6th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#ifndef _USB_A9G20_LPW_H -+#define _USB_A9G20_LPW_H -+ -+/* ******************************************************************* */ -+/* PMC Settings */ -+/* */ -+/* The main oscillator is enabled as soon as possible in the c_startup */ -+/* and MCK is switched on the main oscillator. */ -+/* PLL initialization is done later in the hw_init() function */ -+/* ******************************************************************* */ -+#define MASTER_CLOCK (133000000) -+#define PLL_LOCK_TIMEOUT 1000000 -+ -+/* Set PLLA to 798Mhz */ -+#define PLLA_SETTINGS 0x20843F02 -+#define PLLB_SETTINGS 0x100F3F02 -+ -+/* Switch MCK on PLLA output PCK = PLLA/2 = 3 * MCK */ -+#define MCKR_SETTINGS 0x1300 -+#define MCKR_CSS_SETTINGS (AT91C_PMC_CSS_PLLA_CLK | MCKR_SETTINGS) -+ -+/* ******************************************************************* */ -+/* NandFlash Settings */ -+/* */ -+/* ******************************************************************* */ -+#define AT91C_SMARTMEDIA_BASE 0x40000000 -+ -+#define AT91_SMART_MEDIA_ALE (1 << 21) /* our ALE is AD21 */ -+#define AT91_SMART_MEDIA_CLE (1 << 22) /* our CLE is AD22 */ -+ -+#define NAND_DISABLE_CE() do { *(volatile unsigned int *)AT91C_PIOC_SODR = AT91C_PIO_PC14;} while(0) -+#define NAND_ENABLE_CE() do { *(volatile unsigned int *)AT91C_PIOC_CODR = AT91C_PIO_PC14;} while(0) -+ -+#define NAND_WAIT_READY() while (!(*(volatile unsigned int *)AT91C_PIOC_PDSR & AT91C_PIO_PC13)) -+ -+ -+/* ******************************************************************** */ -+/* SMC Chip Select 3 Timings for NandFlash for MASTER_CLOCK = 133000000.*/ -+/* Please refer to SMC section in AT91SAM9 datasheet to learn how */ -+/* to generate these values. */ -+/* ******************************************************************** */ -+#define AT91C_SM_NWE_SETUP (2 << 0) -+#define AT91C_SM_NCS_WR_SETUP (0 << 8) -+#define AT91C_SM_NRD_SETUP (2 << 16) -+#define AT91C_SM_NCS_RD_SETUP (0 << 24) -+ -+#define AT91C_SM_NWE_PULSE (4 << 0) -+#define AT91C_SM_NCS_WR_PULSE (4 << 8) -+#define AT91C_SM_NRD_PULSE (4 << 16) -+#define AT91C_SM_NCS_RD_PULSE (4 << 24) -+ -+#define AT91C_SM_NWE_CYCLE (7 << 0) -+#define AT91C_SM_NRD_CYCLE (7 << 16) -+ -+#define AT91C_SM_TDF (3 << 16) -+ -+/* ******************************************************************* */ -+/* BootStrap Settings */ -+/* */ -+/* ******************************************************************* */ -+#define IMG_ADDRESS 0x20000 /* Image Address in NandFlash */ -+#define IMG_SIZE 0x40000 /* Image Size in NandFlash */ -+ -+#define MACH_TYPE 0x731 /* USB-A9G20 */ -+#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ -+ -+/* ******************************************************************* */ -+/* Application Settings */ -+/* ******************************************************************* */ -+#undef CFG_DEBUG -+#undef CFG_DATAFLASH -+ -+#define CFG_NANDFLASH -+#undef NANDFLASH_SMALL_BLOCKS /* NANDFLASH_LARGE_BLOCKS used instead */ -+#undef CFG_NANDFLASH_RECOVERY -+ -+#define CFG_SDRAM -+#define CFG_HW_INIT -+ -+#endif /* _USB_A9G20_LPW_H */ -diff --git a/board/usb_a9g20_lpw/usb_a9g20_lpw.c b/board/usb_a9g20_lpw/usb_a9g20_lpw.c -new file mode 100644 -index 0000000..c372307 ---- /dev/null -+++ b/board/usb_a9g20_lpw/usb_a9g20_lpw.c -@@ -0,0 +1,303 @@ -+/* ---------------------------------------------------------------------------- -+ * ATMEL Microcontroller Software Support - ROUSSET - -+ * ---------------------------------------------------------------------------- -+ * Copyright (c) 2008, 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. -+ * ---------------------------------------------------------------------------- -+ * File Name : usb_a9g20_lpw.c -+ * Object : -+ * Creation : GH July 6th 2012 -+ *----------------------------------------------------------------------------- -+ */ -+#include "../../include/part.h" -+#include "../../include/gpio.h" -+#include "../../include/pmc.h" -+#include "../../include/debug.h" -+#include "../../include/sdramc.h" -+#include "../../include/main.h" -+#ifdef CFG_NANDFLASH -+#include "../../include/nandflash.h" -+#endif -+#ifdef CFG_DATAFLASH -+#include "../../include/dataflash.h" -+#endif -+ -+static inline unsigned int get_cp15(void) -+{ -+ unsigned int value; -+ __asm__("mrc p15, 0, %0, c1, c0, 0" : "=r" (value)); -+ return value; -+} -+ -+static inline void set_cp15(unsigned int value) -+{ -+ __asm__("mcr p15, 0, %0, c1, c0, 0" : : "r" (value)); -+} -+ -+#ifdef CFG_HW_INIT -+/*----------------------------------------------------------------------------*/ -+/* \fn hw_init */ -+/* \brief This function performs very low level HW initialization */ -+/* This function is invoked as soon as possible during the c_startup */ -+/* The bss segment must be initialized */ -+/*----------------------------------------------------------------------------*/ -+void hw_init(void) -+{ -+ unsigned int cp15; -+ -+ /* Configure PIOs */ -+ const struct pio_desc hw_pio[] = { -+#ifdef CFG_DEBUG -+ {"RXD", AT91C_PIN_PB(14), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"TXD", AT91C_PIN_PB(15), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#endif -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Disable watchdog */ -+ writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDTC + WDTC_WDMR); -+ -+ /* At this stage the main oscillator is supposed to be enabled -+ * PCK = MCK = MOSC */ -+ writel(0x00, AT91C_BASE_PMC + PMC_PLLICPR); -+ -+ /* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ -+ pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* PCK = PLLA/2 = 3 * MCK */ -+ pmc_cfg_mck(MCKR_SETTINGS, PLL_LOCK_TIMEOUT); -+ /* Switch MCK on PLLA output */ -+ pmc_cfg_mck(MCKR_CSS_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* Configure PLLB */ -+ pmc_cfg_pllb(PLLB_SETTINGS, PLL_LOCK_TIMEOUT); -+ -+ /* Configure CP15 */ -+ cp15 = get_cp15(); -+ cp15 |= I_CACHE; -+ set_cp15(cp15); -+ -+ /* Configure the PIO controller */ -+ pio_setup(hw_pio); -+ -+ /* Configure the EBI Slave Slot Cycle to 64 */ -+ writel((readl((AT91C_BASE_MATRIX + MATRIX_SCFG3)) & ~0xFF) | 0x40, (AT91C_BASE_MATRIX + MATRIX_SCFG3)); -+ -+#ifdef CFG_DEBUG -+ /* Enable Debug messages on the DBGU */ -+ dbg_init(BAUDRATE(MASTER_CLOCK, 115200)); -+ -+ dbg_print("Start AT91Bootstrap...\n\r"); -+#endif /* CFG_DEBUG */ -+ -+#ifdef CFG_SDRAM -+ /* Initialize the matrix (VDDIOSEL=0: memory voltage = 1.8V ) */ -+ writel((readl(AT91C_BASE_CCFG + CCFG_EBICSA) & ~0x00010000) | AT91C_EBI_CS1A_SDRAMC , AT91C_BASE_CCFG + CCFG_EBICSA); -+ -+ /* Configure SDRAM Controller */ -+ sdram_init( AT91C_SDRAMC_NC_9 | -+ AT91C_SDRAMC_NR_13 | -+ AT91C_SDRAMC_CAS_3 | -+ AT91C_SDRAMC_NB_4_BANKS | -+ AT91C_SDRAMC_DBW_32_BITS | -+ AT91C_SDRAMC_TWR_3 | -+ AT91C_SDRAMC_TRC_9 | -+ AT91C_SDRAMC_TRP_3 | -+ AT91C_SDRAMC_TRCD_3 | -+ AT91C_SDRAMC_TRAS_6 | -+ AT91C_SDRAMC_TXSR_10, /* Control Register */ -+ (MASTER_CLOCK * 7)/1000000, /* Refresh Timer Register */ -+ AT91C_SDRAMC_MD_SDRAM); /* SDRAM (no low power) */ -+ -+#endif /* CFG_SDRAM */ -+} -+#endif /* CFG_HW_INIT */ -+ -+#ifdef CFG_SDRAM -+/*------------------------------------------------------------------------------*/ -+/* \fn sdramc_hw_init */ -+/* \brief This function performs SDRAMC HW initialization */ -+/*------------------------------------------------------------------------------*/ -+void sdramc_hw_init(void) -+{ -+ /* Configure PIOs */ -+/* const struct pio_desc sdramc_pio[] = { -+ {"D16", AT91C_PIN_PC(16), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D17", AT91C_PIN_PC(17), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D18", AT91C_PIN_PC(18), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D19", AT91C_PIN_PC(19), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D20", AT91C_PIN_PC(20), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D21", AT91C_PIN_PC(21), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D22", AT91C_PIN_PC(22), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D23", AT91C_PIN_PC(23), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D24", AT91C_PIN_PC(24), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D25", AT91C_PIN_PC(25), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D26", AT91C_PIN_PC(26), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D27", AT91C_PIN_PC(27), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D28", AT91C_PIN_PC(28), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D29", AT91C_PIN_PC(29), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D30", AT91C_PIN_PC(30), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"D31", AT91C_PIN_PC(31), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+*/ -+ /* Configure the SDRAMC PIO controller to output PCK0 */ -+/* pio_setup(sdramc_pio); */ -+ -+ writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_ASR(0)); -+ writel(0xFFFF0000, AT91C_BASE_PIOC + PIO_PDR(0)); -+ -+} -+#endif /* CFG_SDRAM */ -+ -+#ifdef CFG_DATAFLASH -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn df_recovery */ -+/* \brief This function erases DataFlash Page 0 if USR PB is pressed */ -+/* during boot sequence */ -+/*------------------------------------------------------------------------------*/ -+void df_recovery(AT91PS_DF pDf) -+{ -+#if (AT91C_SPI_PCS_DATAFLASH == AT91C_SPI_PCS1_DATAFLASH) -+ /* Configure PIOs */ -+ const struct pio_desc usrpb[] = { -+ {"USRPB", AT91C_PIN_PB(10), 0, PIO_PULLUP, PIO_INPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOB), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(usrpb); -+ -+ /* If USR PB is pressed during Boot sequence */ -+ /* Erase NandFlash block 0*/ -+ if ( !pio_get_value(AT91C_PIN_PB(10)) ) -+ df_page_erase(pDf, 0); -+#endif -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn df_hw_init */ -+/* \brief This function performs DataFlash HW initialization */ -+/*------------------------------------------------------------------------------*/ -+void df_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc df_pio[] = { -+ {"MISO", AT91C_PIN_PA(0), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"MOSI", AT91C_PIN_PA(1), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ {"SPCK", AT91C_PIN_PA(2), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#if (AT91C_SPI_PCS_DATAFLASH == AT91C_SPI_PCS0_DATAFLASH) -+ {"NPCS0", AT91C_PIN_PA(3), 0, PIO_DEFAULT, PIO_PERIPH_A}, -+#endif -+#if (AT91C_SPI_PCS_DATAFLASH == AT91C_SPI_PCS1_DATAFLASH) -+ {"NPCS1", AT91C_PIN_PC(11), 0, PIO_DEFAULT, PIO_PERIPH_B}, -+#endif -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ pio_setup(df_pio); -+} -+#endif /* CFG_DATAFLASH */ -+ -+ -+ -+#ifdef CFG_NANDFLASH -+/*------------------------------------------------------------------------------*/ -+/* \fn nand_recovery */ -+/* \brief This function erases NandFlash Block 0 if USER PB is pressed */ -+/* during boot sequence */ -+/*------------------------------------------------------------------------------*/ -+#ifdef CFG_NANDFLASH_RECOVERY -+static void nand_recovery(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc usrpb[] = { -+ {"USRPB", AT91C_PIN_PB(10), 0, PIO_PULLUP, PIO_INPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOB), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(usrpb); -+ -+ /* If USER PB is pressed during Boot sequence */ -+ /* Erase NandFlash block 0*/ -+ if (!pio_get_value(AT91C_PIN_PB(10)) ) -+ AT91F_NandEraseBlock0(); -+} -+#else -+static void nand_recovery(void) {} -+#endif -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_hw_init */ -+/* \brief NandFlash HW init */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_hw_init(void) -+{ -+ /* Configure PIOs */ -+ const struct pio_desc nand_pio[] = { -+ {"RDY_BSY", AT91C_PIN_PC(13), 0, PIO_PULLUP, PIO_INPUT}, -+ {"NANDCS", AT91C_PIN_PC(14), 0, PIO_PULLUP, PIO_OUTPUT}, -+ {(char *) 0, 0, 0, PIO_DEFAULT, PIO_PERIPH_A}, -+ }; -+ -+ /* Setup Smart Media, first enable the address range of CS3 in HMATRIX user interface */ -+ writel(readl(AT91C_BASE_CCFG + CCFG_EBICSA) | AT91C_EBI_CS3A_SM, AT91C_BASE_CCFG + CCFG_EBICSA); -+ -+ /* Configure SMC CS3 */ -+ writel((AT91C_SM_NWE_SETUP | AT91C_SM_NCS_WR_SETUP | AT91C_SM_NRD_SETUP | AT91C_SM_NCS_RD_SETUP), AT91C_BASE_SMC + SMC_SETUP3); -+ writel((AT91C_SM_NWE_PULSE | AT91C_SM_NCS_WR_PULSE | AT91C_SM_NRD_PULSE | AT91C_SM_NCS_RD_PULSE), AT91C_BASE_SMC + SMC_PULSE3); -+ writel((AT91C_SM_NWE_CYCLE | AT91C_SM_NRD_CYCLE) , AT91C_BASE_SMC + SMC_CYCLE3); -+ writel((AT91C_SMC_READMODE | AT91C_SMC_WRITEMODE | AT91C_SMC_NWAITM_NWAIT_DISABLE | -+ AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS | AT91C_SM_TDF) , AT91C_BASE_SMC + SMC_CTRL3); -+ -+ /* Configure the PIO controller */ -+ writel((1 << AT91C_ID_PIOC), PMC_PCER + AT91C_BASE_PMC); -+ pio_setup(nand_pio); -+ -+ nand_recovery(); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_16bits_dbw_init */ -+/* \brief Configure SMC in 16 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_16bits_dbw_init(void) -+{ -+ writel(readl(AT91C_BASE_SMC + SMC_CTRL3) | AT91C_SMC_DBW_WIDTH_SIXTEEN_BITS, AT91C_BASE_SMC + SMC_CTRL3); -+} -+ -+/*------------------------------------------------------------------------------*/ -+/* \fn nandflash_cfg_8bits_dbw_init */ -+/* \brief Configure SMC in 8 bits mode */ -+/*------------------------------------------------------------------------------*/ -+void nandflash_cfg_8bits_dbw_init(void) -+{ -+ writel((readl(AT91C_BASE_SMC + SMC_CTRL3) & ~(AT91C_SMC_DBW)) | AT91C_SMC_DBW_WIDTH_EIGTH_BITS, AT91C_BASE_SMC + SMC_CTRL3); -+} -+ -+#endif /* #ifdef CFG_NANDFLASH */ -diff --git a/crt0_gnu.S b/crt0_gnu.S -index 042b617..002feef 100644 ---- a/crt0_gnu.S -+++ b/crt0_gnu.S -@@ -106,6 +106,13 @@ _relocate_to_sram: - #endif /* CFG_NORFLASH */ - - _setup_clocks: -+/* Test if main osc is bypassed */ -+ ldr r0,=AT91C_PMC_MOR -+ ldr r1, [r0] -+ ldr r2,=AT91C_CKGR_OSCBYPASS -+ ands r1, r1, r2 -+ bne _init_data /* branch if OSCBYPASS=1 */ -+ - /* Test if main oscillator is enabled */ - ldr r0,=AT91C_PMC_SR - ldr r1, [r0] -diff --git a/include/part.h b/include/part.h -index ba5985a..1d7392a 100644 ---- a/include/part.h -+++ b/include/part.h -@@ -46,7 +46,11 @@ - - #ifdef AT91SAM9G20 - #include "AT91SAM9260_inc.h" --#include "at91sam9g20ek.h" -+ #ifdef at91sam9g20ek -+ #include "at91sam9g20ek.h" -+ #elif usb_a9g20_lpw -+ #include "usb-a9g20-lpw.h" -+ #endif - #endif - - #ifdef AT91SAM9261 --- -1.5.6.3 - diff --git a/bsp/buildroot/board/calao/usb-a9g20-lpw/patches/barebox/0001-usb-a9g20-lpw.patch b/bsp/buildroot/board/calao/usb-a9g20-lpw/patches/barebox/0001-usb-a9g20-lpw.patch deleted file mode 100644 index cea8bb8c..00000000 --- a/bsp/buildroot/board/calao/usb-a9g20-lpw/patches/barebox/0001-usb-a9g20-lpw.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/arch/arm/configs/usb_a9g20_defconfig b/arch/arm/configs/usb_a9g20_defconfig -index 30bf380..7716e0e 100644 ---- a/arch/arm/configs/usb_a9g20_defconfig -+++ b/arch/arm/configs/usb_a9g20_defconfig -@@ -15,6 +15,7 @@ CONFIG_HUSH_FANCY_PROMPT=y - CONFIG_CMDLINE_EDITING=y - CONFIG_AUTO_COMPLETE=y - CONFIG_MENU=y -+# CONFIG_ERRNO_MESSAGES is not set - # CONFIG_CONSOLE_ACTIVATE_FIRST is not set - CONFIG_CONSOLE_ACTIVATE_ALL=y - CONFIG_PARTITION=y diff --git a/bsp/buildroot/board/congatec/qmx6/readme.txt b/bsp/buildroot/board/congatec/qmx6/readme.txt deleted file mode 100644 index d2e0dcac..00000000 --- a/bsp/buildroot/board/congatec/qmx6/readme.txt +++ /dev/null @@ -1,36 +0,0 @@ -This is the minimal buildroot support for the Congatec QMX6 Qseven CoM - -conga-QMX6 is based on the freescale iMX6 SoC. For more information please -have a look at http://www.congatec.com/products/qseven/conga-qmx6.html - -The configuration is based on the currently latest kernel release from -Congatec's git repository which is based on 3.0.35. The bootloader u-boot -is preconfigured on the CPU module and does not need to be replaced. - -To build the default configuration you only have to: - - make qmx6_defconfig && make - -You will need a microSD card of sufficient size and the first or only -partition configured as Linux type. - -To transfer the system to the card do: - - $ sudo dd if=output/images/rootfs.ext2 of=/dev/sdX1 - -You can optionally extend the filesystem size to the whole partition: - - $ sudo resize2fs /dev/sdX1 - -You can also update the card image without completely rewriting it: - - $ sudo mount /dev/sdX1 /mnt - $ sudo tar xf output/images/rootfs.tar -C /mnt - $ sudo umount /mnt - -Connect a terminal program to the rs232 connector marked "CONSOLE" -with baudrate set to 115200, insert the microSD card into the socket -on the CPU module and power the board to watch the system boot. - -Booting from the SD card slot on the base board is currently not -supported. diff --git a/bsp/buildroot/board/cubietech/cubieboard/boot.cmd b/bsp/buildroot/board/cubietech/cubieboard/boot.cmd deleted file mode 100644 index 849ed007..00000000 --- a/bsp/buildroot/board/cubietech/cubieboard/boot.cmd +++ /dev/null @@ -1,4 +0,0 @@ -setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra} -fatload mmc 0 0x43000000 script.bin -fatload mmc 0 0x48000000 uImage -bootm 0x48000000 diff --git a/bsp/buildroot/board/cubietech/cubieboard/linux-cubieboard2.config b/bsp/buildroot/board/cubietech/cubieboard/linux-cubieboard2.config deleted file mode 100644 index 1ae1519f..00000000 --- a/bsp/buildroot/board/cubietech/cubieboard/linux-cubieboard2.config +++ /dev/null @@ -1,749 +0,0 @@ -CONFIG_EXPERIMENTAL=y -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_SYSVIPC=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_AUDIT=y -CONFIG_IRQ_DOMAIN_DEBUG=y -CONFIG_RCU_FAST_NO_HZ=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=19 -CONFIG_CGROUPS=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_RESOURCE_COUNTERS=y -CONFIG_CGROUP_MEM_RES_CTLR=y -CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y -CONFIG_CGROUP_MEM_RES_CTLR_KMEM=y -CONFIG_CGROUP_PERF=y -CONFIG_CGROUP_SCHED=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_RT_GROUP_SCHED=y -CONFIG_BLK_CGROUP=y -CONFIG_RELAY=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_KALLSYMS_ALL=y -CONFIG_PERF_COUNTERS=y -# CONFIG_COMPAT_BRK is not set -CONFIG_JUMP_LABEL=y -CONFIG_MODULES=y -CONFIG_MODULE_FORCE_LOAD=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_MODULE_SRCVERSION_ALL=y -CONFIG_BLK_DEV_BSGLIB=y -CONFIG_BLK_DEV_INTEGRITY=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_OSF_PARTITION=y -CONFIG_AMIGA_PARTITION=y -CONFIG_MAC_PARTITION=y -CONFIG_BSD_DISKLABEL=y -CONFIG_MINIX_SUBPARTITION=y -CONFIG_SOLARIS_X86_PARTITION=y -CONFIG_UNIXWARE_DISKLABEL=y -CONFIG_SGI_PARTITION=y -CONFIG_SUN_PARTITION=y -CONFIG_KARMA_PARTITION=y -CONFIG_EFI_PARTITION=y -CONFIG_CFQ_GROUP_IOSCHED=y -CONFIG_ARCH_SUN7I=y -CONFIG_SUNXI_SCALING_MIN=408 -# CONFIG_CACHE_L2X0 is not set -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_SMP=y -CONFIG_ARM_ARCH_TIMER=y -CONFIG_NR_CPUS=2 -CONFIG_PREEMPT=y -CONFIG_AEABI=y -# CONFIG_OABI_COMPAT is not set -CONFIG_HIGHMEM=y -CONFIG_COMPACTION=y -CONFIG_KSM=y -CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/mmc0p1 rw init=/init loglevel=8" -CONFIG_KEXEC=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_STAT=m -CONFIG_CPU_FREQ_DEFAULT_GOV_FANTASY=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=m -CONFIG_CPU_FREQ_GOV_USERSPACE=m -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_INTERACTIVE=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m -CONFIG_CPU_FREQ_USR_EVNT_NOTIFY=y -CONFIG_CPU_FREQ_DVFS=y -CONFIG_CPU_IDLE=y -CONFIG_VFP=y -CONFIG_NEON=y -CONFIG_BINFMT_MISC=y -CONFIG_PM_RUNTIME=y -CONFIG_PM_DEBUG=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_XFRM_USER=y -CONFIG_NET_KEY=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_FIB_TRIE_STATS=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_NET_IPIP=y -CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IPGRE=m -CONFIG_NET_IPGRE_BROADCAST=y -CONFIG_IP_MROUTE=y -CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_ARPD=y -CONFIG_SYN_COOKIES=y -CONFIG_INET_AH=y -CONFIG_INET_ESP=y -CONFIG_INET_IPCOMP=y -CONFIG_INET_DIAG=m -CONFIG_INET_UDP_DIAG=m -CONFIG_TCP_CONG_ADVANCED=y -CONFIG_TCP_CONG_BIC=y -CONFIG_TCP_CONG_WESTWOOD=y -CONFIG_TCP_CONG_HTCP=y -CONFIG_TCP_CONG_HSTCP=y -CONFIG_TCP_CONG_HYBLA=y -CONFIG_TCP_CONG_SCALABLE=y -CONFIG_TCP_CONG_LP=y -CONFIG_TCP_CONG_VENO=y -CONFIG_TCP_CONG_YEAH=y -CONFIG_TCP_CONG_ILLINOIS=y -CONFIG_TCP_MD5SIG=y -CONFIG_IPV6=y -CONFIG_IPV6_PRIVACY=y -CONFIG_IPV6_ROUTER_PREF=y -CONFIG_IPV6_ROUTE_INFO=y -CONFIG_IPV6_OPTIMISTIC_DAD=y -CONFIG_INET6_AH=m -CONFIG_INET6_ESP=m -CONFIG_INET6_IPCOMP=m -CONFIG_IPV6_MIP6=m -CONFIG_INET6_XFRM_MODE_TRANSPORT=m -CONFIG_INET6_XFRM_MODE_TUNNEL=m -CONFIG_INET6_XFRM_MODE_BEET=m -CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m -CONFIG_IPV6_SIT=m -CONFIG_IPV6_SIT_6RD=y -CONFIG_IPV6_TUNNEL=m -CONFIG_IPV6_MULTIPLE_TABLES=y -CONFIG_IPV6_SUBTREES=y -CONFIG_IPV6_MROUTE=y -CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -CONFIG_IPV6_PIMSM_V2=y -# CONFIG_ANDROID_PARANOID_NETWORK is not set -CONFIG_NETWORK_SECMARK=y -CONFIG_NETWORK_PHY_TIMESTAMPING=y -CONFIG_NETFILTER=y -CONFIG_NF_CONNTRACK=m -CONFIG_NF_CONNTRACK_SECMARK=y -CONFIG_NF_CONNTRACK_ZONES=y -CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMEOUT=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CT_PROTO_DCCP=m -CONFIG_NF_CT_PROTO_SCTP=m -CONFIG_NF_CT_PROTO_UDPLITE=m -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NF_CT_NETLINK_TIMEOUT=m -CONFIG_NETFILTER_TPROXY=m -CONFIG_NETFILTER_XT_SET=m -CONFIG_NETFILTER_XT_TARGET_AUDIT=m -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m -CONFIG_NETFILTER_XT_TARGET_CT=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LED=m -CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_SECMARK=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -CONFIG_NETFILTER_XT_MATCH_IPVS=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_QUOTA2=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_IP_SET=m -CONFIG_IP_SET_BITMAP_IP=m -CONFIG_IP_SET_BITMAP_IPMAC=m -CONFIG_IP_SET_BITMAP_PORT=m -CONFIG_IP_SET_HASH_IP=m -CONFIG_IP_SET_HASH_IPPORT=m -CONFIG_IP_SET_HASH_IPPORTIP=m -CONFIG_IP_SET_HASH_IPPORTNET=m -CONFIG_IP_SET_HASH_NET=m -CONFIG_IP_SET_HASH_NETPORT=m -CONFIG_IP_SET_HASH_NETIFACE=m -CONFIG_IP_SET_LIST_SET=m -CONFIG_IP_VS=m -CONFIG_IP_VS_IPV6=y -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y -CONFIG_IP_VS_PROTO_SCTP=y -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m -CONFIG_IP_VS_FTP=m -CONFIG_IP_VS_PE_SIP=m -CONFIG_NF_CONNTRACK_IPV4=m -CONFIG_IP_NF_QUEUE=m -CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=m -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_REJECT_SKERR=y -CONFIG_IP_NF_TARGET_ULOG=m -CONFIG_NF_NAT=m -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m -CONFIG_NF_CONNTRACK_IPV6=m -CONFIG_IP6_NF_QUEUE=m -CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_AH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_MATCH_FRAG=m -CONFIG_IP6_NF_MATCH_OPTS=m -CONFIG_IP6_NF_MATCH_HL=m -CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_RPFILTER=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_TARGET_HL=m -CONFIG_IP6_NF_FILTER=m -CONFIG_IP6_NF_TARGET_REJECT=m -CONFIG_IP6_NF_TARGET_REJECT_SKERR=y -CONFIG_IP6_NF_MANGLE=m -CONFIG_IP6_NF_RAW=m -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_IP6=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_ULOG=m -CONFIG_BRIDGE_EBT_NFLOG=m -CONFIG_L2TP=m -CONFIG_L2TP_V3=y -CONFIG_L2TP_IP=m -CONFIG_L2TP_ETH=m -CONFIG_BRIDGE=m -CONFIG_VLAN_8021Q=m -CONFIG_VLAN_8021Q_GVRP=y -CONFIG_BATMAN_ADV=m -CONFIG_OPENVSWITCH=m -CONFIG_NETPRIO_CGROUP=m -CONFIG_NET_PKTGEN=m -CONFIG_IRDA=m -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -CONFIG_IRDA_ULTRA=y -CONFIG_IRTTY_SIR=m -CONFIG_KINGSUN_DONGLE=m -CONFIG_KSDAZZLE_DONGLE=m -CONFIG_KS959_DONGLE=m -CONFIG_USB_IRDA=m -CONFIG_SIGMATEL_FIR=m -CONFIG_MCS_FIR=m -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_BT_HCIBTSDIO=m -CONFIG_BT_HCIBCM203X=m -CONFIG_BT_HCIBPA10X=m -CONFIG_BT_HCIBFUSB=m -CONFIG_BT_MRVL=m -CONFIG_BT_MRVL_SDIO=m -CONFIG_BT_ATH3K=m -CONFIG_AF_RXRPC=m -CONFIG_RXKAD=m -CONFIG_CFG80211=y -CONFIG_CFG80211_DEVELOPER_WARNINGS=y -CONFIG_WIRELESS_EXT_SYSFS=y -CONFIG_LIB80211=m -CONFIG_CFG80211_ALLOW_RECONNECT=y -CONFIG_MAC80211=m -CONFIG_MAC80211_MESH=y -CONFIG_WIMAX=m -CONFIG_RFKILL=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_FIRMWARE_IN_KERNEL is not set -CONFIG_CONNECTOR=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_CRYPTOLOOP=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=2 -CONFIG_SUNXI_DBGREG=m -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_ATA=y -CONFIG_SATA_AHCI_PLATFORM=y -CONFIG_SW_SATA_AHCI_PLATFORM=y -CONFIG_NETDEVICES=y -CONFIG_BONDING=m -# CONFIG_NET_VENDOR_BROADCOM is not set -# CONFIG_NET_VENDOR_CHELSIO 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_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_SUNXI_EMAC=y -CONFIG_PHYLIB=y -CONFIG_PPP=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_FILTER=y -CONFIG_PPP_MPPE=m -CONFIG_PPP_MULTILINK=y -CONFIG_PPPOE=m -CONFIG_PPPOLAC=m -CONFIG_PPPOPNS=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_USB_IPHETH=m -CONFIG_ATH_COMMON=m -CONFIG_ATH9K=m -CONFIG_RTL8192CU=m -CONFIG_RTL8192CU_SW=m -CONFIG_RTL8188EU=m -CONFIG_RTXX7X_SW=m -CONFIG_INPUT_POLLDEV=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_JOYDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_KEYRESET=y -CONFIG_KEYBOARD_HV2605_KEYBOARD=m -CONFIG_INPUT_JOYSTICK=y -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_GT801=m -CONFIG_TOUCHSCREEN_GT811=m -CONFIG_TOUCHSCREEN_GT818=m -CONFIG_TOUCHSCREEN_FT5X_TS=m -CONFIG_TOUCHSCREEN_ZT8031=m -CONFIG_GSENSOR=y -CONFIG_SENSORS_BMA250=m -CONFIG_MEMSIC_ECOMPASS=m -CONFIG_SENSORS_MXC622X=m -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_DEVPTS_MULTIPLE_INSTANCES=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_NONSTANDARD=y -# CONFIG_DEVKMEM is not set -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=8 -CONFIG_SERIAL_8250_RUNTIME_UARTS=8 -# CONFIG_HW_RANDOM is not set -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_SPI=y -CONFIG_SPI_DEBUG=y -CONFIG_GPIOLIB=y -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_SUNXI=m -CONFIG_POWER_SUPPLY=y -CONFIG_AW_AXP=y -# CONFIG_HWMON is not set -CONFIG_REGULATOR=y -CONFIG_MEDIA_SUPPORT=y -CONFIG_VIDEO_DEV=y -CONFIG_MEDIA_TUNER_CUSTOMISE=y -# 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_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_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_MEDIA_TUNER_TDA18212 is not set -CONFIG_USB_VIDEO_CLASS=m -CONFIG_USB_M5602=m -CONFIG_USB_STV06XX=m -CONFIG_USB_GL860=m -CONFIG_USB_GSPCA_BENQ=m -CONFIG_USB_GSPCA_CONEX=m -CONFIG_USB_GSPCA_CPIA1=m -CONFIG_USB_GSPCA_ETOMS=m -CONFIG_USB_GSPCA_FINEPIX=m -CONFIG_USB_GSPCA_JEILINJ=m -CONFIG_USB_GSPCA_JL2005BCD=m -CONFIG_USB_GSPCA_KINECT=m -CONFIG_USB_GSPCA_KONICA=m -CONFIG_USB_GSPCA_MARS=m -CONFIG_USB_GSPCA_MR97310A=m -CONFIG_USB_GSPCA_NW80X=m -CONFIG_USB_GSPCA_OV519=m -CONFIG_USB_GSPCA_OV534=m -CONFIG_USB_GSPCA_OV534_9=m -CONFIG_USB_GSPCA_PAC207=m -CONFIG_USB_GSPCA_PAC7302=m -CONFIG_USB_GSPCA_PAC7311=m -CONFIG_USB_GSPCA_SE401=m -CONFIG_USB_GSPCA_SN9C2028=m -CONFIG_USB_GSPCA_SN9C20X=m -CONFIG_USB_GSPCA_SONIXB=m -CONFIG_USB_GSPCA_SONIXJ=m -CONFIG_USB_GSPCA_SPCA500=m -CONFIG_USB_GSPCA_SPCA501=m -CONFIG_USB_GSPCA_SPCA505=m -CONFIG_USB_GSPCA_SPCA506=m -CONFIG_USB_GSPCA_SPCA508=m -CONFIG_USB_GSPCA_SPCA561=m -CONFIG_USB_GSPCA_SPCA1528=m -CONFIG_USB_GSPCA_SQ905=m -CONFIG_USB_GSPCA_SQ905C=m -CONFIG_USB_GSPCA_SQ930X=m -CONFIG_USB_GSPCA_STK014=m -CONFIG_USB_GSPCA_STV0680=m -CONFIG_USB_GSPCA_SUNPLUS=m -CONFIG_USB_GSPCA_T613=m -CONFIG_USB_GSPCA_TOPRO=m -CONFIG_USB_GSPCA_TV8532=m -CONFIG_USB_GSPCA_VC032X=m -CONFIG_USB_GSPCA_VICAM=m -CONFIG_USB_GSPCA_XIRLINK_CIT=m -CONFIG_USB_GSPCA_ZC3XX=m -CONFIG_VIDEO_PVRUSB2=m -CONFIG_VIDEO_HDPVR=m -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_ALSA=m -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_ALSA=m -CONFIG_VIDEO_TM6000=m -CONFIG_VIDEO_TM6000_ALSA=m -CONFIG_VIDEO_USBVISION=m -CONFIG_USB_ET61X251=m -CONFIG_USB_SN9C102=m -CONFIG_USB_PWC=m -CONFIG_VIDEO_CPIA2=m -CONFIG_USB_ZR364XX=m -CONFIG_USB_STKWEBCAM=m -CONFIG_USB_S2255=m -CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_SOC_CAMERA=m -CONFIG_SOC_CAMERA_IMX074=m -CONFIG_SOC_CAMERA_MT9M001=m -CONFIG_SOC_CAMERA_MT9M111=m -CONFIG_SOC_CAMERA_MT9T031=m -CONFIG_SOC_CAMERA_MT9T112=m -CONFIG_SOC_CAMERA_MT9V022=m -CONFIG_SOC_CAMERA_RJ54N1=m -CONFIG_SOC_CAMERA_TW9910=m -CONFIG_SOC_CAMERA_PLATFORM=m -CONFIG_SOC_CAMERA_OV2640=m -CONFIG_SOC_CAMERA_OV5642=m -CONFIG_SOC_CAMERA_OV6650=m -CONFIG_SOC_CAMERA_OV772X=m -CONFIG_SOC_CAMERA_OV9640=m -CONFIG_SOC_CAMERA_OV9740=m -CONFIG_V4L_MEM2MEM_DRIVERS=y -# CONFIG_VIDEO_CSI_SUN4I is not set -CONFIG_RADIO_SI470X=y -CONFIG_USB_SI470X=m -CONFIG_I2C_SI470X=m -CONFIG_USB_MR800=m -CONFIG_USB_DSBR=m -CONFIG_RADIO_SI4713=m -CONFIG_USB_KEENE=m -CONFIG_RADIO_TEA5764=m -CONFIG_RADIO_SAA7706H=m -CONFIG_RADIO_TEF6862=m -CONFIG_RADIO_WL1273=m -CONFIG_AUDIO_ENGINE=y -CONFIG_PA_CONTROL=y -CONFIG_DRM=m -CONFIG_DRM_MALI=m -CONFIG_DRM_UDL=m -CONFIG_MALI=m -CONFIG_MALI400_DEBUG=y -CONFIG_MALI400_GPU_UTILIZATION=y -CONFIG_FB=y -CONFIG_FB_SUNXI=y -CONFIG_FB_SUNXI_LCD=y -CONFIG_FB_SUNXI_HDMI=y -CONFIG_HDMI_CEC=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_LOGO=y -# CONFIG_LOGO_LINUX_MONO is not set -# CONFIG_LOGO_LINUX_VGA16 is not set -# CONFIG_LOGO_LINUX_CLUT224 is not set -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_SEQUENCER=m -CONFIG_SND_MIXER_OSS=m -CONFIG_SND_PCM_OSS=m -CONFIG_SND_SEQUENCER_OSS=y -CONFIG_SND_HRTIMER=m -CONFIG_SND_VERBOSE_PRINTK=y -CONFIG_SND_ALOOP=m -CONFIG_SND_USB_AUDIO=m -CONFIG_SND_SOC=y -CONFIG_SND_SUNXI_SOC_SPDIF=y -CONFIG_HIDRAW=y -CONFIG_UHID=y -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y -CONFIG_HID_KYE=y -CONFIG_HID_LOGITECH_DJ=y -CONFIG_LOGITECH_FF=y -# CONFIG_LOGIWHEELS_FF is not set -CONFIG_USB=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_STORAGE=y -CONFIG_USB_STORAGE_REALTEK=y -CONFIG_USB_STORAGE_DATAFAB=y -CONFIG_USB_STORAGE_FREECOM=y -CONFIG_USB_STORAGE_ISD200=y -CONFIG_USB_STORAGE_USBAT=y -CONFIG_USB_STORAGE_SDDR09=y -CONFIG_USB_STORAGE_SDDR55=y -CONFIG_USB_STORAGE_JUMPSHOT=y -CONFIG_USB_STORAGE_ALAUDA=y -CONFIG_USB_STORAGE_ONETOUCH=y -CONFIG_USB_STORAGE_KARMA=y -CONFIG_USB_STORAGE_CYPRESS_ATACB=y -CONFIG_USB_STORAGE_ENE_UB6250=y -CONFIG_USB_SERIAL=y -CONFIG_USB_SERIAL_CONSOLE=y -CONFIG_USB_SERIAL_GENERIC=y -CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_PL2303=m -CONFIG_USB_GADGET=y -CONFIG_USB_FILE_STORAGE=m -CONFIG_USB_FILE_STORAGE_TEST=y -CONFIG_MMC=y -# CONFIG_MMC_BLOCK_BOUNCE is not set -CONFIG_MMC_USHC=y -CONFIG_MMC_SUNXI_POWER_CONTROL=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_SUNXI=y -CONFIG_LEDS_TRIGGER_TIMER=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_RTC_CLASS=y -CONFIG_RTC_DRV_SUN4I=y -CONFIG_STAGING=y -CONFIG_ANDROID=y -CONFIG_ANDROID_BINDER_IPC=y -CONFIG_ANDROID_LOGGER=y -CONFIG_ANDROID_RAM_CONSOLE=y -CONFIG_ANDROID_LOW_MEMORY_KILLER=y -CONFIG_EXT2_FS=y -CONFIG_EXT3_FS=y -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_REISERFS_FS=y -CONFIG_QUOTA=y -CONFIG_QUOTA_NETLINK_INTERFACE=y -# CONFIG_PRINT_QUOTA_WARNING is not set -CONFIG_QFMT_V2=y -CONFIG_AUTOFS4_FS=y -CONFIG_FUSE_FS=y -CONFIG_CUSE=y -CONFIG_FSCACHE=y -CONFIG_FSCACHE_STATS=y -CONFIG_CACHEFILES=y -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_UDF_FS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -CONFIG_NTFS_FS=y -CONFIG_NTFS_RW=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_CONFIGFS_FS=y -CONFIG_HFS_FS=y -CONFIG_HFSPLUS_FS=y -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -CONFIG_NFS_V3_ACL=y -CONFIG_NFS_V4=y -CONFIG_NFS_V4_1=y -CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="y" -CONFIG_ROOT_NFS=y -CONFIG_NFS_USE_LEGACY_DNS=y -CONFIG_NFSD=m -CONFIG_NFSD_V3_ACL=y -CONFIG_NFSD_V4=y -CONFIG_NFSD_FAULT_INJECTION=y -CONFIG_CIFS=y -CONFIG_CIFS_DFS_UPCALL=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_936=y -CONFIG_NLS_CODEPAGE_950=y -CONFIG_NLS_CODEPAGE_932=y -CONFIG_NLS_CODEPAGE_949=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_MAGIC_SYSRQ=y -CONFIG_STRIP_ASM_SYMS=y -CONFIG_DEBUG_FS=y -CONFIG_DEBUG_SECTION_MISMATCH=y -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SHIRQ=y -CONFIG_DETECT_HUNG_TASK=y -CONFIG_SCHEDSTATS=y -CONFIG_TIMER_STATS=y -CONFIG_DEBUG_INFO=y -CONFIG_DEBUG_LIST=y -CONFIG_BOOT_PRINTK_DELAY=y -CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y -# CONFIG_FTRACE is not set -CONFIG_DYNAMIC_DEBUG=y -CONFIG_STRICT_DEVMEM=y -CONFIG_DEBUG_LL=y -CONFIG_SECURITYFS=y -# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set -CONFIG_CRYPTO_GF128MUL=y -CONFIG_CRYPTO_SEQIV=y -CONFIG_CRYPTO_SHA256=m -CONFIG_CRYPTO_SHA512=m -CONFIG_CRYPTO_AES=y -CONFIG_CRYPTO_ZLIB=y -CONFIG_CRYPTO_LZO=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -# CONFIG_CRYPTO_HW is not set -CONFIG_LIBCRC32C=y diff --git a/bsp/buildroot/board/cubietech/cubieboard/mkcubiecard.sh b/bsp/buildroot/board/cubietech/cubieboard/mkcubiecard.sh deleted file mode 100755 index f1d5a9fb..00000000 --- a/bsp/buildroot/board/cubietech/cubieboard/mkcubiecard.sh +++ /dev/null @@ -1,124 +0,0 @@ -#! /bin/sh -# mkCubieCard.sh v0.1: -# 2013, Carlo Caione -# heavely based on : -# mkA10card.sh v0.1 -# 2012, Jason Plum -# loosely based on : -# mkcard.sh v0.5 -# (c) Copyright 2009 Graeme Gregory -# Licensed under terms of GPLv2 -# -# Parts of the procudure base on the work of Denys Dmytriyenko -# http://wiki.omap.com/index.php/MMC_Boot_Format - -IMAGES_DIR=$1 -SPL_IMG=$IMAGES_DIR/sunxi-spl.bin -SPL_UBOOT=$IMAGES_DIR/u-boot-sunxi-with-spl.bin -UBOOT_IMG=$IMAGES_DIR/u-boot.bin -UIMAGE=$IMAGES_DIR/uImage -BIN_BOARD_FILE=$IMAGES_DIR/script.bin -ROOTFS=$IMAGES_DIR/rootfs.tar -BOOT_CMD_H=$IMAGES_DIR/boot.scr - -export LC_ALL=C - -if [ $# -ne 2 ]; then - echo "Usage: $0 " - exit 1; -fi - -if [ `id -u` -ne 0 ]; then - echo "This script must be run as root" 1>&2 - exit 1 -fi - -if [ ! -f $SPL_IMG -a ! -f $SPL_UBOOT ] || - [ ! -f $UBOOT_IMG ] || - [ ! -f $UIMAGE ] || - [ ! -f $BIN_BOARD_FILE ] || - [ ! -f $ROOTFS ] || - [ ! -f $BOOT_CMD_H ]; then - echo "File(s) missing." - exit 1 -fi - -DRIVE=$2 -P1=`mktemp -d` -P2=`mktemp -d` - -dd if=/dev/zero of=$DRIVE bs=1M count=3 - -SIZE=`fdisk -l $DRIVE | grep Disk | grep bytes | awk '{print $5}'` - -echo DISK SIZE - $SIZE bytes - - -# ~2048, 16MB, FAT, bootable -# ~rest of drive, Ext4 -{ -echo 32,512,0x0C,* -echo 544,,,- -} | sfdisk -D $DRIVE - -sleep 1 - -if [ -b ${DRIVE}1 ]; then - D1=${DRIVE}1 - umount ${DRIVE}1 - mkfs.vfat -n "boot" ${DRIVE}1 -else - if [ -b ${DRIVE}p1 ]; then - D1=${DRIVE}p1 - umount ${DRIVE}p1 - mkfs.vfat -n "boot" ${DRIVE}p1 - else - echo "Cant find boot partition in /dev" - exit 1 - fi -fi - - -if [ -b ${DRIVE}2 ]; then - D2=${DRIVE}2 - umount ${DRIVE}2 - mkfs.ext4 -L "Cubie" ${DRIVE}2 -else - if [ -b ${DRIVE}p2 ]; then - D2=${DRIVE}p2 - umount ${DRIVE}p2 - mkfs.ext4 -L "Cubie" ${DRIVE}p2 - else - echo "Cant find rootfs partition in /dev" - exit 1 - fi -fi - -mount $D1 $P1 -mount $D2 $P2 - -# write uImage -cp $UIMAGE $P1 -# write board file -cp $BIN_BOARD_FILE $P1 -# write u-boot script -cp $BOOT_CMD_H $P1 -# write rootfs -tar -C $P2 -xvf $ROOTFS - -sync - -umount $D1 -umount $D2 - -rm -fr $P1 -rm -fr $P2 - -if [ -e $SPL_UBOOT ]; then - dd if=$SPL_UBOOT of=$DRIVE bs=1024 seek=8 -else - # write SPL - dd if=$SPL_IMG of=$DRIVE bs=1024 seek=8 - # write mele u-boot - dd if=$UBOOT_IMG of=$DRIVE bs=1024 seek=32 -fi diff --git a/bsp/buildroot/board/cubietech/cubieboard/post-build.sh b/bsp/buildroot/board/cubietech/cubieboard/post-build.sh deleted file mode 100755 index 1b0258c5..00000000 --- a/bsp/buildroot/board/cubietech/cubieboard/post-build.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# post-build.sh for CubieBoard -# 2013, Carlo Caione - -BOARD_DIR="$(dirname $0)" -MKIMAGE=$HOST_DIR/usr/bin/mkimage -BOOT_CMD=$BOARD_DIR/boot.cmd -BOOT_CMD_H=$BINARIES_DIR/boot.scr - -# U-Boot script -if [ -e $MKIMAGE -a -e $BOOT_CMD ]; -then - $MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H -fi diff --git a/bsp/buildroot/board/cubietech/cubieboard/readme.txt b/bsp/buildroot/board/cubietech/cubieboard/readme.txt deleted file mode 100644 index 81cc5e40..00000000 --- a/bsp/buildroot/board/cubietech/cubieboard/readme.txt +++ /dev/null @@ -1,62 +0,0 @@ -cubieboard and cubieboard2 - ------ -Intro ------ - -To be able to use your cubieboard board with the images generated by -Buildroot you have to correctly setup the SD card. - -For more information, please see http://linux-sunxi.org/FirstSteps - ---------------- -How to build it ---------------- - -You need to use the cubieboard_defconfig or cubieboard2_defconfig, to do so: - * make cubieboard_defconfig -or - * make cubieboard2_defconfig - -And to compile: - * make - ------------------ -What is generated ------------------ - -After building, you should obtain this tree: - - output/images/ - +-- rootfs.tar - +-- boot.scr - +-- script.bin - +-- sunxi-spl.bin - +-- u-boot.bin - +-- u-boot-sunxi-with-spl.bin (optional) - `-- uImage - --------------------------- -How setting up the SD card --------------------------- - -Depending on the rootfs size, you might want to use a 2GB or larger SD-card. -The script mkcubiecard.sh will take care of partitioning and formatting -the SD-card. - -BEWARE! This process will erase your SD card. - -Use dmesg to find out where the SD card is attached in the /dev tree -() and then: - -# sudo ./mkcubiecard.sh - -where: - - is the directory containing the generated files (usually - output/images) - - is the device file of the SD card (usually /dev/sdX) - - - --- -Carlo Caione diff --git a/bsp/buildroot/board/digilent/zybo/genimage.cfg b/bsp/buildroot/board/digilent/zybo/genimage.cfg new file mode 100644 index 00000000..f39186d0 --- /dev/null +++ b/bsp/buildroot/board/digilent/zybo/genimage.cfg @@ -0,0 +1,29 @@ +image boot.vfat { + vfat { + files = { + "BOOT.BIN", + "uEnv.txt", + "system.bit", + "zynq-zybo.dtb", + "u-boot-dtb.img", + "uImage" + } + } + 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/bsp/buildroot/board/olimex/imx233_olinuxino/post-image.sh b/bsp/buildroot/board/digilent/zybo/post-image.sh similarity index 53% rename from bsp/buildroot/board/olimex/imx233_olinuxino/post-image.sh rename to bsp/buildroot/board/digilent/zybo/post-image.sh index 703cbe7e..619cb901 100755 --- a/bsp/buildroot/board/olimex/imx233_olinuxino/post-image.sh +++ b/bsp/buildroot/board/digilent/zybo/post-image.sh @@ -1,20 +1,18 @@ #!/bin/sh BOARD_DIR="$(dirname $0)" -BOARD_NAME="$(basename ${BOARD_DIR})" -GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" - -# Create symlink to "rename" kernel image -ln -sf uImage.imx23-olinuxino ${BINARIES_DIR}/uImage +OUTPUT_DIR="${O}/images" rm -rf "${GENIMAGE_TMP}" -genimage \ +cp board/digilent/zybo/uEnv.txt ${BINARIES_DIR} +cp board/digilent/zybo/system.bit ${BINARIES_DIR} + +genimage \ --rootpath "${TARGET_DIR}" \ --tmppath "${GENIMAGE_TMP}" \ --inputpath "${BINARIES_DIR}" \ --outputpath "${BINARIES_DIR}" \ --config "${GENIMAGE_CFG}" - -exit $? diff --git a/bsp/buildroot/board/digilent/zybo/readme.txt b/bsp/buildroot/board/digilent/zybo/readme.txt new file mode 100644 index 00000000..4e7454c5 --- /dev/null +++ b/bsp/buildroot/board/digilent/zybo/readme.txt @@ -0,0 +1,76 @@ +Digilent Zybo +============= + +This is the Buildroot board support for the Digilent Zybo. The Zybo is +a development board based on the Xilinx Zynq-7000 based All-Programmable +System-On-Chip. + +Zybo information including schematics, reference designs, and manuals are +available from http://store.digilentinc.com/zybo-zynq-7000-arm-fpga-soc-trainer-board/ . + +If you want a custom FPGA bitstream to be loaded by U-Boot, copy it as +system.bit in board/digilent/zybo/. + +Steps to create a working system for Zybo: + +1) make zynq_zybo_defconfig +2) make +3) write your SD Card with the sdcard.img file using dd by doing + $ sudo dd if=output/images/sdcard.img of=/dev/sdX +4) insert the SD Card and power up your Zybo +5) Expect serial console on the second USB serial port exposed by the board + +The expected output: + + U-Boot SPL 2016.05 (May 20 2016 - 16:16:24) + mmc boot + Trying to boot from MMC1 + reading system.dtb + spl_load_image_fat_os: error reading image system.dtb, err - -1 + reading u-boot-dtb.img + reading u-boot-dtb.img + + + U-Boot 2016.05 (May 20 2016 - 16:16:24 +0200) + + Model: Zynq ZYBO Development Board + Board: Xilinx Zynq + I2C: ready + DRAM: ECC disabled 512 MiB + MMC: sdhci@e0100000: 0 + SF: Detected S25FL128S_64K with page size 256 Bytes, erase size 64 KiB, total 16 MiB + In: serial@e0001000 + Out: serial@e0001000 + Err: serial@e0001000 + Model: Zynq ZYBO Development Board + Board: Xilinx Zynq + Net: ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id + I2C EEPROM MAC address read failed + + Warning: ethernet@e000b000 (eth0) using random MAC address - 56:64:dd:a7:6d:94 + eth0: ethernet@e000b000 + ... + +Resulting system +---------------- +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +The first partition is a FAT32 partition created at the beginning of the SD Card +that contains the following files : + /BOOT.BIN + /zynq-zybo.dtb + /uEnv.txt + /system.bit + /uImage + /u-boot-dtb.img + +The second partition is an ext4 partition that contains the root filesystem. + +You can alter the booting procedure by modifying the uEnv.txt file +in first partition of the SD card. It is a plain text file in format += one per line: + +kernel_image=myimage +modeboot=myboot +myboot=... diff --git a/bsp/buildroot/support/dummy-external/Config.in b/bsp/buildroot/board/digilent/zybo/system.bit similarity index 100% rename from bsp/buildroot/support/dummy-external/Config.in rename to bsp/buildroot/board/digilent/zybo/system.bit diff --git a/bsp/buildroot/board/digilent/zybo/uEnv.txt b/bsp/buildroot/board/digilent/zybo/uEnv.txt new file mode 100644 index 00000000..1042538a --- /dev/null +++ b/bsp/buildroot/board/digilent/zybo/uEnv.txt @@ -0,0 +1,5 @@ +bootargs=root=/dev/mmcblk0p2 rootwait rw rootfstype=ext4 +fpga_image=system.bit +fpgaboot=if fatload mmc 0 0x1000000 ${fpga_image}; then echo Booting FPGA from ${fpga_image}; fpga info 0 && fpga loadb 0 0x1000000 $filesize; else echo FPGA image ${fpga_image} was not found, skipping...; fi; +kernel_image=uImage +sdboot=echo Booting from SD...; run fpgaboot; fatload mmc 0 0x1000000 ${kernel_image} && fatload mmc 0 0x2000000 zynq-zybo.dtb && bootm 0x1000000 - 0x2000000 diff --git a/bsp/buildroot/board/freescale/imx25pdk/genimage.cfg b/bsp/buildroot/board/freescale/common/imx/genimage.cfg.template similarity index 58% rename from bsp/buildroot/board/freescale/imx25pdk/genimage.cfg rename to bsp/buildroot/board/freescale/common/imx/genimage.cfg.template index 9386e329..acce058b 100644 --- a/bsp/buildroot/board/freescale/imx25pdk/genimage.cfg +++ b/bsp/buildroot/board/freescale/common/imx/genimage.cfg.template @@ -1,17 +1,16 @@ -# Minimal SD card image for the Freescale's i.MX25 PDK board +# Minimal SD card image for the Freescale boards Template # -# We mimic the .sdcard Freescale's image format for i.MX25: +# 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 and dtbs, -# * a single root filesystem partition is required (Ext4 in this case). +# * 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 = { - "imx25-pdk.dtb", - "zImage" + %FILES% } } size = 16M @@ -36,6 +35,6 @@ image sdcard.img { partition rootfs { partition-type = 0x83 - image = "rootfs.ext4" + image = "rootfs.ext2" } } diff --git a/bsp/buildroot/board/freescale/common/imx/post-image.sh b/bsp/buildroot/board/freescale/common/imx/post-image.sh new file mode 100755 index 00000000..9e4da82d --- /dev/null +++ b/bsp/buildroot/board/freescale/common/imx/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/imx/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/bsp/buildroot/board/freescale/common/mxs/genimage.cfg.template b/bsp/buildroot/board/freescale/common/mxs/genimage.cfg.template new file mode 100644 index 00000000..e094fb7f --- /dev/null +++ b/bsp/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/bsp/buildroot/board/freescale/common/mxs/post-image.sh b/bsp/buildroot/board/freescale/common/mxs/post-image.sh new file mode 100755 index 00000000..0bfb835c --- /dev/null +++ b/bsp/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/bsp/buildroot/board/freescale/create-boot-sd.sh b/bsp/buildroot/board/freescale/create-boot-sd.sh deleted file mode 100755 index af45115c..00000000 --- a/bsp/buildroot/board/freescale/create-boot-sd.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh - -set -u -set -e - -PROGNAME=$(basename $0) - -usage() -{ - echo "Create an SD card that boots on an i.MX53/6 board." - echo - echo "Note: all data on the the card will be completely deleted!" - echo "Use with care!" - echo "Superuser permissions may be required to write to the device." - echo - echo "Usage: ${PROGNAME} " - echo "Arguments:" - echo " The device to be written to" - echo - echo "Example: ${PROGNAME} /dev/mmcblk0" - echo -} - -if [ $# -ne 1 ]; then - usage - exit 1 -fi - -if [ $(id -u) -ne 0 ]; then - echo "${PROGNAME} must be run as root" - exit 1 -fi - -DEV=${1} - -# The partition name prefix depends on the device name: -# - /dev/sde -> /dev/sde1 -# - /dev/mmcblk0 -> /dev/mmcblk0p1 -if echo ${DEV}|grep -q mmcblk ; then - PART="p" -else - PART="" -fi - -PART1=${DEV}${PART}1 -PART2=${DEV}${PART}2 - -# Unmount the partitions if mounted -umount ${PART1} || true -umount ${PART2} || true - -# First, clear the card -dd if=/dev/zero of=${DEV} bs=1M count=20 - -sync - -# Partition the card. -# SD layout for i.MX6 boot: -# - Bootloader at offset 1024 -# - FAT partition starting at 1MB offset, containing uImage and *.dtb -# - ext2/3 partition formatted as ext2 or ext3, containing the root filesystem. -sfdisk ${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/bsp/buildroot/board/freescale/imx25pdk/readme.txt b/bsp/buildroot/board/freescale/imx25pdk/readme.txt index a154b995..1aece6c9 100644 --- a/bsp/buildroot/board/freescale/imx25pdk/readme.txt +++ b/bsp/buildroot/board/freescale/imx25pdk/readme.txt @@ -40,7 +40,7 @@ command as root: *** WARNING! This will destroy all the card content. Use with care! *** For details about the medium image layout, see the definition in -board/freescale/imx25pdk/genimage.cfg. +board/freescale/common/imx/genimage.cfg.template. Boot the i.MX25 PDK board ========================= diff --git a/bsp/buildroot/board/freescale/imx28evk/create-boot-sd.sh b/bsp/buildroot/board/freescale/imx28evk/create-boot-sd.sh deleted file mode 100755 index 5e050cba..00000000 --- a/bsp/buildroot/board/freescale/imx28evk/create-boot-sd.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh - -set -u -set -e - -PROGNAME=$(basename $0) - -usage() -{ - echo "Create an SD card that boots on an i.MX28 EVK board." - echo - echo "Note: all data on the the card will be completely deleted!" - echo "Use with care!" - echo "Superuser permissions may be required to write to the device." - echo - echo "Usage: ${PROGNAME} " - echo "Arguments:" - echo " The device to be written to" - echo - echo "Example: ${PROGNAME} /dev/mmcblk0" - echo -} - -if [ $# -ne 1 ]; then - usage - exit 1 -fi - -if [ $(id -u) -ne 0 ]; then - echo "${PROGNAME} must be run as root" - exit 1 -fi - -DEV=${1} - -# The partition name prefix depends on the device name: -# - /dev/sde -> /dev/sde1 -# - /dev/mmcblk0 -> /dev/mmcblk0p1 -if echo ${DEV}|grep -q mmcblk ; then - PART="p" -else - PART="" -fi - -PART1=${DEV}${PART}1 -PART2=${DEV}${PART}2 -PART3=${DEV}${PART}3 - -# Unmount the partitions if mounted -umount ${PART1} || true -umount ${PART2} || true -umount ${PART3} || true - -# First, clear the card -dd if=/dev/zero of=${DEV} bs=1M count=20 - -sync - -# Partition the card. -# SD layout for i.MX28 boot: -# - Special partition type 53 at sector 2048, containing an SD-SB-encapsulated u-boot -# - FAT partition containing zImage -# - ext2/3 partition formatted as ext2 or ext3, containing the root filesystem. -sfdisk --force -u S ${DEV} < + sudo dd if=output/images/sdcard.img of=/dev/ Boot the i.MX28 EVK board ========================= diff --git a/bsp/buildroot/board/freescale/imx31_3stack/linux.fragment b/bsp/buildroot/board/freescale/imx31_3stack/linux.fragment new file mode 100644 index 00000000..beb6b46f --- /dev/null +++ b/bsp/buildroot/board/freescale/imx31_3stack/linux.fragment @@ -0,0 +1 @@ +# CONFIG_FB_MXS is not set diff --git a/bsp/buildroot/board/freescale/imx51evk/genimage.cfg b/bsp/buildroot/board/freescale/imx51evk/genimage.cfg deleted file mode 100644 index a44ed300..00000000 --- a/bsp/buildroot/board/freescale/imx51evk/genimage.cfg +++ /dev/null @@ -1,41 +0,0 @@ -# Minimal SD card image for the Freescale's i.MX51 EVK board -# -# We mimic the .sdcard Freescale's image format for i.MX51: -# * the microSD 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 and dtbs, -# * a single root filesystem partition is required (Ext4 in this case). -# - -image boot.vfat { - vfat { - files = { - "imx51-babbage.dtb", - "zImage" - } - } - size = 16M -} - -image sdcard.img { - hdimage { - } - - partition u-boot { - in-partition-table = "no" - image = "u-boot.imx" - offset = 1024 - } - - partition boot { - partition-type = 0xC - bootable = "true" - image = "boot.vfat" - offset = 8M - } - - partition rootfs { - partition-type = 0x83 - image = "rootfs.ext4" - } -} diff --git a/bsp/buildroot/board/freescale/imx51evk/readme.txt b/bsp/buildroot/board/freescale/imx51evk/readme.txt index 6639a920..d67a3fd7 100644 --- a/bsp/buildroot/board/freescale/imx51evk/readme.txt +++ b/bsp/buildroot/board/freescale/imx51evk/readme.txt @@ -40,7 +40,7 @@ command as root: *** WARNING! This will destroy all the card content. Use with care! *** For details about the medium image layout, see the definition in -board/freescale/imx51evk/genimage.cfg. +board/freescale/common/imx/genimage.cfg.template. Boot the i.MX51 EVK board ========================= diff --git a/bsp/buildroot/board/freescale/imx53loco/genimage.cfg b/bsp/buildroot/board/freescale/imx53loco/genimage.cfg deleted file mode 100644 index b56c1687..00000000 --- a/bsp/buildroot/board/freescale/imx53loco/genimage.cfg +++ /dev/null @@ -1,42 +0,0 @@ -# Minimal microSD card image for the Freescale's i.MX53 QSB board -# -# We mimic the .sdcard Freescale's image format for i.MX53: -# * the microSD 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 and dtbs, -# * a single root filesystem partition is required (Ext4 in this case). -# - -image boot.vfat { - vfat { - files = { - "imx53-qsb.dtb", - "imx53-qsrb.dtb", - "zImage" - } - } - size = 16M -} - -image sdcard.img { - hdimage { - } - - partition u-boot { - in-partition-table = "no" - image = "u-boot.imx" - offset = 1024 - } - - partition boot { - partition-type = 0xC - bootable = "true" - image = "boot.vfat" - offset = 8M - } - - partition rootfs { - partition-type = 0x83 - image = "rootfs.ext4" - } -} diff --git a/bsp/buildroot/board/freescale/imx53loco/post-image.sh b/bsp/buildroot/board/freescale/imx53loco/post-image.sh deleted file mode 100755 index b4ac4608..00000000 --- a/bsp/buildroot/board/freescale/imx53loco/post-image.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/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/bsp/buildroot/board/freescale/imx6q-sabresd/readme.txt b/bsp/buildroot/board/freescale/imx6q-sabresd/readme.txt new file mode 100644 index 00000000..10e973cf --- /dev/null +++ b/bsp/buildroot/board/freescale/imx6q-sabresd/readme.txt @@ -0,0 +1,57 @@ +******************************* +Freescale i.MX6Q Sabre SD board +******************************* + +This file documents the Buildroot support for the Freescale i.MX6Q Sabre SD +board. + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the i.MX6Q Sabre SD board: + + make imx6q-sabresd_defconfig + +Build all components: + + make + +You will find the following files in output/images/ : + - imx6q-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.MX6Q 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. + +Enjoy! diff --git a/bsp/buildroot/board/freescale/imx6sabre/readme.txt b/bsp/buildroot/board/freescale/imx6sabre/readme.txt index 6c44e22c..a1bd82fd 100644 --- a/bsp/buildroot/board/freescale/imx6sabre/readme.txt +++ b/bsp/buildroot/board/freescale/imx6sabre/readme.txt @@ -62,12 +62,16 @@ To determine the device associated to the SD card have a look in the cat /proc/partitions -Run the following script as root on your SD card. This will partition the card -and copy the bootloader, kernel, DTBs and root filesystem as needed. +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! *** - ./board/freescale/create-boot-sd.sh +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. Boot the SABRE board ==================== diff --git a/bsp/buildroot/board/freescale/imx6ulevk/post-image.sh b/bsp/buildroot/board/freescale/imx6ulevk/post-image.sh deleted file mode 100755 index b4ac4608..00000000 --- a/bsp/buildroot/board/freescale/imx6ulevk/post-image.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/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/bsp/buildroot/board/freescale/imx6ulevk/readme.txt b/bsp/buildroot/board/freescale/imx6ulevk/readme.txt index 462715c1..25b95fec 100644 --- a/bsp/buildroot/board/freescale/imx6ulevk/readme.txt +++ b/bsp/buildroot/board/freescale/imx6ulevk/readme.txt @@ -43,7 +43,7 @@ command as root: *** WARNING! This will destroy all the card content. Use with care! *** For details about the medium image layout, see the definition in -board/freescale/imx6ulevk/genimage.cfg. +board/freescale/common/imx/genimage.cfg.template. Boot the i.MX6UL EVK board ========================= diff --git a/bsp/buildroot/board/freescale/imx7dsdb/genimage.cfg b/bsp/buildroot/board/freescale/imx7dsdb/genimage.cfg deleted file mode 100644 index aa6ae9e2..00000000 --- a/bsp/buildroot/board/freescale/imx7dsdb/genimage.cfg +++ /dev/null @@ -1,41 +0,0 @@ -# Minimal microSD card image for the Freescale's i.MX7D SDB board -# -# We mimic the .sdcard Freescale's image format for i.MX7D: -# * the microSD 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 and dtbs, -# * a single root filesystem partition is required (Ext4 in this case). -# - -image boot.vfat { - vfat { - files = { - "imx7d-sdb.dtb", - "zImage" - } - } - size = 16M -} - -image sdcard.img { - hdimage { - } - - partition u-boot { - in-partition-table = "no" - image = "u-boot.imx" - offset = 1024 - } - - partition boot { - partition-type = 0xC - bootable = "true" - image = "boot.vfat" - offset = 8M - } - - partition rootfs { - partition-type = 0x83 - image = "rootfs.ext4" - } -} diff --git a/bsp/buildroot/board/freescale/imx7dsdb/readme.txt b/bsp/buildroot/board/freescale/imx7dsdb/readme.txt index c72e9a97..c6030f69 100644 --- a/bsp/buildroot/board/freescale/imx7dsdb/readme.txt +++ b/bsp/buildroot/board/freescale/imx7dsdb/readme.txt @@ -40,7 +40,7 @@ command as root: *** WARNING! This will destroy all the card content. Use with care! *** For details about the medium image layout, see the definition in -board/freescale/imx7dsdb/genimage.cfg. +board/freescale/common/imx/genimage.cfg.template. Boot the i.MX7D SDB board ========================= diff --git a/bsp/buildroot/board/freescale/mpc8315erdb/readme.txt b/bsp/buildroot/board/freescale/mpc8315erdb/readme.txt index 446bd397..b4c87b4d 100644 --- a/bsp/buildroot/board/freescale/mpc8315erdb/readme.txt +++ b/bsp/buildroot/board/freescale/mpc8315erdb/readme.txt @@ -1,14 +1,3 @@ - -******************** WARNING ******************** -The compiled U-Boot binary is intended for NAND flash only! -It won't work for NOR and will brick that bootloader! - -Also don't go playing around with different U-boot versions or flash targets -unless you've got the necessary hardware and/or know-how to unbrick your kit. - -2014.04 is known good for NAND. -******************** WARNING ******************** - You'll need to program the files created by buildroot into the flash. The fast way is to tftp transfer the files via one of the network interfaces. @@ -17,36 +6,25 @@ file transfer from your terminal program by using a "loady" command from the u-boot prompt instead of the "tftp ..." commands stated below. Beware that serial console file transfers are quite slow! -Remember to set the MPC8315ERDB switches to NAND boot if you want to use -your newly built U-Boot. - -1. Program the new U-Boot binary to NAND flash (optional) - If you don't feel confident upgrading your bootloader then don't do it, - it's unnecessary most of the time. - - => tftp $loadaddr u-boot-nand.bin - => nand erase 0 0x80000 - => nand write $loadaddr 0 0x80000 $filesize - -2. Program the kernel to NAND flash +1. Program the kernel to NAND flash => tftp $loadaddr uImage => nand erase 0x100000 0x1e0000 => nand write $loadaddr 0x100000 0x1e0000 -3. Program the DTB to NAND flash +2. Program the DTB to NAND flash => tftp $loadaddr mpc8315erdb.dtb => nand erase 0x2e0000 0x20000 => nand write $loadaddr 0x2e0000 0x20000 -4. Program the root filesystem to NAND flash +3. Program the root filesystem to NAND flash => tftp $loadaddr rootfs.jffs2 => nand erase 0x400000 0x1c00000 => nand write $loadaddr 0x400000 $filesize -5. Booting your new system +4. Booting your new system => setenv nandboot 'setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=$consoledev,$baudrate;nand read $fdtaddr 0x2e0000 0x20000;nand read $loadaddr 0x100000 0x1e0000;bootm $loadaddr - $fdtaddr' diff --git a/bsp/buildroot/board/freescale/p1010rdb/readme.txt b/bsp/buildroot/board/freescale/p1010rdb/readme.txt index b119f9a4..025c97e8 100644 --- a/bsp/buildroot/board/freescale/p1010rdb/readme.txt +++ b/bsp/buildroot/board/freescale/p1010rdb/readme.txt @@ -1,28 +1,3 @@ - -******************** WARNING ******************** -The compiled U-Boot binary is intended for NOR flash only! -It won't work for NAND or SPI and will brick those bootloaders! - -Also don't go playing around with different U-boot versions or flash targets -unless you've got the necessary hardware and/or know-how to unbrick your kit. - -2014.01 is known good for NOR on the P1010RDB-PA kit. - -Freescale released a revised version of the kit with a faster processor and -some other hardware changes named P1010RDB-PB. U-Boot needs to be configured -differently for this kit hence this default config WILL NOT WORK. -This is ONLY related to U-Boot, otherwise the configuration is the same, -you can perfectly use the generated kernel and rootfs. - -IF you want to build an U-Boot for the new kit just change -BR2_TARGET_UBOOT_BOARDNAME from P1010RDB-PA_NOR to P1010RDB-PB_NOR. -!!!!! THIS IS COMPLETELY UNTESTED BY BR DEVS SO YOU ARE ON YOUR OWN !!!!! -If it works we'd like to know so drop an email to the mailing list. Thanks. - -If your kit doesn't mention PA nor PB in their shipping inventory then it's -the old version (PA). -******************** WARNING ******************** - You'll need to program the files created by buildroot into the flash. The fast way is to tftp transfer the files via one of the network interfaces. @@ -31,37 +6,25 @@ file transfer from your terminal program by using a "loady" command from the u-boot prompt instead of the "tftp ..." commands stated below. Beware that serial console file transfers are quite slow! -Remember to set the P1010RDB switches to NOR boot if you want to use -your newly built U-Boot. - -1. Program the new U-Boot binary to NOR flash (optional) - If you don't feel confident upgrading your bootloader then don't do it, - it's unnecessary most of the time. - - => tftp $loadaddr u-boot.bin - => protect off 0xeff80000 +$filesize - => erase 0xeff80000 +$filesize - => cp.b $loadaddr 0xeff80000 $filesize - -2. Program the DTB to NOR flash +1. Program the DTB to NOR flash => tftp $loadaddr p1010rdb-pa.dtb => erase 0xee000000 +$filesize => cp.b $loadaddr 0xee000000 $filesize -3. Program the kernel to NOR flash +2. Program the kernel to NOR flash => tftp $loadaddr uImage => erase 0xee080000 +$filesize => cp.b $loadaddr 0xee080000 $filesize -4. Program the root filesystem to NOR flash +3. Program the root filesystem to NOR flash => tftp $loadaddr rootfs.jffs2 => erase 0xee800000 0xeff5ffff => cp.b $loadaddr 0xee800000 $filesize -5. Booting your new system +4. Booting your new system => setenv norboot 'setenv bootargs root=/dev/mtdblock2 rootfstype=jffs2 console=$consoledev,$baudrate;bootm 0xee080000 - 0xee000000' diff --git a/bsp/buildroot/board/freescale/p2020ds/linux-3.12.config b/bsp/buildroot/board/freescale/p2020ds/linux-3.12.config deleted file mode 100644 index 7181a6dc..00000000 --- a/bsp/buildroot/board/freescale/p2020ds/linux-3.12.config +++ /dev/null @@ -1,374 +0,0 @@ -CONFIG_PPC_85xx=y -CONFIG_PHYS_64BIT=y -CONFIG_SMP=y -CONFIG_NR_CPUS=8 -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_FHANDLE=y -CONFIG_AUDIT=y -CONFIG_IRQ_DOMAIN_DEBUG=y -CONFIG_NO_HZ_IDLE=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_NAMESPACES=y -CONFIG_EXPERT=y -CONFIG_KALLSYMS_ALL=y -# CONFIG_SLUB_DEBUG is not set -# CONFIG_COMPAT_BRK is not set -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODVERSIONS=y -# CONFIG_BLK_DEV_BSG is not set -CONFIG_PARTITION_ADVANCED=y -CONFIG_MAC_PARTITION=y -# CONFIG_IOSCHED_DEADLINE is not set -# CONFIG_POWERNV_MSI is not set -CONFIG_MPC85xx_DS=y -CONFIG_HIGHMEM=y -CONFIG_HOTPLUG_CPU=y -CONFIG_IRQ_ALL_CPUS=y -CONFIG_FORCE_MAX_ZONEORDER=12 -# CONFIG_SUSPEND is not set -CONFIG_PCI=y -CONFIG_PCIEPORTBUS=y -CONFIG_PCI_MSI=y -CONFIG_RAPIDIO=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_XFRM_USER=y -CONFIG_NET_KEY=m -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_NET_IPIP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_INET_ESP=m -CONFIG_INET_XFRM_MODE_TRANSPORT=m -CONFIG_INET_XFRM_MODE_TUNNEL=m -# CONFIG_INET_XFRM_MODE_BEET is not set -# CONFIG_INET_LRO is not set -CONFIG_NETWORK_SECMARK=y -CONFIG_NETFILTER=y -CONFIG_NF_CONNTRACK=m -CONFIG_NF_CONNTRACK_SECMARK=y -CONFIG_NF_CONNTRACK_ZONES=y -CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMEOUT=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CT_PROTO_DCCP=m -CONFIG_NF_CT_PROTO_UDPLITE=m -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NF_CT_NETLINK_TIMEOUT=m -CONFIG_NF_CT_NETLINK_HELPER=m -CONFIG_NETFILTER_NETLINK_QUEUE_CT=y -CONFIG_NETFILTER_XT_TARGET_AUDIT=m -CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HMARK=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LED=m -CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_SECMARK=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -CONFIG_NETFILTER_XT_MATCH_BPF=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m -CONFIG_NF_CONNTRACK_IPV4=m -CONFIG_IP_NF_IPTABLES=m -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m -CONFIG_IP_NF_FILTER=m -CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_SYNPROXY=m -CONFIG_IP_NF_TARGET_ULOG=m -CONFIG_NF_NAT_IPV4=m -CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m -CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m -CONFIG_NF_CONNTRACK_IPV6=m -CONFIG_IP6_NF_IPTABLES=m -CONFIG_IP6_NF_MATCH_AH=m -CONFIG_IP6_NF_MATCH_EUI64=m -CONFIG_IP6_NF_MATCH_FRAG=m -CONFIG_IP6_NF_MATCH_OPTS=m -CONFIG_IP6_NF_MATCH_HL=m -CONFIG_IP6_NF_MATCH_IPV6HEADER=m -CONFIG_IP6_NF_MATCH_MH=m -CONFIG_IP6_NF_MATCH_RPFILTER=m -CONFIG_IP6_NF_MATCH_RT=m -CONFIG_IP6_NF_TARGET_HL=m -CONFIG_IP6_NF_FILTER=m -CONFIG_IP6_NF_TARGET_REJECT=m -CONFIG_IP6_NF_TARGET_SYNPROXY=m -CONFIG_IP6_NF_MANGLE=m -CONFIG_IP6_NF_RAW=m -CONFIG_NF_NAT_IPV6=m -CONFIG_IP6_NF_TARGET_MASQUERADE=m -CONFIG_IP6_NF_TARGET_NPT=m -CONFIG_IP_SCTP=m -CONFIG_BRIDGE=m -CONFIG_CFG80211=m -CONFIG_MAC80211=m -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_FW_LOADER_USER_HELPER is not set -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_BLOCK=y -CONFIG_FTL=y -CONFIG_MTD_CFI=y -CONFIG_MTD_CFI_INTELEXT=y -CONFIG_MTD_CFI_AMDSTD=y -CONFIG_MTD_PHYSMAP_OF=y -CONFIG_MTD_M25P80=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_FSL_ELBC=y -CONFIG_MTD_NAND_FSL_IFC=y -CONFIG_MTD_UBI=y -CONFIG_PROC_DEVICETREE=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_NBD=y -CONFIG_EEPROM_LEGACY=y -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_ST=y -CONFIG_BLK_DEV_SR=y -CONFIG_CHR_DEV_SG=y -CONFIG_SCSI_MULTI_LUN=y -CONFIG_SCSI_LOGGING=y -CONFIG_ATA=y -CONFIG_SATA_AHCI=y -CONFIG_SATA_FSL=y -CONFIG_SATA_SIL24=y -CONFIG_PATA_ALI=y -CONFIG_MD=y -CONFIG_BLK_DEV_MD=y -CONFIG_MD_LINEAR=y -CONFIG_MD_RAID0=y -CONFIG_MD_RAID1=y -CONFIG_MD_RAID10=y -CONFIG_MD_RAID456=y -CONFIG_MD_MULTIPATH=y -CONFIG_BCACHE=y -CONFIG_BLK_DEV_DM=m -CONFIG_DM_CRYPT=m -CONFIG_DM_SNAPSHOT=m -CONFIG_DM_THIN_PROVISIONING=m -CONFIG_DM_CACHE=m -CONFIG_DM_MIRROR=m -CONFIG_DM_RAID=m -CONFIG_DM_ZERO=m -CONFIG_DM_MULTIPATH=m -CONFIG_NETDEVICES=y -CONFIG_DUMMY=y -CONFIG_TUN=y -CONFIG_NET_TULIP=y -CONFIG_GIANFAR=y -CONFIG_E1000E=y -CONFIG_AT803X_PHY=y -CONFIG_ATHEROS_PHY=y -CONFIG_MARVELL_PHY=y -CONFIG_DAVICOM_PHY=y -CONFIG_CICADA_PHY=y -CONFIG_VITESSE_PHY=y -CONFIG_DP8384x_PHY=y -CONFIG_FIXED_PHY=y -CONFIG_PPP=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_FILTER=y -CONFIG_PPP_MPPE=m -CONFIG_PPP_MULTILINK=y -CONFIG_PPPOE=m -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_ATH_CARDS=m -CONFIG_ATH9K=m -CONFIG_ATH9K_HTC=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_INPUT_MOUSEDEV is not set -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_SERIO is not set -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=2 -CONFIG_SERIAL_8250_RUNTIME_UARTS=2 -CONFIG_SERIAL_8250_MANY_PORTS=y -CONFIG_SERIAL_8250_DETECT_IRQ=y -CONFIG_SERIAL_8250_RSA=y -CONFIG_NVRAM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MPC=y -CONFIG_SPI=y -CONFIG_SPI_FSL_SPI=y -CONFIG_SPI_FSL_ESPI=y -CONFIG_GPIOLIB=y -CONFIG_GPIO_MPC8XXX=y -# CONFIG_HWMON is not set -# CONFIG_VGA_ARB is not set -# CONFIG_VGA_CONSOLE is not set -CONFIG_SOUND=m -CONFIG_SND=m -CONFIG_SND_HRTIMER=m -# CONFIG_SND_SUPPORT_OLD_API is not set -# CONFIG_SND_DRIVERS is not set -CONFIG_SND_INTEL8X0=m -# CONFIG_SND_PPC is not set -# CONFIG_SND_SPI is not set -# CONFIG_SND_USB is not set -# CONFIG_HID_GENERIC is not set -# CONFIG_USB_HID is not set -CONFIG_USB=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_FSL=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_OHCI_HCD_PPC_OF_BE=y -CONFIG_USB_OHCI_HCD_PPC_OF_LE=y -CONFIG_USB_STORAGE=y -CONFIG_MMC=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_ESDHC=y -CONFIG_EDAC=y -CONFIG_EDAC_MM_EDAC=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_CMOS=y -CONFIG_DMADEVICES=y -CONFIG_FSL_DMA=y -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_FANOTIFY=y -CONFIG_FUSE_FS=m -CONFIG_VFAT_FS=y -CONFIG_PROC_KCORE=y -CONFIG_TMPFS=y -CONFIG_HUGETLBFS=y -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_SUMMARY=y -CONFIG_JFFS2_FS_XATTR=y -CONFIG_UBIFS_FS=y -CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_XATTR=y -CONFIG_SQUASHFS_LZO=y -CONFIG_SQUASHFS_XZ=y -CONFIG_NFS_FS=y -CONFIG_NFS_V4=y -CONFIG_ROOT_NFS=y -CONFIG_NFSD=m -CONFIG_CIFS=m -CONFIG_CIFS_XATTR=y -CONFIG_CIFS_POSIX=y -# CONFIG_CIFS_DEBUG is not set -CONFIG_CIFS_SMB2=y -CONFIG_CIFS_FSCACHE=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_CODEPAGE_850=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=m -CONFIG_CRC_T10DIF=y -CONFIG_DEBUG_INFO=y -CONFIG_DEBUG_FS=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_DETECT_HUNG_TASK=y -CONFIG_CRYPTO_CBC=y -CONFIG_CRYPTO_PCBC=m -CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_SHA1=y -CONFIG_CRYPTO_SHA256=y -CONFIG_CRYPTO_SHA512=y -CONFIG_CRYPTO_DES=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -CONFIG_CRYPTO_DEV_TALITOS=y diff --git a/bsp/buildroot/board/freescale/p2020ds/linux-fix-c6187597-breakage.patch b/bsp/buildroot/board/freescale/p2020ds/linux-fix-c6187597-breakage.patch deleted file mode 100644 index 598f92d3..00000000 --- a/bsp/buildroot/board/freescale/p2020ds/linux-fix-c6187597-breakage.patch +++ /dev/null @@ -1,51 +0,0 @@ -From: Nikita Yushchenko -Subject: [PATCH] usb: pci-quirks: do not access OHCI_FMINTERVAL register on ULI hw - -This access causes hang on Freescale P2020DS board (that has OHCI -provided by ULI 1533 chip). - -Since preserving OHCI_FMINTERVAL was originally done only for NVIDIA -hardware and only later (in c6187597) was turned unconditional, and -c6187597 commit message again mentions only NVIDIA, I think it should be -safe to disable preserving OHCI_FMINTERVAL if device vendor is ULI. - -Signed-off-by: Nikita Yushchenko ---- - drivers/usb/host/pci-quirks.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c -index 00661d3..5acbd5b 100644 ---- a/drivers/usb/host/pci-quirks.c -+++ b/drivers/usb/host/pci-quirks.c -@@ -571,7 +571,7 @@ static void quirk_usb_handoff_ohci(struct pci_dev *pdev) - { - void __iomem *base; - u32 control; -- u32 fminterval; -+ u32 uninitialized_var(fminterval); - int cnt; - - if (!mmio_resource_enabled(pdev, 0)) -@@ -619,7 +619,8 @@ static void quirk_usb_handoff_ohci(struct pci_dev *pdev) - } - - /* software reset of the controller, preserving HcFmInterval */ -- fminterval = readl(base + OHCI_FMINTERVAL); -+ if (pdev->vendor != PCI_VENDOR_ID_AL) -+ fminterval = readl(base + OHCI_FMINTERVAL); - writel(OHCI_HCR, base + OHCI_CMDSTATUS); - - /* reset requires max 10 us delay */ -@@ -628,7 +629,8 @@ static void quirk_usb_handoff_ohci(struct pci_dev *pdev) - break; - udelay(1); - } -- writel(fminterval, base + OHCI_FMINTERVAL); -+ if (pdev->vendor != PCI_VENDOR_ID_AL) -+ writel(fminterval, base + OHCI_FMINTERVAL); - - /* Now the controller is safely in SUSPEND and nothing can wake it up */ - iounmap(base); --- -1.7.10.4 diff --git a/bsp/buildroot/board/freescale/p2020ds/readme.txt b/bsp/buildroot/board/freescale/p2020ds/readme.txt deleted file mode 100644 index a9735b07..00000000 --- a/bsp/buildroot/board/freescale/p2020ds/readme.txt +++ /dev/null @@ -1,40 +0,0 @@ -You'll need to program the files created by buildroot into the flash. -The fast way is to tftp transfer the files via one of the network interfaces. - -Alternatively you can transfer the files via serial console with an Ymodem -file transfer from your terminal program by using a "loady" command -from the u-boot prompt instead of the "tftp ..." commands stated below. -Beware that serial console file transfers are quite slow! - -1. Program the DTB to NOR flash - - => tftp ${loadaddr} p2020ds.dtb - => erase 0xeff00000 0xeff7ffff - => cp.b ${loadaddr} 0xeff00000 ${filesize} - -2. Program the kernel to NOR flash - - => tftp ${loadaddr} uImage - => erase 0xec000000 0xec3fffff - => cp.b ${loadaddr} 0xec000000 ${filesize} - -3. Program the root filesystem to NOR flash - - => tftp ${loadaddr} rootfs.jffs2 - => erase 0xec400000 0xeeffffff - => cp.b ${loadaddr} 0xec400000 ${filesize} - -4. Booting your new system - - => setenv jffs2boot 'setenv bootargs root=/dev/mtdblock4 rootfstype=jffs2 rw console=ttyS0,115200;bootm ec000000 - eff00000' - - If you want to set this boot option as default: - - => setenv bootcmd 'run jffs2boot' - => saveenv - - ...or for a single boot: - - => run jffs2boot - - You can login with user "root". diff --git a/bsp/buildroot/board/freescale/warpboard/genimage.cfg b/bsp/buildroot/board/freescale/warpboard/genimage.cfg deleted file mode 100644 index a22aa2a0..00000000 --- a/bsp/buildroot/board/freescale/warpboard/genimage.cfg +++ /dev/null @@ -1,41 +0,0 @@ -# Minimal SD card image for the Warp board -# -# We mimic the .sdcard Freescale's image format for i.MX6SL: -# * the microSD 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 and dtbs, -# * a single root filesystem partition is required (Ext4 in this case). -# - -image boot.vfat { - vfat { - files = { - "imx6sl-warp.dtb", - "zImage" - } - } - size = 16M -} - -image sdcard.img { - hdimage { - } - - partition u-boot { - in-partition-table = "no" - image = "u-boot.imx" - offset = 1024 - } - - partition boot { - partition-type = 0xC - bootable = "true" - image = "boot.vfat" - offset = 8M - } - - partition rootfs { - partition-type = 0x83 - image = "rootfs.ext4" - } -} diff --git a/bsp/buildroot/board/grinn/chiliboard/genimage.cfg b/bsp/buildroot/board/grinn/chiliboard/genimage.cfg new file mode 100644 index 00000000..ffe027e7 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/grinn/chiliboard/post-image.sh b/bsp/buildroot/board/grinn/chiliboard/post-image.sh new file mode 100755 index 00000000..1a076eec --- /dev/null +++ b/bsp/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/bsp/buildroot/board/grinn/chiliboard/readme.txt b/bsp/buildroot/board/grinn/chiliboard/readme.txt new file mode 100644 index 00000000..676aa704 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/freescale/imx6ulevk/genimage.cfg b/bsp/buildroot/board/grinn/liteboard/genimage.cfg similarity index 68% rename from bsp/buildroot/board/freescale/imx6ulevk/genimage.cfg rename to bsp/buildroot/board/grinn/liteboard/genimage.cfg index b58193ae..cbce2db5 100644 --- a/bsp/buildroot/board/freescale/imx6ulevk/genimage.cfg +++ b/bsp/buildroot/board/grinn/liteboard/genimage.cfg @@ -1,8 +1,9 @@ -# Minimal microSD card image for the Freescale's i.MX6UL EVK board +# 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, -# * U-Boot is dumped as is, +# * 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). # @@ -10,7 +11,7 @@ image boot.vfat { vfat { files = { - "imx6ul-14x14-evk.dtb", + "imx6ul-liteboard.dtb", "zImage" } } @@ -21,10 +22,16 @@ image sdcard.img { hdimage { } + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + partition u-boot { in-partition-table = "no" - image = "u-boot.imx" - offset = 1024 + image = "u-boot.img" + offset = 69K } partition boot { diff --git a/bsp/buildroot/board/grinn/liteboard/patches/linux/0001-ARM-dts-imx6ul-Add-DTS-for-liteSOM-module.patch b/bsp/buildroot/board/grinn/liteboard/patches/linux/0001-ARM-dts-imx6ul-Add-DTS-for-liteSOM-module.patch new file mode 100644 index 00000000..b6ea1b69 --- /dev/null +++ b/bsp/buildroot/board/grinn/liteboard/patches/linux/0001-ARM-dts-imx6ul-Add-DTS-for-liteSOM-module.patch @@ -0,0 +1,113 @@ +From 8cbabc57257bdbf5f1cf039a265c875da8ddc2e9 Mon Sep 17 00:00:00 2001 +From: Marcin Niestroj +Date: Fri, 21 Oct 2016 17:07:16 +0200 +Subject: [PATCH 1/2] ARM: dts: imx6ul: Add DTS for liteSOM module + +This is a SOM (System on Module), so it will be part of another boards. +Hence, this is a "dtsi" file that will be included from another device +tree files. + +Hardware specification: + * Freescale i.MX6UL SoC + * up to 512 MB RAM + * eMMC on uSDHC2 + +Signed-off-by: Marcin Niestroj +Reviewed-by: Fabio Estevam +Signed-off-by: Shawn Guo +--- + arch/arm/boot/dts/imx6ul-litesom.dtsi | 82 +++++++++++++++++++++++++++++++++++ + 1 file changed, 82 insertions(+) + create mode 100644 arch/arm/boot/dts/imx6ul-litesom.dtsi + +diff --git a/arch/arm/boot/dts/imx6ul-litesom.dtsi b/arch/arm/boot/dts/imx6ul-litesom.dtsi +new file mode 100644 +index 000000000000..461292d33417 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6ul-litesom.dtsi +@@ -0,0 +1,82 @@ ++/* ++ * Copyright 2016 Grinn ++ * ++ * Author: Marcin Niestroj ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * version 2 as published by the Free Software Foundation. ++ * ++ * This file 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. ++ * ++ * Or, alternatively ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++#include "imx6ul.dtsi" ++ ++/ { ++ model = "Grinn i.MX6UL liteSOM"; ++ compatible = "grinn,imx6ul-litesom", "fsl,imx6ul"; ++ ++ memory { ++ reg = <0x80000000 0x20000000>; ++ }; ++}; ++ ++&iomuxc { ++ pinctrl_usdhc2: usdhc2grp { ++ fsl,pins = < ++ MX6UL_PAD_NAND_RE_B__USDHC2_CLK 0x10069 ++ MX6UL_PAD_NAND_WE_B__USDHC2_CMD 0x17059 ++ MX6UL_PAD_NAND_DATA00__USDHC2_DATA0 0x17059 ++ MX6UL_PAD_NAND_DATA01__USDHC2_DATA1 0x17059 ++ MX6UL_PAD_NAND_DATA02__USDHC2_DATA2 0x17059 ++ MX6UL_PAD_NAND_DATA03__USDHC2_DATA3 0x17059 ++ MX6UL_PAD_NAND_DATA04__USDHC2_DATA4 0x17059 ++ MX6UL_PAD_NAND_DATA05__USDHC2_DATA5 0x17059 ++ MX6UL_PAD_NAND_DATA06__USDHC2_DATA6 0x17059 ++ MX6UL_PAD_NAND_DATA07__USDHC2_DATA7 0x17059 ++ MX6UL_PAD_NAND_ALE__USDHC2_RESET_B 0x17059 ++ >; ++ }; ++}; ++ ++&usdhc2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc2>; ++ no-1-8-v; ++ non-removable; ++ keep-power-in-suspend; ++ wakeup-source; ++ bus-width = <8>; ++ status = "okay"; ++}; +-- +2.11.0 + diff --git a/bsp/buildroot/board/grinn/liteboard/patches/linux/0002-ARM-dts-imx6ul-Add-DTS-for-liteBoard.patch b/bsp/buildroot/board/grinn/liteboard/patches/linux/0002-ARM-dts-imx6ul-Add-DTS-for-liteBoard.patch new file mode 100644 index 00000000..c73cd4fa --- /dev/null +++ b/bsp/buildroot/board/grinn/liteboard/patches/linux/0002-ARM-dts-imx6ul-Add-DTS-for-liteBoard.patch @@ -0,0 +1,190 @@ +From 35a8bca870bedebb9d37ad58b905863cba780f9f Mon Sep 17 00:00:00 2001 +From: Marcin Niestroj +Date: Fri, 21 Oct 2016 17:07:17 +0200 +Subject: [PATCH 2/2] ARM: dts: imx6ul: Add DTS for liteBoard + +liteBoard is a development board which uses liteSOM as its base. + +Hardware specification: + * liteSOM (i.MX6UL, DRAM, eMMC) + * Ethernet PHY (id 0) + * USB host (usb_otg1) + * MicroSD slot (uSDHC1) + +Signed-off-by: Marcin Niestroj +Reviewed-by: Fabio Estevam +Signed-off-by: Shawn Guo +--- + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/imx6ul-liteboard.dts | 147 +++++++++++++++++++++++++++++++++ + 2 files changed, 148 insertions(+) + create mode 100644 arch/arm/boot/dts/imx6ul-liteboard.dts + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index c558ba75cbcc..a587ce231f83 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -420,6 +420,7 @@ dtb-$(CONFIG_SOC_IMX6SX) += \ + dtb-$(CONFIG_SOC_IMX6UL) += \ + imx6ul-14x14-evk.dtb \ + imx6ul-geam-kit.dtb \ ++ imx6ul-liteboard.dtb \ + imx6ul-pico-hobbit.dtb \ + imx6ul-tx6ul-0010.dtb \ + imx6ul-tx6ul-0011.dtb \ +diff --git a/arch/arm/boot/dts/imx6ul-liteboard.dts b/arch/arm/boot/dts/imx6ul-liteboard.dts +new file mode 100644 +index 000000000000..6e04cb9202f4 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6ul-liteboard.dts +@@ -0,0 +1,147 @@ ++/* ++ * Copyright 2016 Grinn ++ * ++ * Author: Marcin Niestroj ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * version 2 as published by the Free Software Foundation. ++ * ++ * This file 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. ++ * ++ * Or, alternatively ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++/dts-v1/; ++ ++#include "imx6ul-litesom.dtsi" ++ ++/ { ++ model = "Grinn i.MX6UL liteBoard"; ++ compatible = "grinn,imx6ul-liteboard", "grinn,imx6ul-litesom", ++ "fsl,imx6ul"; ++ ++ chosen { ++ stdout-path = &uart1; ++ }; ++ ++ reg_usb_otg1_vbus: regulator-usb-otg1-vbus { ++ compatible = "regulator-fixed"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usb_otg1_vbus>; ++ regulator-name = "usb_otg1_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio2 8 GPIO_ACTIVE_LOW>; ++ }; ++}; ++ ++&iomuxc { ++ pinctrl_enet1: enet1grp { ++ fsl,pins = < ++ MX6UL_PAD_GPIO1_IO07__ENET1_MDC 0x1b0b0 ++ MX6UL_PAD_GPIO1_IO06__ENET1_MDIO 0x1b0b0 ++ MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN 0x1b0b0 ++ MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0 ++ MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0 ++ MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0 ++ MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0 ++ MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0 ++ MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0 ++ MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031 ++ >; ++ }; ++ ++ pinctrl_uart1: uart1grp { ++ fsl,pins = < ++ MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX 0x1b0b1 ++ MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1 ++ >; ++ }; ++ ++ pinctrl_usdhc1: usdhc1grp { ++ fsl,pins = < ++ MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 ++ MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x17059 ++ MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x10071 ++ MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059 ++ MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059 ++ MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059 ++ MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059 ++ >; ++ }; ++ ++ pinctrl_usb_otg1_vbus: usb-otg1-vbus { ++ fsl,pins = < ++ MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08 0x79 ++ >; ++ }; ++}; ++ ++&fec1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_enet1>; ++ phy-mode = "rmii"; ++ phy-handle = <ðphy0>; ++ status = "okay"; ++ ++ mdio { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ethphy0: ethernet-phy@0 { ++ reg = <0>; ++ }; ++ }; ++}; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart1>; ++ status = "okay"; ++}; ++ ++&usbotg1 { ++ vbus-supply = <®_usb_otg1_vbus>; ++ dr_mode = "host"; ++ status = "okay"; ++}; ++ ++&usdhc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc1>; ++ cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; ++ no-1-8-v; ++ keep-power-in-suspend; ++ wakeup-source; ++ status = "okay"; ++}; +-- +2.11.0 + diff --git a/bsp/buildroot/board/grinn/liteboard/post-image.sh b/bsp/buildroot/board/grinn/liteboard/post-image.sh new file mode 100755 index 00000000..1a076eec --- /dev/null +++ b/bsp/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/bsp/buildroot/board/grinn/liteboard/readme.txt b/bsp/buildroot/board/grinn/liteboard/readme.txt new file mode 100644 index 00000000..fe1386a0 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/hardkernel/odroidc2/boot.ini b/bsp/buildroot/board/hardkernel/odroidc2/boot.ini index 203a42a0..2fdffa30 100644 --- a/bsp/buildroot/board/hardkernel/odroidc2/boot.ini +++ b/bsp/buildroot/board/hardkernel/odroidc2/boot.ini @@ -1,42 +1,169 @@ ODROIDC2-UBOOT-CONFIG -# HDMI mode +######################################################################## +# 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" -# Default Console Device Setting -setenv condev "console=ttyS0,115200n8 console=tty0" # on both - -# Meson Timer -# 1 - Meson Timer -# 0 - Arch Timer -# Using meson_timer improves the video playback whoever it breaks KVM (virtualization). -# Using arch timer allows KVM/Virtualization to work however you'll experience poor video -setenv mesontimer "1" +# 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 -setenv bootargs "root=/dev/mmcblk0p2 rootwait ro ${condev} no_console_suspend hdmimode=${m} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=${hpd}" +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 -# Load Images setenv loadaddr "0x11000000" -setenv dtb_loadaddr "0x10000000" +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 @@ -46,5 +173,4 @@ if test "${nographics}" = "1"; then fdt rm /meson-fb; fdt rm /amhdmitx; fdt rm / 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 -# Booting booti ${loadaddr} - ${dtb_loadaddr} diff --git a/bsp/buildroot/board/intel/galileo/linux-3.8.config b/bsp/buildroot/board/intel/galileo/linux-3.14.config similarity index 86% rename from bsp/buildroot/board/intel/galileo/linux-3.8.config rename to bsp/buildroot/board/intel/galileo/linux-3.14.config index 961f0f88..58564da9 100644 --- a/bsp/buildroot/board/intel/galileo/linux-3.8.config +++ b/bsp/buildroot/board/intel/galileo/linux-3.14.config @@ -1,9 +1,9 @@ -CONFIG_EXPERIMENTAL=y # CONFIG_LOCALVERSION_AUTO is not set -CONFIG_KERNEL_LZMA=y # 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 @@ -22,7 +22,6 @@ CONFIG_BLK_DEV_INITRD=y CONFIG_RD_BZIP2=y CONFIG_RD_LZMA=y CONFIG_SYSCTL_SYSCALL=y -CONFIG_KALLSYMS_ALL=y # CONFIG_PCSPKR_PLATFORM is not set CONFIG_EMBEDDED=y # CONFIG_COMPAT_BRK is not set @@ -32,16 +31,15 @@ CONFIG_MODULE_UNLOAD=y # CONFIG_LBDAF is not set CONFIG_PARTITION_ADVANCED=y CONFIG_BSD_DISKLABEL=y -# CONFIG_EFI_PARTITION is not set # CONFIG_ZONE_DMA is not set -CONFIG_INTEL_QUARK_X1000_SOC=y +CONFIG_X86_INTEL_QUARK=y CONFIG_M586TSC=y CONFIG_X86_GENERIC=y CONFIG_HPET_TIMER=y CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_X86_UP_APIC=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 @@ -56,7 +54,7 @@ CONFIG_EFI_CAPSULE=m CONFIG_HZ_100=y CONFIG_KEXEC=y CONFIG_PHYSICAL_START=0x400000 -# CONFIG_RELOCATABLE is not set +CONFIG_PHYSICAL_ALIGN=0x1000000 # CONFIG_COMPAT_VDSO is not set CONFIG_PM_RUNTIME=y CONFIG_PM_DEBUG=y @@ -64,7 +62,6 @@ CONFIG_PM_TRACE_RTC=y CONFIG_ACPI_PROCFS=y CONFIG_ACPI_PROCFS_POWER=y CONFIG_ACPI_EC_DEBUGFS=y -# CONFIG_ACPI_PROC_EVENT is not set # CONFIG_ACPI_BATTERY is not set # CONFIG_ACPI_FAN is not set CONFIG_ACPI_DEBUG=y @@ -79,11 +76,12 @@ 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_RAW=m -CONFIG_CAN_BCM=m +# CONFIG_CAN_GW is not set CONFIG_CAN_J1939=m CONFIG_CAN_VCAN=m CONFIG_CAN_SLCAN=m @@ -96,20 +94,18 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m CONFIG_BT_HCIBTUSB=m -CONFIG_BT_HCIVHCI=m CONFIG_CFG80211=m CONFIG_CFG80211_WEXT=y CONFIG_MAC80211=m +CONFIG_MAC80211_LEDS=y CONFIG_RFKILL=m CONFIG_RFKILL_INPUT=y -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_FW_LOADER_USER_HELPER is not set CONFIG_DEBUG_DEVRES=y CONFIG_MTD=y -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_M25P80=y +CONFIG_MTD_BLOCK=m # CONFIG_PNP_DEBUG_MESSAGES is not set CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=2 @@ -117,6 +113,7 @@ 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 @@ -124,10 +121,12 @@ 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 @@ -138,7 +137,6 @@ CONFIG_NETDEVICES=y # CONFIG_NET_VENDOR_EMULEX is not set # CONFIG_NET_VENDOR_EXAR is not set # CONFIG_NET_VENDOR_HP is not set -CONFIG_E1000=m # CONFIG_NET_VENDOR_I825XX is not set # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MELLANOX is not set @@ -156,19 +154,19 @@ CONFIG_E1000=m # CONFIG_NET_VENDOR_SILAN is not set # CONFIG_NET_VENDOR_SIS is not set # CONFIG_NET_VENDOR_SMSC is not set -CONFIG_STMMAC_ETH=y +CONFIG_STMMAC_ETH=m # CONFIG_STMMAC_PLATFORM is not set -CONFIG_STMMAC_PCI=y -CONFIG_STMMAC_DA=y +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_IWLWIFI=m +# CONFIG_RTL_CARDS is not set # CONFIG_INPUT_MOUSEDEV is not set CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_KEYBOARD is not set @@ -189,41 +187,41 @@ 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_CHARDEV=y +CONFIG_I2C=y CONFIG_SPI_DEBUG=y CONFIG_SPI_GPIO=y CONFIG_SPI_PXA2XX=y -CONFIG_SPI_PXA2XX_PCI=y -CONFIG_SPI_SPIDEV=y -CONFIG_PTP_1588_CLOCK_PCH=m -CONFIG_GPIO_SCH=m -CONFIG_GPIO_PCA953X=m +CONFIG_PTP_1588_CLOCK=y +CONFIG_GPIO_SCH=y +CONFIG_GPIO_PCA953X=y CONFIG_GPIO_PCA953X_IRQ=y -# CONFIG_HWMON is not set +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_LPC_SCH=y 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_DVB_AU8522_V4L is not set -# CONFIG_DVB_TUNER_DIB0070 is not set -# CONFIG_DVB_TUNER_DIB0090 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 @@ -237,40 +235,44 @@ CONFIG_USB_EG20T=m CONFIG_USB_ZERO=m CONFIG_USB_ETH=m CONFIG_USB_MASS_STORAGE=m -CONFIG_USB_G_SERIAL=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_ACPI=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_MAX78M6610_LMU=m -CONFIG_IIO_SYSFS_TRIGGER=m -CONFIG_IIO_HRTIMER_TRIGGER=m -# CONFIG_NET_VENDOR_SILICOM is not set -CONFIG_INTEL_QRK_ESRAM=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_EFI_VARS=m 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_EXT4_USE_FOR_EXT23 is not set -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y CONFIG_VFAT_FS=y CONFIG_PROC_KCORE=y CONFIG_TMPFS=y @@ -285,23 +287,22 @@ CONFIG_NLS_ISO8859_1=y CONFIG_PRINTK_TIME=y # CONFIG_ENABLE_WARN_DEPRECATED is not set CONFIG_FRAME_WARN=2048 -CONFIG_MAGIC_SYSRQ=y # CONFIG_UNUSED_SYMBOLS is not set CONFIG_HEADERS_CHECK=y -# CONFIG_SCHED_DEBUG is not set -CONFIG_TIMER_STATS=y +CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_MEMORY_INIT=y -# CONFIG_FTRACE is not set 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_DEBUG_BOOT_PARAMS=y CONFIG_OPTIMIZE_INLINING=y CONFIG_KEYS=y CONFIG_KEYS_DEBUG_PROC_KEYS=y CONFIG_SECURITY=y CONFIG_SECURITY_NETWORK=y -# CONFIG_CRYPTO_HW is not set # CONFIG_VIRTUALIZATION is not set +CONFIG_CRC_T10DIF=y diff --git a/bsp/buildroot/board/lego/ev3/genimage.cfg b/bsp/buildroot/board/lego/ev3/genimage.cfg new file mode 100644 index 00000000..6b8546cc --- /dev/null +++ b/bsp/buildroot/board/lego/ev3/genimage.cfg @@ -0,0 +1,57 @@ +# 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 = 320K + } + partition uimage { + image = "uImage" + size = 3M + offset = 0x50000 + } + partition rootfs { + image = "rootfs.squashfs" + size = 9600K + offset = 0x350000 + } +} + +# The SD card image + +image boot.vfat { + vfat { + files = { + "uImage" + } + } + 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/bsp/buildroot/board/lego/ev3/linux.fragment b/bsp/buildroot/board/lego/ev3/linux.fragment new file mode 100644 index 00000000..55936367 --- /dev/null +++ b/bsp/buildroot/board/lego/ev3/linux.fragment @@ -0,0 +1,7 @@ +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=32768 +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y diff --git a/bsp/buildroot/board/freescale/warpboard/post-image.sh b/bsp/buildroot/board/lego/ev3/post-image.sh similarity index 93% rename from bsp/buildroot/board/freescale/warpboard/post-image.sh rename to bsp/buildroot/board/lego/ev3/post-image.sh index b4ac4608..81626dc3 100755 --- a/bsp/buildroot/board/freescale/warpboard/post-image.sh +++ b/bsp/buildroot/board/lego/ev3/post-image.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh BOARD_DIR="$(dirname $0)" GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" diff --git a/bsp/buildroot/board/lego/ev3/readme.txt b/bsp/buildroot/board/lego/ev3/readme.txt index 3c0bd2ec..c40907c6 100644 --- a/bsp/buildroot/board/lego/ev3/readme.txt +++ b/bsp/buildroot/board/lego/ev3/readme.txt @@ -4,8 +4,7 @@ Intro ===== This is the buildroot basic board support for the Lego Mindstorms EV3 -programmable brick. No support for sensors and drivers is provided for the -moment. +programmable brick. The Lego Mindstorms EV3 brick comprises a Texas Instruments AM1808 SoC, with an ARM 926EJ-S main processor running at 300 MHz. @@ -16,11 +15,9 @@ See: The buildroot configuration uses the Linux kernel of the ev3dev project. See: -- http://botbench.com/blog/2013/07/31/lego-mindstorms-ev3-source-code-available/ -- https://github.com/mindboards/ev3sources - -Note that the EV3 configuration uses gcc 4.7, as the boot is broken with gcc -4.8. +- https://github.com/ev3dev/ev3-kernel/ +- https://github.com/ev3dev/lego-linux-drivers/ +- http://www.ev3dev.org/ How it works ============ @@ -28,9 +25,13 @@ How it works Boot process : -------------- -The u-boot on-board the EV3 brick has provision to boot a Linux kernel from the -external µSD card. It will try to load a uImage from the first µSD card -partition, which must be formatted with a FAT filesystem. +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 =============== @@ -57,75 +58,26 @@ 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 +Installation +============ -Prepare your SDcard -=================== - -The following µSD card layout is recommended: - -- First partition formated with a FAT filesystem, containing the uImage. -- Second partition formatted as ext2 or ext3, containing the root filesystem. - -Create the SDcard partition table ----------------------------------- - -Determine the device associated to the SD card : - - $ cat /proc/partitions - -Let's assume it is /dev/mmcblk0 : - - $ sudo fdisk /dev/mmcblk0 - -Delete all previous partitions by creating a new disklabel with 'o', then -create the new partition table, using these options, pressing enter after each -one: - - * n p 1 2048 +10M t c - * n p 2 22528 +256M - -Using the 'p' option, the SD card's partition must look like this : - -Device Boot Start End Blocks Id System -/dev/mmcblk0p1 2048 22527 10240 c W95 FAT32 (LBA) -/dev/mmcblk0p2 22528 546815 262144 83 Linux - -Then write the partition table using 'w' and exit. - -Make partition one a DOS partition : - - $ sudo mkfs.vfat /dev/mmcblk0p1 - -Install the binaries to the SDcard ----------------------------------- - -Remember your binaries are located in output/images/, go inside that directory : - - $ cd output/images - -Copy the Linux kernel: - - $ sudo mkdir /mnt/sdcard - $ sudo mount /dev/mmcblk0p1 /mnt/sdcard - $ sudo cp uImage /mnt/sdcard - $ sudo umount /mnt/sdcard - -Copy the rootfs : - - $ sudo dd if=rootfs.ext3 of=/dev/mmcblk0p2 bs=1M - $ sync - -It's Done! +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. Finish ====== -Eject your µSD card, insert it in your Lego EV3, and power it up. - To have a serial console, you will need a proper USB to Lego serial port adapter plugged into the EV3 sensors port 1. See: diff --git a/bsp/buildroot/board/minnowboard/linux-4.6.config b/bsp/buildroot/board/minnowboard/linux-4.8.config similarity index 93% rename from bsp/buildroot/board/minnowboard/linux-4.6.config rename to bsp/buildroot/board/minnowboard/linux-4.8.config index 3bc1ffdf..fba48a16 100644 --- a/bsp/buildroot/board/minnowboard/linux-4.6.config +++ b/bsp/buildroot/board/minnowboard/linux-4.8.config @@ -14,6 +14,7 @@ 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 @@ -45,7 +46,9 @@ 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 diff --git a/bsp/buildroot/board/nanopi-neo/boot.cmd b/bsp/buildroot/board/nanopi-neo/boot.cmd new file mode 100644 index 00000000..78740578 --- /dev/null +++ b/bsp/buildroot/board/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/bsp/buildroot/board/nanopi-neo/genimage.cfg b/bsp/buildroot/board/nanopi-neo/genimage.cfg new file mode 100644 index 00000000..ad43d310 --- /dev/null +++ b/bsp/buildroot/board/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/bsp/buildroot/board/nanopi-neo/post-build.sh b/bsp/buildroot/board/nanopi-neo/post-build.sh new file mode 100755 index 00000000..e6791e71 --- /dev/null +++ b/bsp/buildroot/board/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}/usr/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/bsp/buildroot/board/nanopi-neo/post-image.sh b/bsp/buildroot/board/nanopi-neo/post-image.sh new file mode 100755 index 00000000..740386ef --- /dev/null +++ b/bsp/buildroot/board/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/bsp/buildroot/board/nanopi-neo/readme.txt b/bsp/buildroot/board/nanopi-neo/readme.txt new file mode 100644 index 00000000..95fc6289 --- /dev/null +++ b/bsp/buildroot/board/nanopi-neo/readme.txt @@ -0,0 +1,43 @@ +Intro +===== + +The instructions herein are valid for the FriendlyARM NanoPi NEO, +both the 256MiB and 512MiB versions. They should also work the 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 +much so that we have to use an -rc tag for U-Boot and a special +Linux tree. + +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/bsp/buildroot/board/olimex/imx233_olinuxino/genimage-imx233_olinuxino.cfg b/bsp/buildroot/board/olimex/imx233_olinuxino/genimage-imx233_olinuxino.cfg deleted file mode 100644 index 78979dcc..00000000 --- a/bsp/buildroot/board/olimex/imx233_olinuxino/genimage-imx233_olinuxino.cfg +++ /dev/null @@ -1,28 +0,0 @@ -image kernel.vfat { - vfat { - files = { - "uImage" - } - } - size = 5M -} - -image sdcard.img { - hdimage { - } - partition boot { - partition-type = 0x53 - image = "u-boot.sd" - size = 16M - } - - partition kernel { - partition-type = 0xC - image = "kernel.vfat" - } - - partition rootfs { - partition-type = 0x83 - image = "rootfs.ext2" - } -} diff --git a/bsp/buildroot/board/olimex/imx233_olinuxino/linux-3.18.config b/bsp/buildroot/board/olimex/imx233_olinuxino/linux-3.18.config deleted file mode 100644 index d46d4d5c..00000000 --- a/bsp/buildroot/board/olimex/imx233_olinuxino/linux-3.18.config +++ /dev/null @@ -1,152 +0,0 @@ -CONFIG_SYSVIPC=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_PERF_EVENTS=y -# CONFIG_COMPAT_BRK is not set -CONFIG_MODULES=y -CONFIG_MODULE_FORCE_LOAD=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_BLK_DEV_INTEGRITY=y -# CONFIG_ARCH_MULTI_V7 is not set -CONFIG_ARCH_MXS=y -# CONFIG_ARM_THUMB is not set -CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_AEABI=y -CONFIG_ARM_APPENDED_DTB=y -CONFIG_ARM_ATAG_DTB_COMPAT=y -CONFIG_CMDLINE="console=ttyAMA0,115200 root=/dev/mmcblk0p2 rw rootwait" -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_SYN_COOKIES=y -CONFIG_CFG80211=y -CONFIG_CFG80211_WEXT=y -CONFIG_MAC80211=y -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -# CONFIG_FIRMWARE_IN_KERNEL is not set -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_BLOCK=y -CONFIG_MTD_DATAFLASH=y -CONFIG_MTD_SST25L=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_GPMI_NAND=y -CONFIG_MTD_UBI=y -# CONFIG_BLK_DEV is not set -CONFIG_EEPROM_AT24=y -CONFIG_EEPROM_93CX6=y -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y -CONFIG_NETDEVICES=y -# CONFIG_ETHERNET is not set -CONFIG_USB_USBNET=y -CONFIG_USB_NET_SMSC95XX=y -CONFIG_RTL8187=m -CONFIG_ATH_CARDS=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_RTLWIFI_DEBUG is not set -CONFIG_ZD1211RW=m -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_SERIO is not set -CONFIG_DEVPTS_MULTIPLE_INSTANCES=y -# CONFIG_LEGACY_PTYS is not set -# CONFIG_DEVKMEM is not set -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -CONFIG_SERIAL_MXS_AUART=y -# CONFIG_HW_RANDOM is not set -CONFIG_I2C=y -# CONFIG_I2C_COMPAT is not set -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MXS=y -CONFIG_SPI=y -CONFIG_SPI_GPIO=m -CONFIG_SPI_MXS=y -CONFIG_PTP_1588_CLOCK=y -CONFIG_GPIO_SYSFS=y -# CONFIG_HWMON is not set -CONFIG_WATCHDOG=y -CONFIG_STMP3XXX_RTC_WATCHDOG=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_FB=y -CONFIG_FB_MXS=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_PWM=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_LOGO=y -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_HRTIMER=y -# CONFIG_SND_SUPPORT_OLD_API is not set -# CONFIG_SND_VERBOSE_PROCFS is not set -# 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=y -CONFIG_USB=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_STORAGE=y -CONFIG_USB_CHIPIDEA=y -CONFIG_USB_CHIPIDEA_HOST=y -CONFIG_USB_MXS_PHY=y -CONFIG_MMC=y -CONFIG_MMC_MXS=y -CONFIG_LEDS_CLASS=y -CONFIG_LEDS_GPIO=y -CONFIG_LEDS_TRIGGER_TIMER=y -CONFIG_LEDS_TRIGGER_ONESHOT=y -CONFIG_LEDS_TRIGGER_HEARTBEAT=y -CONFIG_LEDS_TRIGGER_BACKLIGHT=y -CONFIG_LEDS_TRIGGER_GPIO=y -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_STMP=y -CONFIG_DMADEVICES=y -CONFIG_MXS_DMA=y -CONFIG_STAGING=y -CONFIG_MXS_LRADC=y -CONFIG_IIO=y -CONFIG_IIO_SYSFS_TRIGGER=y -CONFIG_PWM=y -CONFIG_PWM_MXS=y -CONFIG_EXT4_FS=y -CONFIG_TMPFS=y -CONFIG_TMPFS_POSIX_ACL=y -# CONFIG_MISC_FILESYSTEMS is not set -# CONFIG_NETWORK_FILESYSTEMS is not set -CONFIG_PRINTK_TIME=y -CONFIG_FRAME_WARN=2048 -CONFIG_UNUSED_SYMBOLS=y -CONFIG_DEBUG_FS=y -CONFIG_STRICT_DEVMEM=y -CONFIG_DEBUG_USER=y -CONFIG_KEYS=y -CONFIG_CRYPTO_DEFLATE=y -CONFIG_CRYPTO_LZO=y -# CONFIG_CRYPTO_ANSI_CPRNG is not set -CONFIG_CRYPTO_DEV_MXS_DCP=y -CONFIG_CRC_CCITT=y -CONFIG_CRC_ITU_T=y -CONFIG_CRC7=m -CONFIG_FONTS=y diff --git a/bsp/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment b/bsp/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment new file mode 100644 index 00000000..b70dea2c --- /dev/null +++ b/bsp/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/bsp/buildroot/board/olimex/imx233_olinuxino/readme.txt b/bsp/buildroot/board/olimex/imx233_olinuxino/readme.txt index 4b24ac2c..1e676c45 100644 --- a/bsp/buildroot/board/olimex/imx233_olinuxino/readme.txt +++ b/bsp/buildroot/board/olimex/imx233_olinuxino/readme.txt @@ -8,89 +8,22 @@ It also pulls up the console on the serial port, not on TV output. === Output files after building ============================================== output/images -+-- kernel.vfat (VFAT kernel partition image generated by genimage) ++-- 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 -> uImage.imx23-olinuxino (To copy kernel as "uImage" to kernel.vfat) -+-- uImage.imx23-olinuxino (Kernel uImage) ++-- uImage (Kernel binary) === Use of generated SD card image =========================================== -Just write sdcard.img directly to the SD card +To determine the device associated to the SD card have a look in the +/proc/partitions file: -***** WARNING: Double check that /dev/sdc is your MicroSD card ***** -***** It might be /dev/sdb or some other device name ***** -***** Failure to do so may result in you wiping your hard disk ***** + cat /proc/partitions - # dd if=output/images/sdcard.img of=/dev/sdc bs=512 +Then, run the following command as root: -=== Manual creation of SD card image ========================================= +*** WARNING! The command will destroy all the card content. Use with care! *** -You'll need a spare MicroSD card with Freescale's special partition layout. -This is basically three partitions: - -1) Type 53, the U-Boot partition, should be 16MB. -2) VFAT, place the kernel uImage there -3) Anything you like, for this example an ext2 partition, type 83 (linux). - -Assuming you see your MicroSD card as /dev/sdc you'd need to do, as root -and from the buildroot project top level directory: -(remember to replace /dev/sdc* with the appropiate device name!) - -***** WARNING: Double check that /dev/sdc is your MicroSD card ***** -***** It might be /dev/sdb or some other device name ***** -***** Failure to do so may result in you wiping your hard disk ***** - -1. Unmount the filesystem(s) if they're already mounted, usually... - - # for fs in `grep /dev/sdc /proc/mounts|cut -d ' ' -f 1`;do umount $fs;done - - ...should work - -2. Blank the partition table out - - # dd if=/dev/zero of=/dev/sdc bs=1024 count=1024 - -3. Set up the partitions - - # fdisk /dev/sdc - n - p - 1 - - +16MB - t - 53 - n - p - 2 - - +5M - t - 2 - 4 - n - p - 3 - - - w - -4. Fill up the first (U-Boot) partition - # dd if=output/images/u-boot.sd bs=512 of=/dev/sdc1 - -5. Create VFAT Filesystem - # mkfs.vfat /dev/sdc2 - -6. Mount and copy output/images/uImage.imx23-olinuxino to the VFAT partition, rename to uImage - # mount /dev/sdc2 /mnt - # cp output/images/uImages/uImage.imx23-olinuxino /mnt/uImage - # umount /mnt - -7. Fill up the third (filesystem) partition - # dd if=output/images/rootfs.ext2 of=/dev/sdc3 bs=512 - -8. Remove the MicroSD card from your linux PC and put it into your olinuxino. - -9. Boot! You're done! + sudo dd if=output/images/sdcard.img of=/dev/ diff --git a/bsp/buildroot/board/orangepi/orangepi-one/boot.cmd b/bsp/buildroot/board/orangepi/orangepi-one/boot.cmd new file mode 100644 index 00000000..ab616e6a --- /dev/null +++ b/bsp/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/bsp/buildroot/board/orangepi/orangepi-one/genimage.cfg b/bsp/buildroot/board/orangepi/orangepi-one/genimage.cfg new file mode 100644 index 00000000..4640ff2b --- /dev/null +++ b/bsp/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/bsp/buildroot/board/orangepi/orangepi-one/post-build.sh b/bsp/buildroot/board/orangepi/orangepi-one/post-build.sh new file mode 120000 index 00000000..cd7f1164 --- /dev/null +++ b/bsp/buildroot/board/orangepi/orangepi-one/post-build.sh @@ -0,0 +1 @@ +../post-build.sh \ No newline at end of file diff --git a/bsp/buildroot/board/orangepi/orangepi-one/post-image.sh b/bsp/buildroot/board/orangepi/orangepi-one/post-image.sh new file mode 120000 index 00000000..ae6294fa --- /dev/null +++ b/bsp/buildroot/board/orangepi/orangepi-one/post-image.sh @@ -0,0 +1 @@ +../post-image.sh \ No newline at end of file diff --git a/bsp/buildroot/board/orangepi/orangepi-one/readme.txt b/bsp/buildroot/board/orangepi/orangepi-one/readme.txt new file mode 100644 index 00000000..e650f82d --- /dev/null +++ b/bsp/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/bsp/buildroot/board/orangepi/orangepipc/boot.cmd b/bsp/buildroot/board/orangepi/orangepi-pc/boot.cmd similarity index 100% rename from bsp/buildroot/board/orangepi/orangepipc/boot.cmd rename to bsp/buildroot/board/orangepi/orangepi-pc/boot.cmd diff --git a/bsp/buildroot/board/orangepi/orangepipc/genimage.cfg b/bsp/buildroot/board/orangepi/orangepi-pc/genimage.cfg similarity index 100% rename from bsp/buildroot/board/orangepi/orangepipc/genimage.cfg rename to bsp/buildroot/board/orangepi/orangepi-pc/genimage.cfg diff --git a/bsp/buildroot/board/orangepi/orangepi-pc/post-build.sh b/bsp/buildroot/board/orangepi/orangepi-pc/post-build.sh new file mode 120000 index 00000000..cd7f1164 --- /dev/null +++ b/bsp/buildroot/board/orangepi/orangepi-pc/post-build.sh @@ -0,0 +1 @@ +../post-build.sh \ No newline at end of file diff --git a/bsp/buildroot/board/orangepi/orangepi-pc/post-image.sh b/bsp/buildroot/board/orangepi/orangepi-pc/post-image.sh new file mode 120000 index 00000000..ae6294fa --- /dev/null +++ b/bsp/buildroot/board/orangepi/orangepi-pc/post-image.sh @@ -0,0 +1 @@ +../post-image.sh \ No newline at end of file diff --git a/bsp/buildroot/board/orangepi/orangepipc/readme.txt b/bsp/buildroot/board/orangepi/orangepi-pc/readme.txt similarity index 95% rename from bsp/buildroot/board/orangepi/orangepipc/readme.txt rename to bsp/buildroot/board/orangepi/orangepi-pc/readme.txt index f12c8679..d316b6fc 100644 --- a/bsp/buildroot/board/orangepi/orangepipc/readme.txt +++ b/bsp/buildroot/board/orangepi/orangepi-pc/readme.txt @@ -12,7 +12,7 @@ How to build it Configure Buildroot: - $ make orangepipc_defconfig + $ make orangepi_pc_defconfig Compile everything and build the SD card image: diff --git a/bsp/buildroot/board/orangepi/orangepipc/post-build.sh b/bsp/buildroot/board/orangepi/post-build.sh similarity index 78% rename from bsp/buildroot/board/orangepi/orangepipc/post-build.sh rename to bsp/buildroot/board/orangepi/post-build.sh index ca7a99f2..a544a195 100755 --- a/bsp/buildroot/board/orangepi/orangepipc/post-build.sh +++ b/bsp/buildroot/board/orangepi/post-build.sh @@ -1,5 +1,5 @@ #!/bin/sh -# post-build.sh for OrangePi PC taken from CubieBoard's post-build.sh +# post-build.sh for OrangePi taken from CubieBoard's post-build.sh # 2013, Carlo Caione BOARD_DIR="$(dirname $0)" diff --git a/bsp/buildroot/board/orangepi/orangepipc/post-image.sh b/bsp/buildroot/board/orangepi/post-image.sh similarity index 52% rename from bsp/buildroot/board/orangepi/orangepipc/post-image.sh rename to bsp/buildroot/board/orangepi/post-image.sh index dbe15166..359b4c9e 100755 --- a/bsp/buildroot/board/orangepi/orangepipc/post-image.sh +++ b/bsp/buildroot/board/orangepi/post-image.sh @@ -6,17 +6,9 @@ GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" rm -rf "${GENIMAGE_TMP}" -# As we now use the Linux v4.5-RC1 kernel no orangepi-pc dtb exists yet. -# However the orangepi-plus dtb has not much content, only mmc0 and uart -# which are equal to the pc version of the board, so we use it here. -mv ${BINARIES_DIR}/sun8i-h3-orangepi-plus.dtb ${BINARIES_DIR}/sun8i-h3-orangepi-pc.dtb - - genimage \ --rootpath "${TARGET_DIR}" \ --tmppath "${GENIMAGE_TMP}" \ --inputpath "${BINARIES_DIR}" \ --outputpath "${BINARIES_DIR}" \ --config "${GENIMAGE_CFG}" - -exit $? diff --git a/bsp/buildroot/board/qemu/aarch64-virt/linux-4.7.config b/bsp/buildroot/board/qemu/aarch64-virt/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/aarch64-virt/linux-4.7.config rename to bsp/buildroot/board/qemu/aarch64-virt/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/arm-versatile/linux-4.4-nommu.config b/bsp/buildroot/board/qemu/arm-versatile/linux-4.4-nommu.config new file mode 100644 index 00000000..e1264dca --- /dev/null +++ b/bsp/buildroot/board/qemu/arm-versatile/linux-4.4-nommu.config @@ -0,0 +1,46 @@ +# CONFIG_MMU is not set +CONFIG_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 is not set +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/bsp/buildroot/board/qemu/arm-versatile/linux-4.7.config b/bsp/buildroot/board/qemu/arm-versatile/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/arm-versatile/linux-4.7.config rename to bsp/buildroot/board/qemu/arm-versatile/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch b/bsp/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch new file mode 100644 index 00000000..961b6c3d --- /dev/null +++ b/bsp/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch @@ -0,0 +1,30 @@ +From b7c1666813424d329868335c8faf8886b0f85b6c Mon Sep 17 00:00:00 2001 +From: Greg Ungerer +Date: Thu, 11 Aug 2016 21:33:11 +1000 +Subject: [PATCH] arm: fix versatile platform to work in no-MMU mode + +If CONFIG_MMU is disabled then do not carry out the virtual memory address +translation for IO devices. + +With this fix in place we can run the ARM Versatile board (including its +qemu emulation) as a no-MMU Linux system. + +Signed-off-by: Greg Ungerer +Signed-off-by: Waldemar Brodkorb + +diff -Nur linux-4.4.17.orig/arch/arm/mach-versatile/include/mach/hardware.h linux-4.4.17/arch/arm/mach-versatile/include/mach/hardware.h +--- linux-4.4.17.orig/arch/arm/mach-versatile/include/mach/hardware.h 2016-08-10 11:49:43.000000000 +0200 ++++ linux-4.4.17/arch/arm/mach-versatile/include/mach/hardware.h 2016-08-25 23:19:03.691716292 +0200 +@@ -30,8 +30,12 @@ + #define VERSATILE_PCI_VIRT_BASE (void __iomem *)0xe8000000ul + #define VERSATILE_PCI_CFG_VIRT_BASE (void __iomem *)0xe9000000ul + ++#ifdef CONFIG_MMU + /* macro to get at MMIO space when running virtually */ + #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)) + diff --git a/bsp/buildroot/board/qemu/arm-versatile/readme.txt b/bsp/buildroot/board/qemu/arm-versatile/readme.txt index f6f05f9c..c8ea4cda 100644 --- a/bsp/buildroot/board/qemu/arm-versatile/readme.txt +++ b/bsp/buildroot/board/qemu/arm-versatile/readme.txt @@ -2,6 +2,10 @@ 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 "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 -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. diff --git a/bsp/buildroot/board/qemu/m68k-mcf5208/linux-4.7.config b/bsp/buildroot/board/qemu/m68k-mcf5208/linux-4.8.config similarity index 100% rename from bsp/buildroot/board/qemu/m68k-mcf5208/linux-4.7.config rename to bsp/buildroot/board/qemu/m68k-mcf5208/linux-4.8.config diff --git a/bsp/buildroot/board/qemu/m68k-mcf5208/patches/linux/m68knommu-fix-signal.patch b/bsp/buildroot/board/qemu/m68k-mcf5208/patches/linux/m68knommu-fix-signal.patch deleted file mode 100644 index b56994b2..00000000 --- a/bsp/buildroot/board/qemu/m68k-mcf5208/patches/linux/m68knommu-fix-signal.patch +++ /dev/null @@ -1,45 +0,0 @@ -m68knommu: fix user a5 register being overwritten - -On no-MMU systems the application a5 register can be overwitten with the -address of the process data segment when processing application signals. -For flat format applications compiled with full absolute relocation this -effectively corrupts the a5 register on signal processing - and this very -quickly leads to process crash and often takes out the whole system with -a panic as well. - -This has no effect on flat format applications compiled with the more -common PIC methods (such as -msep-data). These format applications reserve -a5 for the pointer to the data segment anyway - so it doesn't change it. - -A long time ago the a5 register was used in the code packed into the user -stack to enable signal return processing. And so it had to be restored on -end of signal cleanup processing back to the original a5 user value. This -was historically done by saving away a5 in the sigcontext structure. At -some point (a long time back it seems) the a5 restore process was changed -and it was hard coded to put the user data segment address directly into a5. -Which is ok for the common PIC compiled application case, but breaks the -full relocation application code. - -We no longer use this type of signal handling mechanism and so we don't -need to do anything special to save and restore a5 at all now. So remove the -code that hard codes a5 to the address of the user data segment. - -Signed-off-by: Greg Ungerer ---- - arch/m68k/kernel/signal.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c -index 2dcee3a..9202f82 100644 ---- a/arch/m68k/kernel/signal.c -+++ b/arch/m68k/kernel/signal.c -@@ -213,7 +213,6 @@ static inline int frame_extra_sizes(int f) - - static inline void adjustformat(struct pt_regs *regs) - { -- ((struct switch_stack *)regs - 1)->a5 = current->mm->start_data; - /* - * set format byte to make stack appear modulo 4, which it will - * be when doing the rte --- -1.9.1 diff --git a/bsp/buildroot/board/qemu/m68k-q800/linux-4.7.config b/bsp/buildroot/board/qemu/m68k-q800/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/m68k-q800/linux-4.7.config rename to bsp/buildroot/board/qemu/m68k-q800/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/microblazebe-mmu/linux-4.7.config b/bsp/buildroot/board/qemu/microblazebe-mmu/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/microblazebe-mmu/linux-4.7.config rename to bsp/buildroot/board/qemu/microblazebe-mmu/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/microblazeel-mmu/linux-4.7.config b/bsp/buildroot/board/qemu/microblazeel-mmu/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/microblazeel-mmu/linux-4.7.config rename to bsp/buildroot/board/qemu/microblazeel-mmu/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/mips32r2-malta/linux-4.7.config b/bsp/buildroot/board/qemu/mips32r2-malta/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/mips32r2-malta/linux-4.7.config rename to bsp/buildroot/board/qemu/mips32r2-malta/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/mips32r2el-malta/linux-4.7.config b/bsp/buildroot/board/qemu/mips32r2el-malta/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/mips32r2el-malta/linux-4.7.config rename to bsp/buildroot/board/qemu/mips32r2el-malta/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/mips32r6-malta/linux-4.7.config b/bsp/buildroot/board/qemu/mips32r6-malta/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/mips32r6-malta/linux-4.7.config rename to bsp/buildroot/board/qemu/mips32r6-malta/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/mips32r6el-malta/linux-4.7.config b/bsp/buildroot/board/qemu/mips32r6el-malta/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/mips32r6el-malta/linux-4.7.config rename to bsp/buildroot/board/qemu/mips32r6el-malta/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/mips64-malta/linux-4.7.config b/bsp/buildroot/board/qemu/mips64-malta/linux-4.8.config similarity index 100% rename from bsp/buildroot/board/qemu/mips64-malta/linux-4.7.config rename to bsp/buildroot/board/qemu/mips64-malta/linux-4.8.config diff --git a/bsp/buildroot/board/qemu/mips64el-malta/linux-4.7.config b/bsp/buildroot/board/qemu/mips64el-malta/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/mips64el-malta/linux-4.7.config rename to bsp/buildroot/board/qemu/mips64el-malta/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/mips64r6-malta/linux-4.7.config b/bsp/buildroot/board/qemu/mips64r6-malta/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/mips64r6-malta/linux-4.7.config rename to bsp/buildroot/board/qemu/mips64r6-malta/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/mips64r6-malta/readme.txt b/bsp/buildroot/board/qemu/mips64r6-malta/readme.txt index 8f792a0a..4a6c5fe7 100644 --- a/bsp/buildroot/board/qemu/mips64r6-malta/readme.txt +++ b/bsp/buildroot/board/qemu/mips64r6-malta/readme.txt @@ -1,7 +1,10 @@ Run the emulation with: - qemu-system-mips64 -M malta -cpu MIPS64R6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic + qemu-system-mips64 -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic The login prompt will appear in the terminal that started Qemu. -Tested with QEMU 2.6.0 +Tested with QEMU 2.7.0 + +Might work with 2.6.0 by changing the -cpu entry to MIPS64R6-generic +since the naming was updated and the old name removed in 2.7.0 diff --git a/bsp/buildroot/board/qemu/mips64r6el-malta/linux-4.7.config b/bsp/buildroot/board/qemu/mips64r6el-malta/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/mips64r6el-malta/linux-4.7.config rename to bsp/buildroot/board/qemu/mips64r6el-malta/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/mips64r6el-malta/readme.txt b/bsp/buildroot/board/qemu/mips64r6el-malta/readme.txt index 3459a877..b1dc23a2 100644 --- a/bsp/buildroot/board/qemu/mips64r6el-malta/readme.txt +++ b/bsp/buildroot/board/qemu/mips64r6el-malta/readme.txt @@ -1,7 +1,10 @@ Run the emulation with: - qemu-system-mips64el -M malta -cpu MIPS64R6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic + qemu-system-mips64el -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic The login prompt will appear in the terminal that started Qemu. Tested with QEMU 2.6.0 + +Might work with 2.6.0 by changing the -cpu entry to MIPS64R6-generic +since the naming was updated and the old name removed in 2.7.0 diff --git a/bsp/buildroot/board/qemu/nios2-10m50/linux-4.9.fragment b/bsp/buildroot/board/qemu/nios2-10m50/linux-4.9.fragment new file mode 100644 index 00000000..76c864f5 --- /dev/null +++ b/bsp/buildroot/board/qemu/nios2-10m50/linux-4.9.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/bsp/buildroot/board/qemu/nios2-10m50/readme.txt b/bsp/buildroot/board/qemu/nios2-10m50/readme.txt new file mode 100644 index 00000000..978ba95c --- /dev/null +++ b/bsp/buildroot/board/qemu/nios2-10m50/readme.txt @@ -0,0 +1,9 @@ +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 the upcoming QEMU 2.9.0 [1] + +[1] http://git.qemu.org/?p=qemu.git;h=ae5045ae5b2bbd8ce1335d1b05f9ecacca83a6cf diff --git a/bsp/buildroot/board/qemu/or1k/linux-4.9.config b/bsp/buildroot/board/qemu/or1k/linux-4.9.config new file mode 100644 index 00000000..0a817b1e --- /dev/null +++ b/bsp/buildroot/board/qemu/or1k/linux-4.9.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/bsp/buildroot/board/qemu/or1k/patches/linux/0001-ld-or1k.patch b/bsp/buildroot/board/qemu/or1k/patches/linux/0001-ld-or1k.patch new file mode 100644 index 00000000..aba2463c --- /dev/null +++ b/bsp/buildroot/board/qemu/or1k/patches/linux/0001-ld-or1k.patch @@ -0,0 +1,16 @@ +OpenRISC arch name was in the beginning or32 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur linux-4.4.5.orig/arch/openrisc/kernel/vmlinux.lds.S linux-4.4.5/arch/openrisc/kernel/vmlinux.lds.S +--- linux-4.4.5.orig/arch/openrisc/kernel/vmlinux.lds.S 2016-03-10 00:35:58.000000000 +0100 ++++ linux-4.4.5/arch/openrisc/kernel/vmlinux.lds.S 2016-03-16 09:21:07.933535532 +0100 +@@ -30,7 +30,7 @@ + #include + #include + +-OUTPUT_FORMAT("elf32-or32", "elf32-or32", "elf32-or32") ++OUTPUT_FORMAT("elf32-or1k", "elf32-or1k", "elf32-or1k") + jiffies = jiffies_64 + 4; + + SECTIONS diff --git a/bsp/buildroot/board/qemu/or1k/patches/linux/0002-kallsyms.patch b/bsp/buildroot/board/qemu/or1k/patches/linux/0002-kallsyms.patch new file mode 100644 index 00000000..e788a7a9 --- /dev/null +++ b/bsp/buildroot/board/qemu/or1k/patches/linux/0002-kallsyms.patch @@ -0,0 +1,25 @@ +From: https://lkml.org/lkml/2016/12/31/13 + +The build robot reports: + + .tmp_kallsyms1.o: In function `kallsyms_relative_base': +>> (.rodata+0x8a18): undefined reference to `_text' + +This is when using 'make alldefconfig'. Adding this _text symbol to mark +the start of the kernel as in other architecture fixes this. + +Signed-off-by: Stafford Horne +Signed-off-by: Waldemar Brodkorb + +diff -Nur linux-4.9.orig/arch/openrisc/kernel/vmlinux.lds.S linux-4.9/arch/openrisc/kernel/vmlinux.lds.S +--- linux-4.9.orig/arch/openrisc/kernel/vmlinux.lds.S 2016-12-11 20:17:54.000000000 +0100 ++++ linux-4.9/arch/openrisc/kernel/vmlinux.lds.S 2017-01-01 12:13:43.039107518 +0100 +@@ -38,6 +38,8 @@ + /* Read-only sections, merged into text segment: */ + . = LOAD_BASE ; + ++ _text = .; ++ + /* _s_kernel_ro must be page aligned */ + . = ALIGN(PAGE_SIZE); + _s_kernel_ro = .; diff --git a/bsp/buildroot/board/qemu/or1k/readme.txt b/bsp/buildroot/board/qemu/or1k/readme.txt new file mode 100644 index 00000000..53c66ad9 --- /dev/null +++ b/bsp/buildroot/board/qemu/or1k/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-or32 -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.8.0. diff --git a/bsp/buildroot/board/qemu/ppc-g3beige/linux-4.7.config b/bsp/buildroot/board/qemu/ppc-g3beige/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/ppc-g3beige/linux-4.7.config rename to bsp/buildroot/board/qemu/ppc-g3beige/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/ppc-g3beige/readme.txt b/bsp/buildroot/board/qemu/ppc-g3beige/readme.txt index 070fcbbb..3bd88a6e 100644 --- a/bsp/buildroot/board/qemu/ppc-g3beige/readme.txt +++ b/bsp/buildroot/board/qemu/ppc-g3beige/readme.txt @@ -1,6 +1,6 @@ Run the emulation with: - qemu-system-ppc -M g3beige -kernel output/images/vmlinux -hda -drive file=output/images/rootfs.ext2,format=raw -append "console=ttyS0 root=/dev/hda" -serial stdio -net nic,model=rtl8139 -net user + qemu-system-ppc -M g3beige -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "console=ttyS0 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. diff --git a/bsp/buildroot/board/qemu/ppc-mpc8544ds/linux-4.7.config b/bsp/buildroot/board/qemu/ppc-mpc8544ds/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/ppc-mpc8544ds/linux-4.7.config rename to bsp/buildroot/board/qemu/ppc-mpc8544ds/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/ppc-virtex-ml507/linux-4.7.config b/bsp/buildroot/board/qemu/ppc-virtex-ml507/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/ppc-virtex-ml507/linux-4.7.config rename to bsp/buildroot/board/qemu/ppc-virtex-ml507/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/sh4-r2d/linux-4.7.config b/bsp/buildroot/board/qemu/sh4-r2d/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/sh4-r2d/linux-4.7.config rename to bsp/buildroot/board/qemu/sh4-r2d/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/sh4eb-r2d/linux-4.7.config b/bsp/buildroot/board/qemu/sh4eb-r2d/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/sh4eb-r2d/linux-4.7.config rename to bsp/buildroot/board/qemu/sh4eb-r2d/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/sparc-ss10/linux-4.7.config b/bsp/buildroot/board/qemu/sparc-ss10/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/sparc-ss10/linux-4.7.config rename to bsp/buildroot/board/qemu/sparc-ss10/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/sparc64-sun4u/linux-4.7.config b/bsp/buildroot/board/qemu/sparc64-sun4u/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/sparc64-sun4u/linux-4.7.config rename to bsp/buildroot/board/qemu/sparc64-sun4u/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/x86/linux-4.7.config b/bsp/buildroot/board/qemu/x86/linux-4.7.config deleted file mode 120000 index 22732f69..00000000 --- a/bsp/buildroot/board/qemu/x86/linux-4.7.config +++ /dev/null @@ -1 +0,0 @@ -../x86_64/linux-4.7.config \ No newline at end of file diff --git a/bsp/buildroot/board/qemu/x86/linux-4.9.config b/bsp/buildroot/board/qemu/x86/linux-4.9.config new file mode 120000 index 00000000..44b2fa12 --- /dev/null +++ b/bsp/buildroot/board/qemu/x86/linux-4.9.config @@ -0,0 +1 @@ +../x86_64/linux-4.9.config \ No newline at end of file diff --git a/bsp/buildroot/board/qemu/x86_64/linux-4.7.config b/bsp/buildroot/board/qemu/x86_64/linux-4.9.config similarity index 100% rename from bsp/buildroot/board/qemu/x86_64/linux-4.7.config rename to bsp/buildroot/board/qemu/x86_64/linux-4.9.config diff --git a/bsp/buildroot/board/qemu/xtensa-lx60/linux-4.7-nommu.config b/bsp/buildroot/board/qemu/xtensa-lx60/linux-4.8-nommu.config similarity index 100% rename from bsp/buildroot/board/qemu/xtensa-lx60/linux-4.7-nommu.config rename to bsp/buildroot/board/qemu/xtensa-lx60/linux-4.8-nommu.config diff --git a/bsp/buildroot/board/qemu/xtensa-lx60/linux-4.7.config b/bsp/buildroot/board/qemu/xtensa-lx60/linux-4.8.config similarity index 100% rename from bsp/buildroot/board/qemu/xtensa-lx60/linux-4.7.config rename to bsp/buildroot/board/qemu/xtensa-lx60/linux-4.8.config diff --git a/bsp/buildroot/board/raspberrypi/genimage-raspberrypi.cfg b/bsp/buildroot/board/raspberrypi/genimage-raspberrypi.cfg index 74758f5e..bd5166a0 100644 --- a/bsp/buildroot/board/raspberrypi/genimage-raspberrypi.cfg +++ b/bsp/buildroot/board/raspberrypi/genimage-raspberrypi.cfg @@ -9,7 +9,7 @@ image boot.vfat { "rpi-firmware/config.txt", "rpi-firmware/fixup.dat", "rpi-firmware/start.elf", - "kernel-marked/zImage" + "zImage" } } size = 32M diff --git a/bsp/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg b/bsp/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg index a38840c8..a9d4c450 100644 --- a/bsp/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg +++ b/bsp/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg @@ -7,7 +7,7 @@ image boot.vfat { "rpi-firmware/config.txt", "rpi-firmware/fixup.dat", "rpi-firmware/start.elf", - "kernel-marked/zImage" + "zImage" } } size = 32M diff --git a/bsp/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg b/bsp/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg index 443c8218..a3be2a34 100644 --- a/bsp/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg +++ b/bsp/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg @@ -7,7 +7,7 @@ image boot.vfat { "rpi-firmware/config.txt", "rpi-firmware/fixup.dat", "rpi-firmware/start.elf", - "kernel-marked/zImage" + "zImage" } } size = 32M diff --git a/bsp/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg b/bsp/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg index 7ba89c55..3c9f1e5e 100644 --- a/bsp/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg +++ b/bsp/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg @@ -7,7 +7,8 @@ image boot.vfat { "rpi-firmware/config.txt", "rpi-firmware/fixup.dat", "rpi-firmware/start.elf", - "kernel-marked/zImage" + "rpi-firmware/overlays", + "zImage" } } size = 32M diff --git a/bsp/buildroot/board/raspberrypi/post-image.sh b/bsp/buildroot/board/raspberrypi/post-image.sh index 73ffd658..b2bb0706 100755 --- a/bsp/buildroot/board/raspberrypi/post-image.sh +++ b/bsp/buildroot/board/raspberrypi/post-image.sh @@ -5,10 +5,18 @@ BOARD_NAME="$(basename ${BOARD_DIR})" GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" -# Mark the kernel as DT-enabled -mkdir -p "${BINARIES_DIR}/kernel-marked" -${HOST_DIR}/usr/bin/mkknlimg "${BINARIES_DIR}/zImage" \ - "${BINARIES_DIR}/kernel-marked/zImage" +case "${2}" 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 + ;; +esac rm -rf "${GENIMAGE_TMP}" diff --git a/bsp/buildroot/board/raspberrypi/readme.txt b/bsp/buildroot/board/raspberrypi/readme.txt index a170f8f9..94826934 100644 --- a/bsp/buildroot/board/raspberrypi/readme.txt +++ b/bsp/buildroot/board/raspberrypi/readme.txt @@ -22,6 +22,10 @@ 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 @@ -53,21 +57,24 @@ After building, you should obtain this tree: +-- bcm2709-rpi-2-b.dtb [1] +-- bcm2710-rpi-3-b.dtb [1] +-- boot.vfat - +-- kernel-marked/zImage [2] +-- rootfs.ext4 +-- rpi-firmware/ | +-- bootcode.bin | +-- cmdline.txt | +-- config.txt | +-- fixup.dat - | `-- start.elf + | +-- start.elf + | `-- overlays/ [2] +-- sdcard.img `-- zImage [1] Not all of them will be present, depending on the RaspberryPi model you are using. -[2] This is the mkknlimg DT-marked kernel. +[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 ======================== diff --git a/bsp/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch b/bsp/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch new file mode 100644 index 00000000..8d3c703e --- /dev/null +++ b/bsp/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/bsp/buildroot/board/roseapplepi/patches/linux/0003-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch b/bsp/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/bsp/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/bsp/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch b/bsp/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch new file mode 100644 index 00000000..d76e2851 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/solidrun/mx6cubox/boot.scr.txt b/bsp/buildroot/board/solidrun/mx6cubox/boot.scr.txt new file mode 100644 index 00000000..7a8aa4bd --- /dev/null +++ b/bsp/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/bsp/buildroot/board/solidrun/mx6cubox/genimage.cfg b/bsp/buildroot/board/solidrun/mx6cubox/genimage.cfg new file mode 100644 index 00000000..490986ac --- /dev/null +++ b/bsp/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/bsp/buildroot/board/solidrun/mx6cubox/post-build.sh b/bsp/buildroot/board/solidrun/mx6cubox/post-build.sh new file mode 100755 index 00000000..07c480e6 --- /dev/null +++ b/bsp/buildroot/board/solidrun/mx6cubox/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +$HOST_DIR/usr/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/bsp/buildroot/board/freescale/imx25pdk/post-image.sh b/bsp/buildroot/board/solidrun/mx6cubox/post-image.sh similarity index 100% rename from bsp/buildroot/board/freescale/imx25pdk/post-image.sh rename to bsp/buildroot/board/solidrun/mx6cubox/post-image.sh diff --git a/bsp/buildroot/board/solidrun/mx6cubox/readme.txt b/bsp/buildroot/board/solidrun/mx6cubox/readme.txt new file mode 100644 index 00000000..630ab6c7 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/synopsys/vdk/patches/linux/0001-arc-vdk-Disable-halt-on-reset.patch b/bsp/buildroot/board/synopsys/vdk/patches/linux/0001-arc-vdk-Disable-halt-on-reset.patch new file mode 100644 index 00000000..7ff78149 --- /dev/null +++ b/bsp/buildroot/board/synopsys/vdk/patches/linux/0001-arc-vdk-Disable-halt-on-reset.patch @@ -0,0 +1,32 @@ +From 1e248a880ee46921f85213da32b18f6becf07078 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Tue, 31 Jan 2017 19:00:29 +0300 +Subject: [PATCH 1/3] arc: vdk: Disable halt on reset + +In recent VDKs ARC cores are configured as "run on reset" +which made existing kernel configuration outdated to effect that +slave cores never start execution of the code keeping only master +online. + +With that fix we're again in sync with VDK platform. + +Signed-off-by: Alexey Brodkin +--- + arch/arc/configs/vdk_hs38_smp_defconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arc/configs/vdk_hs38_smp_defconfig b/arch/arc/configs/vdk_hs38_smp_defconfig +index 969b206d6c67..00036e814dc1 100644 +--- a/arch/arc/configs/vdk_hs38_smp_defconfig ++++ b/arch/arc/configs/vdk_hs38_smp_defconfig +@@ -15,6 +15,7 @@ CONFIG_ARC_PLAT_AXS10X=y + CONFIG_AXS103=y + CONFIG_ISA_ARCV2=y + CONFIG_SMP=y ++# CONFIG_ARC_SMP_HALT_ON_RESET is not set + # CONFIG_ARC_HAS_GFRC is not set + CONFIG_ARC_UBOOT_SUPPORT=y + CONFIG_ARC_BUILTIN_DTB_NAME="vdk_hs38_smp" +-- +2.7.4 + diff --git a/bsp/buildroot/board/synopsys/vdk/patches/linux/0002-arc-vdk-Add-support-of-MMC-controller.patch b/bsp/buildroot/board/synopsys/vdk/patches/linux/0002-arc-vdk-Add-support-of-MMC-controller.patch new file mode 100644 index 00000000..bd5dedb1 --- /dev/null +++ b/bsp/buildroot/board/synopsys/vdk/patches/linux/0002-arc-vdk-Add-support-of-MMC-controller.patch @@ -0,0 +1,70 @@ +From c9d5ba0157fcfe48c0ec3448bdaecbabb8cefbca Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Tue, 31 Jan 2017 19:02:44 +0300 +Subject: [PATCH 2/3] arc: vdk: Add support of MMC controller + +ARC VDK virtual platform emulates host MMC controller (DW Mobile Storage) +and moreover rootfs is situated on that virtual card. + +Signed-off-by: Alexey Brodkin +--- + arch/arc/boot/dts/vdk_axs10x_mb.dtsi | 18 ++++++++++++++++++ + arch/arc/configs/vdk_hs38_smp_defconfig | 5 ++++- + 2 files changed, 22 insertions(+), 1 deletion(-) + +diff --git a/arch/arc/boot/dts/vdk_axs10x_mb.dtsi b/arch/arc/boot/dts/vdk_axs10x_mb.dtsi +index 99498a4b4216..1953914b9f4f 100644 +--- a/arch/arc/boot/dts/vdk_axs10x_mb.dtsi ++++ b/arch/arc/boot/dts/vdk_axs10x_mb.dtsi +@@ -23,6 +23,12 @@ + #clock-cells = <0>; + }; + ++ mmcclk: mmcclk { ++ compatible = "fixed-clock"; ++ clock-frequency = <50000000>; ++ #clock-cells = <0>; ++ }; ++ + pguclk: pguclk { + #clock-cells = <0>; + compatible = "fixed-clock"; +@@ -94,5 +100,17 @@ + interrupts = <5>; + interrupt-names = "arc_ps2_irq"; + }; ++ ++ mmc@0x15000 { ++ compatible = "snps,dw-mshc"; ++ reg = <0x15000 0x400>; ++ num-slots = <1>; ++ fifo-depth = <1024>; ++ card-detect-delay = <200>; ++ clocks = <&apbclk>, <&mmcclk>; ++ clock-names = "biu", "ciu"; ++ interrupts = <7>; ++ bus-width = <4>; ++ }; + }; + }; +diff --git a/arch/arc/configs/vdk_hs38_smp_defconfig b/arch/arc/configs/vdk_hs38_smp_defconfig +index 00036e814dc1..85c697a7ef1c 100644 +--- a/arch/arc/configs/vdk_hs38_smp_defconfig ++++ b/arch/arc/configs/vdk_hs38_smp_defconfig +@@ -79,9 +79,12 @@ CONFIG_USB_OHCI_HCD=y + CONFIG_USB_OHCI_HCD_PLATFORM=y + CONFIG_USB_STORAGE=y + CONFIG_USB_SERIAL=y ++CONFIG_MMC=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_DW=y + # CONFIG_IOMMU_SUPPORT is not set + CONFIG_EXT3_FS=y +-CONFIG_EXT4_FS=y + CONFIG_MSDOS_FS=y + CONFIG_VFAT_FS=y + CONFIG_NTFS_FS=y +-- +2.7.4 + diff --git a/bsp/buildroot/board/synopsys/vdk/patches/linux/0003-arc-vdk-Add-support-of-UIO.patch b/bsp/buildroot/board/synopsys/vdk/patches/linux/0003-arc-vdk-Add-support-of-UIO.patch new file mode 100644 index 00000000..2b084a93 --- /dev/null +++ b/bsp/buildroot/board/synopsys/vdk/patches/linux/0003-arc-vdk-Add-support-of-UIO.patch @@ -0,0 +1,48 @@ +From caa0dca3f4913712d1883e9b3b540f0815864ed9 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Tue, 31 Jan 2017 19:03:56 +0300 +Subject: [PATCH 3/3] arc: vdk: Add support of UIO + +ARC VDK for EVSS uses UIO for communication with Embedded Vision +Subsystem. + +Signed-off-by: Alexey Brodkin +--- + arch/arc/boot/dts/vdk_axs10x_mb.dtsi | 8 ++++++++ + arch/arc/configs/vdk_hs38_smp_defconfig | 2 ++ + 2 files changed, 10 insertions(+) + +diff --git a/arch/arc/boot/dts/vdk_axs10x_mb.dtsi b/arch/arc/boot/dts/vdk_axs10x_mb.dtsi +index 1953914b9f4f..f0df59b23e21 100644 +--- a/arch/arc/boot/dts/vdk_axs10x_mb.dtsi ++++ b/arch/arc/boot/dts/vdk_axs10x_mb.dtsi +@@ -112,5 +112,13 @@ + interrupts = <7>; + bus-width = <4>; + }; ++ ++ /* Embedded Vision subsystem UIO mappings; only relevant for EV VDK */ ++ uio_ev: uio@0xD0000000 { ++ compatible = "generic-uio"; ++ reg = <0xD0000000 0x2000 0xD1000000 0x2000 0x90000000 0x10000000 0xC0000000 0x10000000>; ++ reg-names = "ev_gsa", "ev_ctrl", "ev_shared_mem", "ev_code_mem"; ++ interrupts = <23>; ++ }; + }; + }; +diff --git a/arch/arc/configs/vdk_hs38_smp_defconfig b/arch/arc/configs/vdk_hs38_smp_defconfig +index 85c697a7ef1c..ecd7f42d50c9 100644 +--- a/arch/arc/configs/vdk_hs38_smp_defconfig ++++ b/arch/arc/configs/vdk_hs38_smp_defconfig +@@ -83,6 +83,8 @@ CONFIG_MMC=y + CONFIG_MMC_SDHCI=y + CONFIG_MMC_SDHCI_PLTFM=y + CONFIG_MMC_DW=y ++CONFIG_UIO=y ++CONFIG_UIO_PDRV_GENIRQ=y + # CONFIG_IOMMU_SUPPORT is not set + CONFIG_EXT3_FS=y + CONFIG_MSDOS_FS=y +-- +2.7.4 + diff --git a/bsp/buildroot/board/technexion/imx6ulpico/genimage.cfg b/bsp/buildroot/board/technexion/imx6ulpico/genimage.cfg deleted file mode 100644 index 9e67105f..00000000 --- a/bsp/buildroot/board/technexion/imx6ulpico/genimage.cfg +++ /dev/null @@ -1,41 +0,0 @@ -# Minimal eMMC card image for the Technexion's i.MX6UL Pico board -# -# We mimic the .sdcard Freescale's image format for i.MX6UL: -# * the eMMC 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 and dtbs, -# * a single root filesystem partition is required (Ext4 in this case). -# - -image boot.vfat { - vfat { - files = { - "imx6ul-pico-hobbit.dtb", - "zImage" - } - } - size = 16M -} - -image sdcard.img { - hdimage { - } - - partition u-boot { - in-partition-table = "no" - image = "u-boot.imx" - offset = 1024 - } - - partition boot { - partition-type = 0xC - bootable = "true" - image = "boot.vfat" - offset = 8M - } - - partition rootfs { - partition-type = 0x83 - image = "rootfs.ext4" - } -} diff --git a/bsp/buildroot/board/technexion/imx6ulpico/linux.fragment b/bsp/buildroot/board/technexion/imx6ulpico/linux.fragment index 88e323e6..892d0cb7 100644 --- a/bsp/buildroot/board/technexion/imx6ulpico/linux.fragment +++ b/bsp/buildroot/board/technexion/imx6ulpico/linux.fragment @@ -1,2 +1 @@ CONFIG_CFG80211_WEXT=y -CONFIG_SMP=n diff --git a/bsp/buildroot/board/technexion/imx6ulpico/patches/linux/0001-picowifi.patch b/bsp/buildroot/board/technexion/imx6ulpico/patches/linux/0001-picowifi.patch deleted file mode 100644 index c6574915..00000000 --- a/bsp/buildroot/board/technexion/imx6ulpico/patches/linux/0001-picowifi.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 5a9a0986ab0041b53f55e2f4eaedabecb2ea1760 Mon Sep 17 00:00:00 2001 -From: Vanessa Maegima -Date: Mon, 1 Aug 2016 09:33:00 -0300 -Subject: [PATCH v2] ARM: dts: imx6ul-pico-hobbit: Add Wifi support - -imx6ul-pico-hobbit has a bcm4339 wifi chip connected to usdhc2 port. - -Add support for the WL_REG_ON regulator, so that Wifi can be -functional on this board. - -Signed-off-by: Vanessa Maegima -Signed-off-by: Fabio Estevam ---- -Changes since v1: -- Improve commit log -- Remove WL_HOST_WAKE - - arch/arm/boot/dts/imx6ul-pico-hobbit.dts | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/arch/arm/boot/dts/imx6ul-pico-hobbit.dts b/arch/arm/boot/dts/imx6ul-pico-hobbit.dts -index 8ce1fec..af2e06b 100644 ---- a/arch/arm/boot/dts/imx6ul-pico-hobbit.dts -+++ b/arch/arm/boot/dts/imx6ul-pico-hobbit.dts -@@ -100,6 +100,18 @@ - gpio = <&gpio1 6 0>; - }; - -+ reg_brcm: brcm-reg { -+ compatible = "regulator-fixed"; -+ enable-active-high; -+ gpio = <&gpio4 8 GPIO_ACTIVE_HIGH>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pinctrl_brcm_reg>; -+ regulator-name = "brcm_reg"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ startup-delay-us = <200000>; -+ }; -+ - sound { - compatible = "fsl,imx-audio-sgtl5000"; - model = "imx6ul-sgtl5000"; -@@ -325,12 +337,20 @@ - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_usdhc2>; - no-1-8-v; -+ non-removable; - keep-power-in-suspend; - wakeup-source; -+ vmmc-supply = <®_brcm>; - status = "okay"; - }; - - &iomuxc { -+ pinctrl_brcm_reg: brcmreggrp { -+ fsl,pins = < -+ MX6UL_PAD_NAND_DATA06__GPIO4_IO08 0x10b0 /* WL_REG_ON */ -+ >; -+ }; -+ - pinctrl_enet2: enet2grp { - fsl,pins = < - MX6UL_PAD_ENET1_TX_DATA1__ENET2_MDIO 0x1b0b0 --- -1.9.1 diff --git a/bsp/buildroot/board/technexion/imx6ulpico/post-image.sh b/bsp/buildroot/board/technexion/imx6ulpico/post-image.sh deleted file mode 100755 index b4ac4608..00000000 --- a/bsp/buildroot/board/technexion/imx6ulpico/post-image.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/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/bsp/buildroot/board/technexion/imx6ulpico/readme.txt b/bsp/buildroot/board/technexion/imx6ulpico/readme.txt index ff78412e..7eab3f6b 100644 --- a/bsp/buildroot/board/technexion/imx6ulpico/readme.txt +++ b/bsp/buildroot/board/technexion/imx6ulpico/readme.txt @@ -46,7 +46,7 @@ command as root: *** WARNING! This will destroy all the card content. Use with care! *** For details about the medium image layout, see the definition in -board/technexion/imx6ulpico/genimage.cfg. +board/freescale/common/imx/genimage.cfg.template. Boot the i.MX6UL Pico board ========================= diff --git a/bsp/buildroot/board/technologic/ts4900/genimage.cfg b/bsp/buildroot/board/technologic/ts4900/genimage.cfg new file mode 100644 index 00000000..7e580eb2 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/technologic/ts4900/post-image.sh b/bsp/buildroot/board/technologic/ts4900/post-image.sh new file mode 100755 index 00000000..1e90cded --- /dev/null +++ b/bsp/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}/usr/bin/genimage \ + --config ${GENIMAGE_CFG} \ + --rootpath $TARGET_DIR \ + --tmppath $GENIMAGE_TMP \ + --inputpath $BINARIES_DIR \ + --outputpath $BINARIES_DIR diff --git a/bsp/buildroot/board/technologic/ts4900/readme.txt b/bsp/buildroot/board/technologic/ts4900/readme.txt new file mode 100644 index 00000000..679454fd --- /dev/null +++ b/bsp/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/bsp/buildroot/board/udoo/mx6qdl/genimage.cfg b/bsp/buildroot/board/udoo/mx6qdl/genimage.cfg new file mode 100644 index 00000000..4361d540 --- /dev/null +++ b/bsp/buildroot/board/udoo/mx6qdl/genimage.cfg @@ -0,0 +1,48 @@ +# Minimal microSD card image for Udoo MX6Q/DL boards +# +# We mimic the .sdcard Freescale's image format for i.MX6: +# * the microSD card must have 1 kB free space at the beginning, +# * U-Boot is dumped as is, +# * a FAT partition at offset 16 MB is containing zImage and dtbs, +# * a single root filesystem partition is required (Ext4 in this case). +# + +image boot.vfat { + vfat { + files = { + "imx6q-udoo.dtb", + "imx6dl-udoo.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 = 16M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/bsp/buildroot/board/udoo/mx6qdl/linux.fragment b/bsp/buildroot/board/udoo/mx6qdl/linux.fragment new file mode 100644 index 00000000..1d250998 --- /dev/null +++ b/bsp/buildroot/board/udoo/mx6qdl/linux.fragment @@ -0,0 +1 @@ +# CONFIG_USB is not set diff --git a/bsp/buildroot/board/freescale/imx51evk/post-image.sh b/bsp/buildroot/board/udoo/mx6qdl/post-image.sh similarity index 100% rename from bsp/buildroot/board/freescale/imx51evk/post-image.sh rename to bsp/buildroot/board/udoo/mx6qdl/post-image.sh diff --git a/bsp/buildroot/board/udoo/mx6qdl/readme.txt b/bsp/buildroot/board/udoo/mx6qdl/readme.txt new file mode 100644 index 00000000..cf1a6104 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/udoo/neo/boot.scr.txt b/bsp/buildroot/board/udoo/neo/boot.scr.txt new file mode 100644 index 00000000..7a8aa4bd --- /dev/null +++ b/bsp/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/bsp/buildroot/board/udoo/neo/genimage.cfg b/bsp/buildroot/board/udoo/neo/genimage.cfg new file mode 100644 index 00000000..46209120 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/udoo/neo/patches/linux/0001-udoo_neo_support.patch b/bsp/buildroot/board/udoo/neo/patches/linux/0001-udoo_neo_support.patch new file mode 100644 index 00000000..2e8cea5d --- /dev/null +++ b/bsp/buildroot/board/udoo/neo/patches/linux/0001-udoo_neo_support.patch @@ -0,0 +1,560 @@ +From 76e691fc7653b85d390e58710e5c7db73ca49367 Mon Sep 17 00:00:00 2001 +From: Andreas Färber +Date: Sun, 16 Oct 2016 16:44:23 +0200 +Subject: ARM: dts: imx6sx: Add UDOO Neo support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add initial device trees for UDOO Neo Basic, Extended and Full boards: +* Serial console is enabled, other serial ports are prepared. +* I2C based PMIC is enabled. +* Ethernet is enabled for Basic and Full. +* SDHC is enabled, with the SDIO_PWR GPIO modeled as a regulator. +* Both user LEDs are enabled, with the orange one reserved for the M4 + and with the SD card as default trigger for the red LED. + +The decision on a board compatible string is deferred to later. + +Cc: Ettore Chimenti +Signed-off-by: Andreas Färber +Signed-off-by: Shawn Guo +--- + arch/arm/boot/dts/Makefile | 5 +- + arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts | 69 ++++++ + arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts | 54 +++++ + arch/arm/boot/dts/imx6sx-udoo-neo-full.dts | 69 ++++++ + arch/arm/boot/dts/imx6sx-udoo-neo.dtsi | 293 +++++++++++++++++++++++++ + 5 files changed, 489 insertions(+), 1 deletion(-) + create mode 100644 arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts + create mode 100644 arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts + create mode 100644 arch/arm/boot/dts/imx6sx-udoo-neo-full.dts + create mode 100644 arch/arm/boot/dts/imx6sx-udoo-neo.dtsi + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index 019976b..da0197d 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -417,7 +417,10 @@ dtb-$(CONFIG_SOC_IMX6SX) += \ + imx6sx-sabreauto.dtb \ + imx6sx-sdb-reva.dtb \ + imx6sx-sdb-sai.dtb \ +- imx6sx-sdb.dtb ++ imx6sx-sdb.dtb \ ++ imx6sx-udoo-neo-basic.dtb \ ++ imx6sx-udoo-neo-extended.dtb \ ++ imx6sx-udoo-neo-full.dtb + dtb-$(CONFIG_SOC_IMX6UL) += \ + imx6ul-14x14-evk.dtb \ + imx6ul-geam-kit.dtb \ +diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts b/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts +new file mode 100644 +index 0000000..0b88878 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6sx-udoo-neo-basic.dts +@@ -0,0 +1,69 @@ ++/* ++ * Copyright (c) 2016 Andreas Färber ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This library 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 library 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. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++/dts-v1/; ++ ++#include "imx6sx-udoo-neo.dtsi" ++ ++/ { ++ model = "UDOO Neo Basic"; ++ compatible = "fsl,imx6sx"; ++ ++ memory { ++ reg = <0x80000000 0x20000000>; ++ }; ++}; ++ ++&fec1 { ++ phy-handle = <ðphy1>; ++ status = "okay"; ++ ++ mdio { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ethphy1: ethernet-phy@0 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <0>; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts b/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts +new file mode 100644 +index 0000000..d6fdd17 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6sx-udoo-neo-extended.dts +@@ -0,0 +1,54 @@ ++/* ++ * Copyright (c) 2016 Andreas Färber ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This library 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 library 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. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++/dts-v1/; ++ ++#include "imx6sx-udoo-neo.dtsi" ++ ++/ { ++ model = "UDOO Neo Extended"; ++ compatible = "fsl,imx6sx"; ++ ++ memory { ++ reg = <0x80000000 0x40000000>; ++ }; ++}; +diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts b/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts +new file mode 100644 +index 0000000..d8c3577 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6sx-udoo-neo-full.dts +@@ -0,0 +1,69 @@ ++/* ++ * Copyright (c) 2016 Andreas Färber ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This library 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 library 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. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++/dts-v1/; ++ ++#include "imx6sx-udoo-neo.dtsi" ++ ++/ { ++ model = "UDOO Neo Full"; ++ compatible = "fsl,imx6sx"; ++ ++ memory { ++ reg = <0x80000000 0x40000000>; ++ }; ++}; ++ ++&fec1 { ++ phy-handle = <ðphy1>; ++ status = "okay"; ++ ++ mdio { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ethphy1: ethernet-phy@0 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <0>; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi b/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi +new file mode 100644 +index 0000000..2b65d26 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6sx-udoo-neo.dtsi +@@ -0,0 +1,293 @@ ++/* ++ * Copyright (c) 2016 Andreas Färber ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This library 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 library 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. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++#include "imx6sx.dtsi" ++ ++/ { ++ compatible = "fsl,imx6sx"; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ red { ++ label = "udoo-neo:red:mmc"; ++ gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; ++ default-state = "off"; ++ linux,default-trigger = "mmc0"; ++ }; ++ ++ orange { ++ label = "udoo-neo:orange:user"; ++ gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>; ++ default-state = "keep"; ++ }; ++ }; ++ ++ reg_sdio_pwr: regulator-sdio-pwr { ++ compatible = "regulator-fixed"; ++ gpio = <&gpio6 1 GPIO_ACTIVE_HIGH>; ++ enable-active-high; ++ regulator-name = "SDIO_PWR"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-boot-on; ++ }; ++}; ++ ++&cpu0 { ++ arm-supply = <&sw1a_reg>; ++ soc-supply = <&sw1c_reg>; ++}; ++ ++&fec1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_enet1>; ++ phy-mode = "rmii"; ++ phy-reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>; ++}; ++ ++&i2c1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c1>; ++ clock-frequency = <100000>; ++ status = "okay"; ++ ++ pmic: pmic@08 { ++ compatible = "fsl,pfuze3000"; ++ reg = <0x08>; ++ ++ regulators { ++ sw1a_reg: sw1a { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <1475000>; ++ regulator-boot-on; ++ regulator-always-on; ++ regulator-ramp-delay = <6250>; ++ }; ++ ++ sw1c_reg: sw1b { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <1475000>; ++ regulator-boot-on; ++ regulator-always-on; ++ regulator-ramp-delay = <6250>; ++ }; ++ ++ sw2_reg: sw2 { ++ regulator-min-microvolt = <1500000>; ++ regulator-max-microvolt = <1850000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ sw3a_reg: sw3 { ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <1650000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ swbst_reg: swbst { ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5150000>; ++ }; ++ ++ snvs_reg: vsnvs { ++ regulator-min-microvolt = <1000000>; ++ regulator-max-microvolt = <3000000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ vref_reg: vrefddr { ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ vgen1_reg: vldo1 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vgen2_reg: vldo2 { ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1550000>; ++ }; ++ ++ vgen3_reg: vccsd { ++ regulator-min-microvolt = <2850000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vgen4_reg: v33 { ++ regulator-min-microvolt = <2850000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vgen5_reg: vldo3 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vgen6_reg: vldo4 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ }; ++ }; ++}; ++ ++&iomuxc { ++ pinctrl_enet1: enet1grp { ++ fsl,pins = ++ , ++ , ++ , ++ , ++ , ++ , ++ ++ , ++ , ++ , ++ , ++ , ++ , ++ ++ ; ++ }; ++ ++ pinctrl_i2c1: i2c1grp { ++ fsl,pins = ++ , ++ ; ++ }; ++ ++ pinctrl_uart1: uart1grp { ++ fsl,pins = ++ , ++ ; ++ }; ++ ++ pinctrl_uart2: uart2grp { ++ fsl,pins = ++ , ++ ; ++ }; ++ ++ pinctrl_uart5: uart5grp { ++ fsl,pins = ++ , ++ ; ++ }; ++ ++ pinctrl_uart6: uart6grp { ++ fsl,pins = ++ , ++ , ++ , ++ , ++ , ++ , ++ , ++ ; ++ }; ++ ++ pinctrl_usdhc2: usdhc2grp { ++ fsl,pins = ++ , ++ , ++ , ++ , ++ , ++ , ++ ; /* CD */ ++ }; ++}; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart1>; ++ status = "okay"; ++}; ++ ++/* Cortex-M4 serial */ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart2>; ++ status = "disabled"; ++}; ++ ++/* Arduino serial */ ++&uart5 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart5>; ++ status = "disabled"; ++}; ++ ++&uart6 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart6>; ++ uart-has-rtscts; ++ status = "disabled"; ++}; ++ ++&usdhc2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc2>; ++ vmmc-supply = <®_sdio_pwr>; ++ bus-width = <4>; ++ cd-gpios = <&gpio6 2 GPIO_ACTIVE_LOW>; ++ no-1-8-v; ++ keep-power-in-suspend; ++ wakeup-source; ++ status = "okay"; ++}; +-- +cgit v0.12 diff --git a/bsp/buildroot/board/udoo/neo/post-build.sh b/bsp/buildroot/board/udoo/neo/post-build.sh new file mode 100755 index 00000000..07c480e6 --- /dev/null +++ b/bsp/buildroot/board/udoo/neo/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +$HOST_DIR/usr/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/bsp/buildroot/board/freescale/imx7dsdb/post-image.sh b/bsp/buildroot/board/udoo/neo/post-image.sh similarity index 99% rename from bsp/buildroot/board/freescale/imx7dsdb/post-image.sh rename to bsp/buildroot/board/udoo/neo/post-image.sh index b4ac4608..18e76aa4 100755 --- a/bsp/buildroot/board/freescale/imx7dsdb/post-image.sh +++ b/bsp/buildroot/board/udoo/neo/post-image.sh @@ -12,3 +12,4 @@ genimage \ --inputpath "${BINARIES_DIR}" \ --outputpath "${BINARIES_DIR}" \ --config "${GENIMAGE_CFG}" + diff --git a/bsp/buildroot/board/udoo/neo/readme.txt b/bsp/buildroot/board/udoo/neo/readme.txt new file mode 100644 index 00000000..f037ad48 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/wandboard/boot.scr.txt b/bsp/buildroot/board/wandboard/boot.scr.txt new file mode 100644 index 00000000..7a8aa4bd --- /dev/null +++ b/bsp/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/bsp/buildroot/board/wandboard/genimage.cfg b/bsp/buildroot/board/wandboard/genimage.cfg index f5df1ff8..b23a91b0 100644 --- a/bsp/buildroot/board/wandboard/genimage.cfg +++ b/bsp/buildroot/board/wandboard/genimage.cfg @@ -2,7 +2,7 @@ # # 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 (Ext2 in this case). +# 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 @@ -23,16 +23,9 @@ image sdcard.img { offset = 70656 } - partition u-boot-env { - in-partition-table = "no" - image = "uboot-env.bin" - offset = 393216 - size = 8192 - } - partition rootfs { partition-type = 0x83 - image = "rootfs.ext2" + image = "rootfs.ext4" size = 512M } } diff --git a/bsp/buildroot/board/wandboard/post-build.sh b/bsp/buildroot/board/wandboard/post-build.sh new file mode 100755 index 00000000..07c480e6 --- /dev/null +++ b/bsp/buildroot/board/wandboard/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +$HOST_DIR/usr/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/bsp/buildroot/board/wandboard/post-image.sh b/bsp/buildroot/board/wandboard/post-image.sh index 11f58dbd..18e76aa4 100755 --- a/bsp/buildroot/board/wandboard/post-image.sh +++ b/bsp/buildroot/board/wandboard/post-image.sh @@ -13,5 +13,3 @@ genimage \ --outputpath "${BINARIES_DIR}" \ --config "${GENIMAGE_CFG}" -RET=${?} -exit ${RET} diff --git a/bsp/buildroot/board/wandboard/uboot-env.txt b/bsp/buildroot/board/wandboard/uboot-env.txt deleted file mode 100644 index f8c4fc13..00000000 --- a/bsp/buildroot/board/wandboard/uboot-env.txt +++ /dev/null @@ -1,28 +0,0 @@ -baudrate=115200 -boot_fdt=try -bootcmd=run findfdt; mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi -bootdelay=3 -bootscript=echo Running bootscript from mmc ...; source -console=ttymxc0 -ethact=FEC -ethaddr=00:1f:7b:b2:05:ee -ethprime=FEC -loadaddr=0x12000000 -fdt_addr=0x18000000 -fdt_high=0xffffffff -fdtfile=undefined -findfdt=if test $board_rev = MX6Q ; then setenv fdtfile imx6q-wandboard.dtb; fi; if test $board_rev = MX6DL ; then setenv fdtfile imx6dl-wandboard.dtb; fi; if test $fdtfile = undefined; then echo WARNING: Could not determine dtb to use; fi; -loadfdt=ext2load mmc ${mmcdev}:${mmcpart} ${fdt_addr} /boot/${fdtfile} -loadbootscript=ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script}; -loadimage=ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} -mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}; run videoargs -videoargs=setenv nextcon 0; if hdmidet; then setenv bootargs ${bootargs} video=mxcfb${nextcon}:dev=hdmi,1280x720M@60,if=RGB24; setenv fbmen fbmem=28M; setexpr nextcon ${nextcon} + 1; else echo - no HDMI monitor;fi; i2c dev 1; if i2c probe 0x10; then setenv bootargs ${bootargs} video=mxcfb${nextcon}:dev=lcd,800x480@60,if=RGB666,bpp=32; if test 0 -eq ${nextcon}; then setenv fbmem fbmem=10M; else setenv fbmem ${fbmem},10M; fi; setexpr nextcon ${nextcon} + 1; else echo '- no FWBADAPT-7WVGA-LCD-F07A-0102 display';fi; setenv bootargs ${bootargs} ${fbmem} -mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi; -mmcdev=0 -mmcpart=1 -mmcroot=/dev/mmcblk2p1 rootwait rw -netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp -netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} /boot/${fdtfile}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi; -script=boot/boot.scr -image=boot/zImage -splashpos=m,m diff --git a/bsp/buildroot/board/warp7/linux.fragment b/bsp/buildroot/board/warp7/linux.fragment new file mode 100644 index 00000000..892d0cb7 --- /dev/null +++ b/bsp/buildroot/board/warp7/linux.fragment @@ -0,0 +1 @@ +CONFIG_CFG80211_WEXT=y diff --git a/bsp/buildroot/board/warp7/readme.txt b/bsp/buildroot/board/warp7/readme.txt new file mode 100644 index 00000000..47458e9b --- /dev/null +++ b/bsp/buildroot/board/warp7/readme.txt @@ -0,0 +1,104 @@ +***************** +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.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.imx to the imx_usb_loader folder. + +Load u-boot.imx via USB: + +$ sudo ./imx_usb u-boot.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 +=> 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/bsp/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt b/bsp/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt new file mode 100644 index 00000000..a1dc2035 --- /dev/null +++ b/bsp/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/bsp/buildroot/board/zynq/readme.txt b/bsp/buildroot/board/zynq/readme.txt index 51e28b6b..c5506fe9 100644 --- a/bsp/buildroot/board/zynq/readme.txt +++ b/bsp/buildroot/board/zynq/readme.txt @@ -6,13 +6,6 @@ Currently, three boards are natively supported by Buildroot: - Avnet ZedBoard (zynq_zed_defconfig) - Avnet MicroZed (zynq_microzed_defconfig) -The following build procedure focuses on them, but you can adjust it to your -board even if it is not listed above. Major Zynq-based boards are supported by -U-Boot, and their Device Trees are merged in Linux Kernel. If your board is the -case, booting the kernel is a piece of cake. All you need to do is to change: - - Kernel Device Tree file name (BR2_LINUX_KERNEL_INTREE_DTS_NAME) - - U-Boot board defconfig (BR2_TARGET_UBOOT_BOARD_KCONFIG) - Steps to create a working system for a Zynq board: 1) Configuration (do one of the following) @@ -50,3 +43,44 @@ References: - 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/bsp/buildroot/boot/Config.in b/bsp/buildroot/boot/Config.in index 677e5f08..273c1c7a 100644 --- a/bsp/buildroot/boot/Config.in +++ b/bsp/buildroot/boot/Config.in @@ -4,6 +4,7 @@ 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/boot-wrapper-aarch64/Config.in" source "boot/grub/Config.in" @@ -15,6 +16,7 @@ source "boot/s500-bootloader/Config.in" source "boot/syslinux/Config.in" source "boot/ts4800-mbrboot/Config.in" source "boot/uboot/Config.in" +source "boot/vexpress-firmware/Config.in" source "boot/xloader/Config.in" endmenu diff --git a/bsp/buildroot/boot/arm-trusted-firmware/Config.in b/bsp/buildroot/boot/arm-trusted-firmware/Config.in new file mode 100644 index 00000000..2df82678 --- /dev/null +++ b/bsp/buildroot/boot/arm-trusted-firmware/Config.in @@ -0,0 +1,65 @@ +config BR2_TARGET_ARM_TRUSTED_FIRMWARE + bool "ARM Trusted Firmware (ATF)" + depends on BR2_aarch64 && 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.2" + +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_VERSION + string + default "v1.2" 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 + +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_ADDITIONAL_VARIABLES + string "Additional ATF build variables" + help + Additional parameters for the ATF build + E.G. 'DEBUG=1 LOG_LEVEL=20' + +endif diff --git a/bsp/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash b/bsp/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 00000000..e048e012 --- /dev/null +++ b/bsp/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 cbdd9b770ec1ab4933fc7f9f520daea5a364bb4dc964820fb017a0cf8c7df556 arm-trusted-firmware-v1.2.tar.gz +md5 fac2c08bd74337fec2e14a98fc9f748f arm-trusted-firmware-v1.2.tar.gz diff --git a/bsp/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk b/bsp/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk new file mode 100644 index 00000000..5acfab39 --- /dev/null +++ b/bsp/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# arm-trusted-firmware +# +################################################################################ + +ARM_TRUSTED_FIRMWARE_VERSION = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION)) +ARM_TRUSTED_FIRMWARE_LICENSE = BSD-3c +ARM_TRUSTED_FIRMWARE_LICENSE_FILES = license.md + +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += uboot + +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)) +BR_NO_CHECK_HASH_FOR += $(ARM_TRUSTED_FIRMWARE_SOURCE) +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 +ARM_TRUSTED_FIRMWARE_SITE = $(call github,ARM-software,arm-trusted-firmware,$(ARM_TRUSTED_FIRMWARE_VERSION)) +endif + +ARM_TRUSTED_FIRMWARE_INSTALL_IMAGES = YES + +ARM_TRUSTED_FIRMWARE_PLATFORM = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM)) + +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + BL33=$(BINARIES_DIR)/u-boot.bin \ + $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES)) \ + PLAT=$(ARM_TRUSTED_FIRMWARE_PLATFORM) \ + all fip + +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 + +define ARM_TRUSTED_FIRMWARE_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) $(ARM_TRUSTED_FIRMWARE_MAKE_OPTS) \ + $(ARM_TRUSTED_FIRMWARE_MAKE_TARGET) +endef + +define ARM_TRUSTED_FIRMWARE_INSTALL_IMAGES_CMDS + cp -dpf $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/release/*.bin $(BINARIES_DIR)/ +endef + +# Configuration ckeck +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/bsp/buildroot/boot/at91bootstrap3/Config.in b/bsp/buildroot/boot/at91bootstrap3/Config.in index b8ebe803..237deb92 100644 --- a/bsp/buildroot/boot/at91bootstrap3/Config.in +++ b/bsp/buildroot/boot/at91bootstrap3/Config.in @@ -15,7 +15,7 @@ choice prompt "AT91 Bootstrap 3 version" config BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION - bool "3.8" + bool "3.8.6" config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT bool "Custom Git repository" @@ -40,7 +40,7 @@ endif config BR2_TARGET_AT91BOOTSTRAP3_VERSION string - default "v3.8" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION + default "v3.8.6" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION default BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION \ if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT diff --git a/bsp/buildroot/boot/at91bootstrap3/at91bootstrap3.hash b/bsp/buildroot/boot/at91bootstrap3/at91bootstrap3.hash index eee6482c..e904a46e 100644 --- a/bsp/buildroot/boot/at91bootstrap3/at91bootstrap3.hash +++ b/bsp/buildroot/boot/at91bootstrap3/at91bootstrap3.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 ae7bb3f8e631f5216f05fd4650b37f2e76d88d0b893bd680f4f398f33b8f3470 at91bootstrap3-v3.8.tar.gz +sha256 a2e9ec6f42ee3b5a805fe215257b63070b6c498d57c568c46fcb18fd1b38ea7e at91bootstrap3-v3.8.6.tar.gz diff --git a/bsp/buildroot/boot/barebox/Config.in b/bsp/buildroot/boot/barebox/Config.in index fd5cb8cc..e6ecd821 100644 --- a/bsp/buildroot/boot/barebox/Config.in +++ b/bsp/buildroot/boot/barebox/Config.in @@ -12,7 +12,7 @@ choice Select the specific Barebox version you want to use config BR2_TARGET_BAREBOX_LATEST_VERSION - bool "2016.06.0" + bool "2017.01.0" config BR2_TARGET_BAREBOX_CUSTOM_VERSION bool "Custom version" @@ -40,7 +40,7 @@ endif config BR2_TARGET_BAREBOX_VERSION string - default "2016.06.0" if BR2_TARGET_BAREBOX_LATEST_VERSION + default "2017.01.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 diff --git a/bsp/buildroot/boot/barebox/barebox-aux/Config.in b/bsp/buildroot/boot/barebox/barebox-aux/Config.in index 315e1a3f..ec3b97cb 100644 --- a/bsp/buildroot/boot/barebox/barebox-aux/Config.in +++ b/bsp/buildroot/boot/barebox/barebox-aux/Config.in @@ -67,8 +67,7 @@ config BR2_TARGET_BAREBOX_AUX_CUSTOM_EMBEDDED_ENV_PATH 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 - BR2_EXTERNAL, TOPDIR etc. to refer to the custom - environment. + 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 diff --git a/bsp/buildroot/boot/barebox/barebox.hash b/bsp/buildroot/boot/barebox/barebox.hash index 9db68eb2..f769c1d8 100644 --- a/bsp/buildroot/boot/barebox/barebox.hash +++ b/bsp/buildroot/boot/barebox/barebox.hash @@ -1,5 +1,5 @@ -# http://www.barebox.org/download/barebox-2016.06.0.tar.bz2.md5 -md5 7dac834e637db66e624bf058e9310212 barebox-2016.06.0.tar.bz2 +# http://www.barebox.org/download/barebox-2017.01.0.tar.bz2.md5 +md5 d2933437885497b09d69d6e6f4beeffc barebox-2017.01.0.tar.bz2 # Locally calculated -sha256 a214167c55bf691f686397379e8b9557a1d597e56b7c1bf9607b478a1c4c597e barebox-2016.06.0.tar.bz2 +sha256 ca4cc06bdc7183e3fcb4bed300f1e820df1e022a7b86fdcf64205ddb6a103567 barebox-2017.01.0.tar.bz2 diff --git a/bsp/buildroot/boot/barebox/barebox/Config.in b/bsp/buildroot/boot/barebox/barebox/Config.in index f5e3bae8..3d8d0145 100644 --- a/bsp/buildroot/boot/barebox/barebox/Config.in +++ b/bsp/buildroot/boot/barebox/barebox/Config.in @@ -73,8 +73,7 @@ config BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH 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 - BR2_EXTERNAL, TOPDIR etc. to refer to the custom - environment. + 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 diff --git a/bsp/buildroot/boot/boot-wrapper-aarch64/Config.in b/bsp/buildroot/boot/boot-wrapper-aarch64/Config.in index c4e63e23..efb70dcd 100644 --- a/bsp/buildroot/boot/boot-wrapper-aarch64/Config.in +++ b/bsp/buildroot/boot/boot-wrapper-aarch64/Config.in @@ -11,7 +11,7 @@ config BR2_TARGET_BOOT_WRAPPER_AARCH64 possible to start an Aarch64 kernel inside the available software simulators for the Aarch64 architecture. - git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/boot-wrapper-aarch64.git + git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git if BR2_TARGET_BOOT_WRAPPER_AARCH64 @@ -32,4 +32,10 @@ config BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS 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/bsp/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk b/bsp/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk index c56bdeee..601cfab3 100644 --- a/bsp/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk +++ b/bsp/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk @@ -5,7 +5,7 @@ ################################################################################ BOOT_WRAPPER_AARCH64_VERSION = 4266507a84f8c06452109d38e0350d4759740694 -BOOT_WRAPPER_AARCH64_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/boot-wrapper-aarch64.git +BOOT_WRAPPER_AARCH64_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git BOOT_WRAPPER_AARCH64_LICENSE = BSD3c BOOT_WRAPPER_AARCH64_LICENSE_FILES = LICENSE.txt BOOT_WRAPPER_AARCH64_DEPENDENCIES = linux @@ -30,6 +30,12 @@ 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 diff --git a/bsp/buildroot/boot/gummiboot/Config.in b/bsp/buildroot/boot/gummiboot/Config.in index ad497936..11dbc4f6 100644 --- a/bsp/buildroot/boot/gummiboot/Config.in +++ b/bsp/buildroot/boot/gummiboot/Config.in @@ -4,7 +4,6 @@ config BR2_TARGET_GUMMIBOOT select BR2_PACKAGE_GNU_EFI select BR2_PACKAGE_UTIL_LINUX select BR2_PACKAGE_UTIL_LINUX_LIBBLKID - depends on BR2_USE_WCHAR # util-linux help gummiboot is a simple UEFI boot manager which executes configured EFI images. The default entry is selected by a @@ -22,6 +21,3 @@ config BR2_TARGET_GUMMIBOOT files will be located in /loader/ inside the EFI partition. http://freedesktop.org/wiki/Software/gummiboot/ - -comment "gummiboot needs a toolchain w/ wchar" - depends on !BR2_USE_WCHAR diff --git a/bsp/buildroot/boot/syslinux/0002-disable-pie.patch b/bsp/buildroot/boot/syslinux/0002-disable-pie.patch new file mode 100644 index 00000000..b31b622c --- /dev/null +++ b/bsp/buildroot/boot/syslinux/0002-disable-pie.patch @@ -0,0 +1,22 @@ +Description: Disable PIE to avoid FTBFS on amd64 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1579023 +Author: Graham Inggs +Last-Update: 2016-05-06 + +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 + +--- a/gpxe/src/Makefile ++++ b/gpxe/src/Makefile +@@ -4,7 +4,7 @@ + # + + CLEANUP := +-CFLAGS := ++CFLAGS := -fno-PIE + ASFLAGS := + LDFLAGS := + MAKEDEPS := Makefile diff --git a/bsp/buildroot/boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch b/bsp/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/bsp/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/bsp/buildroot/boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch b/bsp/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/bsp/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/bsp/buildroot/boot/uboot/Config.in b/bsp/buildroot/boot/uboot/Config.in index b024b662..4e629c0e 100644 --- a/bsp/buildroot/boot/uboot/Config.in +++ b/bsp/buildroot/boot/uboot/Config.in @@ -38,7 +38,7 @@ choice Select the specific U-Boot version you want to use config BR2_TARGET_UBOOT_LATEST_VERSION - bool "2016.07" + bool "2017.01" config BR2_TARGET_UBOOT_CUSTOM_VERSION bool "Custom version" @@ -86,7 +86,7 @@ endif config BR2_TARGET_UBOOT_VERSION string - default "2016.07" if BR2_TARGET_UBOOT_LATEST_VERSION + default "2017.01" 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 @@ -95,6 +95,7 @@ config BR2_TARGET_UBOOT_VERSION 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, @@ -137,9 +138,15 @@ config BR2_TARGET_UBOOT_NEEDS_DTC Select this option if your U-Boot board configuration requires the Device Tree compiler to be available. -choice - prompt "U-Boot binary format" - default BR2_TARGET_UBOOT_FORMAT_BIN +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. + +menu "U-Boot binary format" config BR2_TARGET_UBOOT_FORMAT_AIS bool "u-boot.ais" @@ -150,6 +157,7 @@ config BR2_TARGET_UBOOT_FORMAT_AIS config BR2_TARGET_UBOOT_FORMAT_BIN bool "u-boot.bin" + default y config BR2_TARGET_UBOOT_FORMAT_DTB_IMG bool "u-boot-dtb.img" @@ -252,19 +260,21 @@ config BR2_TARGET_UBOOT_FORMAT_CUSTOM 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 + you should select this option and specify the correct name(s) in BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME. -endchoice - config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME - string "U-Boot binary format: custom name" + string "U-Boot binary format: custom names" depends on BR2_TARGET_UBOOT_FORMAT_CUSTOM help - Specify the correct name of the output binary created by - U-Boot, if it is not one of the default names. For example: + 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 depends on BR2_TARGET_UBOOT_FORMAT_BIN depends on BR2_arm || BR2_armeb diff --git a/bsp/buildroot/boot/uboot/uboot.hash b/bsp/buildroot/boot/uboot/uboot.hash index cf27e90a..5473cfea 100644 --- a/bsp/buildroot/boot/uboot/uboot.hash +++ b/bsp/buildroot/boot/uboot/uboot.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 974fb7225c0af6a721307631f66b81e20dbda82a4d7cc32aba2a625727231253 u-boot-2016.07.tar.bz2 +sha256 6c425175f93a4bcf2ec9faf5658ef279633dbd7856a293d95bd1ff516528ecf2 u-boot-2017.01.tar.bz2 diff --git a/bsp/buildroot/boot/uboot/uboot.mk b/bsp/buildroot/boot/uboot/uboot.mk index 64d828f3..6b9d5445 100644 --- a/bsp/buildroot/boot/uboot/uboot.mk +++ b/bsp/buildroot/boot/uboot/uboot.mk @@ -36,48 +36,81 @@ BR_NO_CHECK_HASH_FOR += $(UBOOT_SOURCE) endif endif +ifeq ($(BR2_TARGET_UBOOT_FORMAT_BIN),y) +UBOOT_BINS += u-boot.bin +endif + ifeq ($(BR2_TARGET_UBOOT_FORMAT_ELF),y) -UBOOT_BIN = u-boot +UBOOT_BINS += u-boot # To make elf usable for debuging on ARC use special target ifeq ($(BR2_arc),y) -UBOOT_MAKE_TARGET = mdbtrick +UBOOT_MAKE_TARGET += mdbtrick endif -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y) -UBOOT_BIN = u-boot.kwb -UBOOT_MAKE_TARGET = $(UBOOT_BIN) -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y) -UBOOT_BIN = u-boot.ais -UBOOT_MAKE_TARGET = $(UBOOT_BIN) -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y) -UBOOT_BIN = u-boot.ldr -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y) -UBOOT_BIN = u-boot-nand.bin -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y) -UBOOT_BIN = u-boot-dtb.img -UBOOT_MAKE_TARGET = all $(UBOOT_BIN) -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y) -UBOOT_BIN = u-boot.img -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y) -UBOOT_BIN = u-boot.imx -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y) -UBOOT_BIN = u-boot.sb -UBOOT_MAKE_TARGET = $(UBOOT_BIN) +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_LDR),y) +UBOOT_BINS += u-boot.ldr +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_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 -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y) +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y) # BootStream (.sb) is generated by U-Boot, we convert it to SD format -UBOOT_BIN = u-boot.sd -UBOOT_MAKE_TARGET = u-boot.sb +UBOOT_BINS += u-boot.sd +UBOOT_MAKE_TARGET += u-boot.sb UBOOT_DEPENDENCIES += host-elftosb host-openssl -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y) -UBOOT_BIN = u-boot.nand -UBOOT_MAKE_TARGET = u-boot.sb +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 -else ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y) -UBOOT_BIN = $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME)) -else -UBOOT_BIN = u-boot.bin -UBOOT_BIN_IFT = $(UBOOT_BIN).ift +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 @@ -100,6 +133,10 @@ ifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC),y) UBOOT_DEPENDENCIES += host-dtc endif +ifeq ($(BR2_TARGET_UBOOT_NEEDS_OPENSSL),y) +UBOOT_DEPENDENCIES += host-openssl +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 @@ -144,6 +181,12 @@ endif # BR2_TARGET_UBOOT_USE_DEFCONFIG UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) +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 define UBOOT_BUILD_CMDS @@ -166,9 +209,11 @@ define UBOOT_BUILD_OMAP_IFT endef define UBOOT_INSTALL_IMAGES_CMDS - cp -dpf $(@D)/$(UBOOT_BIN) $(BINARIES_DIR)/ + $(foreach f,$(UBOOT_BINS), \ + cp -dpf $(@D)/$(f) $(BINARIES_DIR)/ + ) $(if $(BR2_TARGET_UBOOT_FORMAT_NAND), - cp -dpf $(@D)/$(UBOOT_MAKE_TARGET) $(BINARIES_DIR)) + 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)/ @@ -177,7 +222,8 @@ define UBOOT_INSTALL_IMAGES_CMDS $(if $(BR2_TARGET_UBOOT_ENVIMAGE), cat $(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE)) | \ $(HOST_DIR)/usr/bin/mkenvimage -s $(BR2_TARGET_UBOOT_ENVIMAGE_SIZE) \ - -p 0 $(if $(BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT),-r) \ + $(if $(BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT),-r) \ + $(if $(filter BIG,$(BR2_ENDIAN)),-b) \ -o $(BINARIES_DIR)/uboot-env.bin -) endef diff --git a/bsp/buildroot/boot/vexpress-firmware/Config.in b/bsp/buildroot/boot/vexpress-firmware/Config.in new file mode 100644 index 00000000..8479df3d --- /dev/null +++ b/bsp/buildroot/boot/vexpress-firmware/Config.in @@ -0,0 +1,6 @@ +config BR2_TARGET_VEXPRESS_FIRMWARE + bool "vexpress-firmware" + depends on BR2_aarch64 + help + Versatile Express firmware from ARM, with Linaro mods last + change. diff --git a/bsp/buildroot/boot/vexpress-firmware/vexpress-firmware.hash b/bsp/buildroot/boot/vexpress-firmware/vexpress-firmware.hash new file mode 100644 index 00000000..40f64c75 --- /dev/null +++ b/bsp/buildroot/boot/vexpress-firmware/vexpress-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 def599c86ab3606f7f67c0190e9b237fbc0cf934a951ffb1c5fb0c47d8a8f3d2 vexpress-firmware-901f81977c3b367a2e0bf3d6444be302822d97a3.tar.gz diff --git a/bsp/buildroot/boot/vexpress-firmware/vexpress-firmware.mk b/bsp/buildroot/boot/vexpress-firmware/vexpress-firmware.mk new file mode 100644 index 00000000..693a9cb8 --- /dev/null +++ b/bsp/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/bsp/buildroot/configs/acmesystems_aria_g25_128mb_defconfig b/bsp/buildroot/configs/acmesystems_aria_g25_128mb_defconfig index c4d2cd68..0ec210f3 100644 --- a/bsp/buildroot/configs/acmesystems_aria_g25_128mb_defconfig +++ b/bsp/buildroot/configs/acmesystems_aria_g25_128mb_defconfig @@ -1,20 +1,36 @@ # Architecture BR2_arm=y -# Linux headers same as kernel, a 4.1 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y -# Kernel +# 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.1.1" +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" -# Bootloader +# 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/tanzilli/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="3f957cec253abc80fd10c733e5e596f46e1aef56" +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/bsp/buildroot/configs/acmesystems_aria_g25_256mb_defconfig b/bsp/buildroot/configs/acmesystems_aria_g25_256mb_defconfig index ba191c65..a480287c 100644 --- a/bsp/buildroot/configs/acmesystems_aria_g25_256mb_defconfig +++ b/bsp/buildroot/configs/acmesystems_aria_g25_256mb_defconfig @@ -1,20 +1,36 @@ # Architecture BR2_arm=y -# Linux headers same as kernel, a 4.1 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y -# Kernel +# 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.1.1" +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" -# Bootloader +# 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/tanzilli/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="3f957cec253abc80fd10c733e5e596f46e1aef56" +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/bsp/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig b/bsp/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig index e5ddf130..a68ac57f 100644 --- a/bsp/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig +++ b/bsp/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig @@ -1,30 +1,36 @@ # Architecture BR2_arm=y -# Toolchain -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y -# Kernel +# 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.1.1" +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" -BR2_LINUX_KERNEL_XZ=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariettag25" -# Bootloader -BR2_TARGET_AT91BOOTSTRAP3=y -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/tanzilli/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="cedbde4b36695b715f469f4872f47e5cc8115000" -BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="arietta-128m" - -# Image -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/arietta-g25/post-image.sh" +# Root filesystem BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y -# BR2_TARGET_ROOTFS_TAR is not set -BR2_PACKAGE_HOST_GENIMAGE=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/bsp/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig b/bsp/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig index cf6f67b1..ce9ebacb 100644 --- a/bsp/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig +++ b/bsp/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig @@ -1,30 +1,36 @@ # Architecture BR2_arm=y -# Toolchain -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y -# Kernel +# 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.1.1" +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" -BR2_LINUX_KERNEL_XZ=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariettag25" -# Bootloader -BR2_TARGET_AT91BOOTSTRAP3=y -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/tanzilli/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="cedbde4b36695b715f469f4872f47e5cc8115000" -BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="arietta-256m" - -# Image -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/arietta-g25/post-image.sh" +# Root filesystem BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y -# BR2_TARGET_ROOTFS_TAR is not set -BR2_PACKAGE_HOST_GENIMAGE=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/bsp/buildroot/configs/arm_juno_defconfig b/bsp/buildroot/configs/arm_juno_defconfig index 75ed63cb..811524ff 100644 --- a/bsp/buildroot/configs/arm_juno_defconfig +++ b/bsp/buildroot/configs/arm_juno_defconfig @@ -3,10 +3,19 @@ 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_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="v4.6" +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.2" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="juno" +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/bsp/buildroot/configs/armadeus_apf28_defconfig b/bsp/buildroot/configs/armadeus_apf28_defconfig index 30329064..31fb5289 100644 --- a/bsp/buildroot/configs/armadeus_apf28_defconfig +++ b/bsp/buildroot/configs/armadeus_apf28_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 3.12 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_12=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y # System BR2_TARGET_GENERIC_HOSTNAME="apf28" @@ -13,9 +13,9 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.12.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.30" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/armadeus/apf28/linux-3.12.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/armadeus/apf28/linux-4.4.config" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000" BR2_LINUX_KERNEL_DTS_SUPPORT=y diff --git a/bsp/buildroot/configs/armadeus_apf51_defconfig b/bsp/buildroot/configs/armadeus_apf51_defconfig index f70593b0..e8346267 100644 --- a/bsp/buildroot/configs/armadeus_apf51_defconfig +++ b/bsp/buildroot/configs/armadeus_apf51_defconfig @@ -3,7 +3,7 @@ BR2_arm=y BR2_cortex_a8=y # Linux headers same as kernel, a 3.12 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_12=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y # System BR2_TARGET_GENERIC_HOSTNAME="apf51" @@ -13,9 +13,9 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc2" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.12.6" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.30" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/armadeus/apf51/linux-3.12.config" +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 diff --git a/bsp/buildroot/configs/armadeus_apf9328_defconfig b/bsp/buildroot/configs/armadeus_apf9328_defconfig index d83ed711..fbc98643 100644 --- a/bsp/buildroot/configs/armadeus_apf9328_defconfig +++ b/bsp/buildroot/configs/armadeus_apf9328_defconfig @@ -10,8 +10,8 @@ BR2_TOOLCHAIN_BUILDROOT_INET_RPC=y BR2_TOOLCHAIN_BUILDROOT_LOCALE=y BR2_TOOLCHAIN_BUILDROOT_CXX=y -# Linux headers same as kernel, a 3.17 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_17=y +# Linux headers same as kernel, a 3.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y # System BR2_TARGET_GENERIC_HOSTNAME="apf9328" @@ -24,7 +24,7 @@ BR2_TARGET_ROOTFS_JFFS2=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.17.2" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.18.29" BR2_LINUX_KERNEL_DEFCONFIG="imx_v4_v5" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x08008000" diff --git a/bsp/buildroot/configs/at91sam9260eknf_defconfig b/bsp/buildroot/configs/at91sam9260eknf_defconfig index 92bb0711..d91fcb05 100644 --- a/bsp/buildroot/configs/at91sam9260eknf_defconfig +++ b/bsp/buildroot/configs/at91sam9260eknf_defconfig @@ -2,26 +2,32 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 3.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_9=y +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y -# Packages -BR2_PACKAGE_HOST_SAM_BA=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_AT91BOOTSTRAP=y -BR2_TARGET_AT91BOOTSTRAP_BOARD="at91sam9260ek" -BR2_TARGET_AT91BOOTSTRAP_NANDFLASH=y -BR2_TARGET_BAREBOX=y -BR2_TARGET_BAREBOX_BOARD_DEFCONFIG="at91sam9260ek" +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.7" +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" -# Kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.9.1" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/atmel/at91sam9260ek/linux-3.9.config" +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/bsp/buildroot/configs/at91sam9g20dfc_defconfig b/bsp/buildroot/configs/at91sam9g20dfc_defconfig index 4ed5a9b0..15a8d879 100644 --- a/bsp/buildroot/configs/at91sam9g20dfc_defconfig +++ b/bsp/buildroot/configs/at91sam9g20dfc_defconfig @@ -2,28 +2,31 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 3.1 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_1=y - -# Host utilities -# -BR2_PACKAGE_HOST_SAM_BA=y - -# First stage bootloader -BR2_TARGET_AT91BOOTSTRAP=y -BR2_TARGET_AT91BOOTSTRAP_BOARD="at91sam9g20ek" -BR2_TARGET_AT91BOOTSTRAP_DATAFLASHCARD=y - -# Second stage bootloader -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="at91sam9g20ek_nandflash" +# 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="3.1.6" -BR2_LINUX_KERNEL_USE_DEFCONFIG=y -BR2_LINUX_KERNEL_DEFCONFIG="at91sam9g20ek" +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 + +# 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.7" +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/bsp/buildroot/configs/at91sam9g45m10ek_defconfig b/bsp/buildroot/configs/at91sam9g45m10ek_defconfig index 35618d5f..2bf71799 100644 --- a/bsp/buildroot/configs/at91sam9g45m10ek_defconfig +++ b/bsp/buildroot/configs/at91sam9g45m10ek_defconfig @@ -1,22 +1,34 @@ +# Architecture BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 3.18 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=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_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="03329ca4cf6b94acc5c65b59b2d1f90fdeee0887" +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.7" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9m10g45eknf_uboot" BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="at91sam9m10g45ek_nandflash" -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="677f3c2340b72131beebace8e96cac17b9569887" +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/bsp/buildroot/configs/at91sam9rlek_defconfig b/bsp/buildroot/configs/at91sam9rlek_defconfig index 66e4a888..bc1be164 100644 --- a/bsp/buildroot/configs/at91sam9rlek_defconfig +++ b/bsp/buildroot/configs/at91sam9rlek_defconfig @@ -1,22 +1,34 @@ +# Architecture BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 3.18 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=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_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="03329ca4cf6b94acc5c65b59b2d1f90fdeee0887" +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.7" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9rleknf_uboot" BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="at91sam9rlek_nandflash" -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="677f3c2340b72131beebace8e96cac17b9569887" +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/bsp/buildroot/configs/at91sam9x5ek_defconfig b/bsp/buildroot/configs/at91sam9x5ek_defconfig index 79031b67..69f9e75e 100644 --- a/bsp/buildroot/configs/at91sam9x5ek_defconfig +++ b/bsp/buildroot/configs/at91sam9x5ek_defconfig @@ -1,11 +1,11 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 3.18 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="03329ca4cf6b94acc5c65b59b2d1f90fdeee0887" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" @@ -14,10 +14,14 @@ 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.7" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot" BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="at91sam9x5ek_nandflash" +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="677f3c2340b72131beebace8e96cac17b9569887" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_nandflash" BR2_PACKAGE_HOST_SAM_BA=y diff --git a/bsp/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig b/bsp/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig index 7eb969f2..13086af6 100644 --- a/bsp/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig @@ -3,12 +3,12 @@ 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_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_ROOTFS_POST_IMAGE_SCRIPT="board/atmel/sama5d2_xplained_mmc/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -17,13 +17,13 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/bsp/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig b/bsp/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig index d7f47176..a2250910 100644 --- a/bsp/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig @@ -6,7 +6,7 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y # Toolchain -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y # Needed for some packages BR2_TOOLCHAIN_BUILDROOT_WCHAR=y # Needed for gdb @@ -24,7 +24,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="board/atmel/sama5d2_xplained_mmc/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -89,13 +89,13 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" # Host packages diff --git a/bsp/buildroot/configs/atmel_sama5d3_xplained_defconfig b/bsp/buildroot/configs/atmel_sama5d3_xplained_defconfig index 480f2fd9..307bbaae 100644 --- a/bsp/buildroot/configs/atmel_sama5d3_xplained_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d3_xplained_defconfig @@ -2,11 +2,11 @@ BR2_arm=y BR2_cortex_a5=y BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -17,12 +17,12 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" BR2_PACKAGE_HOST_SAM_BA=y diff --git a/bsp/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig b/bsp/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig index d51a141a..4905148b 100644 --- a/bsp/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig @@ -5,7 +5,7 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y # Toolchain -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y # Needed for some packages BR2_TOOLCHAIN_BUILDROOT_WCHAR=y # Needed for gdb @@ -21,7 +21,7 @@ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -88,13 +88,13 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" # Host packages diff --git a/bsp/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig b/bsp/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig index 14ca3f54..0a44dc71 100644 --- a/bsp/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig @@ -2,12 +2,12 @@ BR2_arm=y BR2_cortex_a5=y BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_ROOTFS_POST_IMAGE_SCRIPT="board/atmel/sama5d3_xplained_mmc/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -16,13 +16,13 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/bsp/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig b/bsp/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig index c45c2ce6..1fc84529 100644 --- a/bsp/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig @@ -5,7 +5,7 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y # Toolchain -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y # Needed for some packages BR2_TOOLCHAIN_BUILDROOT_WCHAR=y # Needed for gdb @@ -23,7 +23,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="board/atmel/sama5d3_xplained_mmc/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -88,13 +88,13 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" # Host packages diff --git a/bsp/buildroot/configs/atmel_sama5d3xek_defconfig b/bsp/buildroot/configs/atmel_sama5d3xek_defconfig index 086c18e0..c57076c9 100644 --- a/bsp/buildroot/configs/atmel_sama5d3xek_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d3xek_defconfig @@ -1,26 +1,40 @@ +# Architecture BR2_arm=y BR2_cortex_a5=y BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y -# Linux headers same as kernel, a 3.18 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y + +# Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="03329ca4cf6b94acc5c65b59b2d1f90fdeee0887" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="sama5d31ek sama5d31ek_pda4 sama5d31ek_pda7 sama5d31ek_revc sama5d31ek_revc_pda4 sama5d31ek_revc_pda7 sama5d33ek sama5d33ek_pda4 sama5d33ek_pda7 sama5d33ek_revc sama5d33ek_revc_pda4 sama5d33ek_revc_pda7 sama5d34ek sama5d34ek_pda4 sama5d34ek_pda7 sama5d34ek_revc sama5d34ek_revc_pda4 sama5d34ek_revc_pda7 sama5d35ek sama5d35ek_revc sama5d36ek sama5d36ek_pda4 sama5d36ek_pda7 sama5d36ek_revc sama5d36ek_revc_pda4 sama5d36ek_revc_pda7" +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.7" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3xeknf_uboot" BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="sama5d3xek_nandflash" +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="677f3c2340b72131beebace8e96cac17b9569887" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3xek_nandflash" BR2_TARGET_UBOOT_SPL=y + +# Host packages BR2_PACKAGE_HOST_SAM_BA=y diff --git a/bsp/buildroot/configs/atmel_sama5d4_xplained_defconfig b/bsp/buildroot/configs/atmel_sama5d4_xplained_defconfig index 65313f38..5646723d 100644 --- a/bsp/buildroot/configs/atmel_sama5d4_xplained_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d4_xplained_defconfig @@ -3,11 +3,11 @@ 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_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -21,12 +21,12 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" BR2_PACKAGE_HOST_SAM_BA=y diff --git a/bsp/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig b/bsp/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig index 7dadeca0..b3dc8159 100644 --- a/bsp/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig @@ -6,7 +6,7 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y # Toolchain -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y # Needed for some packages BR2_TOOLCHAIN_BUILDROOT_WCHAR=y # Needed for gdb @@ -22,7 +22,7 @@ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -92,13 +92,13 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" # Host packages diff --git a/bsp/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig b/bsp/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig index 7f93a826..03055cff 100644 --- a/bsp/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig @@ -3,12 +3,12 @@ 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_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_ROOTFS_POST_IMAGE_SCRIPT="board/atmel/sama5d4_xplained_mmc/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -17,13 +17,13 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/bsp/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig b/bsp/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig index 9e11efac..1d4cfcbe 100644 --- a/bsp/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig +++ b/bsp/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig @@ -6,7 +6,7 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y # Toolchain -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y # Needed for some packages BR2_TOOLCHAIN_BUILDROOT_WCHAR=y # Needed for gdb @@ -24,7 +24,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="board/atmel/sama5d4_xplained_mmc/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.3" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" 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" @@ -89,13 +89,13 @@ 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.5" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" 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.3" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" # Host packages diff --git a/bsp/buildroot/configs/atmel_sama5d4ek_defconfig b/bsp/buildroot/configs/atmel_sama5d4ek_defconfig deleted file mode 100644 index 9d74eeed..00000000 --- a/bsp/buildroot/configs/atmel_sama5d4ek_defconfig +++ /dev/null @@ -1,30 +0,0 @@ -BR2_arm=y -BR2_cortex_a5=y -BR2_ARM_ENABLE_NEON=y -BR2_ARM_ENABLE_VFP=y -BR2_ARM_INSTRUCTIONS_THUMB2=y -# Linux headers same as kernel, a 3.18 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="03329ca4cf6b94acc5c65b59b2d1f90fdeee0887" -BR2_LINUX_KERNEL_DEFCONFIG="sama5" -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4ek" -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_DEFCONFIG="sama5d4eknf_uboot_secure" -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="sama5d4ek_nandflash" -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="677f3c2340b72131beebace8e96cac17b9569887" -BR2_TARGET_UBOOT_SPL=y -BR2_PACKAGE_HOST_SAM_BA=y diff --git a/bsp/buildroot/configs/beagleboardx15_defconfig b/bsp/buildroot/configs/beagleboardx15_defconfig new file mode 100644 index 00000000..25ee21b8 --- /dev/null +++ b/bsp/buildroot/configs/beagleboardx15_defconfig @@ -0,0 +1,27 @@ +BR2_arm=y +BR2_cortex_a15=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/bsp/buildroot/configs/beaglebone_defconfig b/bsp/buildroot/configs/beaglebone_defconfig index 6c49abf8..6fe3a5ec 100644 --- a/bsp/buildroot/configs/beaglebone_defconfig +++ b/bsp/buildroot/configs/beaglebone_defconfig @@ -1,44 +1,30 @@ -# architecture BR2_arm=y BR2_cortex_a8=y -BR2_ARM_EABIHF=y - -# system -BR2_TARGET_GENERIC_HOSTNAME="beaglebone" +BR2_GLOBAL_PATCH_DIR="board/beaglebone/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" -# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set BR2_ROOTFS_POST_IMAGE_SCRIPT="board/beaglebone/post-image.sh" - -# filesystem -BR2_PACKAGE_AM33X_CM3=y +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="adde2ca9f86797071f6e7b2b9e779fa5e4a8f3cd" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-evm am335x-bone am335x-boneblack am335x-evmsk" BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y -# BR2_TARGET_ROOTFS_TAR is not set - -# Linux headers same as kernel, a 3.12 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_12=y - -# bootloader BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="am335x_evm" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.05" +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" - -# host packages BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y - -# kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="7f280334068b7c875ade51f8f3921ab311f0c824" -BR2_LINUX_KERNEL_PATCH="board/beaglebone/patches/linux" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/beaglebone/linux-3.12.config" -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-bone am335x-boneblack" diff --git a/bsp/buildroot/configs/beaglebone_qt5_defconfig b/bsp/buildroot/configs/beaglebone_qt5_defconfig new file mode 100644 index 00000000..a9ab5a24 --- /dev/null +++ b/bsp/buildroot/configs/beaglebone_qt5_defconfig @@ -0,0 +1,43 @@ +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_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_LICENSE_APPROVED=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_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/bsp/buildroot/configs/calao_qil_a9260_defconfig b/bsp/buildroot/configs/calao_qil_a9260_defconfig deleted file mode 100644 index 8b76a87b..00000000 --- a/bsp/buildroot/configs/calao_qil_a9260_defconfig +++ /dev/null @@ -1,20 +0,0 @@ -BR2_arm=y -BR2_arm926t=y -BR2_GLOBAL_PATCH_DIR="board/calao/qil-a9260/patches" -BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" -# Linux headers same as kernel, a 3.4 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_4=y -BR2_PACKAGE_HOST_SAM_BA=y -BR2_TARGET_ROOTFS_UBIFS=y -BR2_TARGET_AT91BOOTSTRAP=y -BR2_TARGET_AT91BOOTSTRAP_BOARD="qil_a9260" -BR2_TARGET_AT91BOOTSTRAP_NANDFLASH=y -BR2_TARGET_BAREBOX=y -BR2_TARGET_BAREBOX_CUSTOM_VERSION=y -BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2012.08.0" -BR2_TARGET_BAREBOX_BOARD_DEFCONFIG="qil_a9260" -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.4.7" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/calao/qil-a9260/linux-3.4.7.config" diff --git a/bsp/buildroot/configs/calao_tny_a9g20_lpw_defconfig b/bsp/buildroot/configs/calao_tny_a9g20_lpw_defconfig deleted file mode 100644 index 5c66d061..00000000 --- a/bsp/buildroot/configs/calao_tny_a9g20_lpw_defconfig +++ /dev/null @@ -1,29 +0,0 @@ -# architecture -BR2_arm=y -BR2_arm926t=y - -# system -BR2_PACKAGE_HOST_SAM_BA=y - -# filesystem -BR2_TARGET_ROOTFS_UBIFS=y - -# Linux headers same as kernel, a 3.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_9=y - -# bootloaders -BR2_TARGET_AT91BOOTSTRAP=y -BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR="board/calao/tny-a9g20-lpw" -BR2_TARGET_AT91BOOTSTRAP_BOARD="tny_a9g20_lpw" -BR2_TARGET_AT91BOOTSTRAP_NANDFLASH=y -BR2_TARGET_BAREBOX=y -BR2_TARGET_BAREBOX_BOARD_DEFCONFIG="tny_a9g20" - -# linux -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.9.4" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/calao/tny-a9g20-lpw/linux-3.9.config" -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="tny_a9g20" diff --git a/bsp/buildroot/configs/calao_usb_a9260_defconfig b/bsp/buildroot/configs/calao_usb_a9260_defconfig deleted file mode 100644 index d8bfd0da..00000000 --- a/bsp/buildroot/configs/calao_usb_a9260_defconfig +++ /dev/null @@ -1,18 +0,0 @@ -BR2_arm=y -BR2_arm926t=y -# Linux headers same as kernel, a 3.10 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10=y -BR2_PACKAGE_MTD=y -BR2_PACKAGE_HOST_SAM_BA=y -BR2_TARGET_ROOTFS_UBIFS=y -BR2_TARGET_AT91BOOTSTRAP=y -BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR="board/calao/usb-a9260" -BR2_TARGET_AT91BOOTSTRAP_BOARD="usb_a9260" -BR2_TARGET_AT91BOOTSTRAP_NANDFLASH=y -BR2_TARGET_BAREBOX=y -BR2_TARGET_BAREBOX_BOARD_DEFCONFIG="usb_a9260" -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.10.10" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/calao/usb-a9260/linux-3.7.4.config" diff --git a/bsp/buildroot/configs/calao_usb_a9263_defconfig b/bsp/buildroot/configs/calao_usb_a9263_defconfig deleted file mode 100644 index ed6d3cbd..00000000 --- a/bsp/buildroot/configs/calao_usb_a9263_defconfig +++ /dev/null @@ -1,17 +0,0 @@ -BR2_arm=y -BR2_arm926t=y -# Linux headers same as kernel, a 3.10 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10=y -BR2_PACKAGE_HOST_SAM_BA=y -BR2_TARGET_ROOTFS_UBIFS=y -BR2_TARGET_AT91BOOTSTRAP=y -BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR="board/calao/usb-a9263" -BR2_TARGET_AT91BOOTSTRAP_BOARD="usb_a9263" -BR2_TARGET_AT91BOOTSTRAP_NANDFLASH=y -BR2_TARGET_BAREBOX=y -BR2_TARGET_BAREBOX_BOARD_DEFCONFIG="usb_a9263" -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.10.10" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/calao/usb-a9263/linux-3.4.4.config" diff --git a/bsp/buildroot/configs/calao_usb_a9g20_lpw_defconfig b/bsp/buildroot/configs/calao_usb_a9g20_lpw_defconfig deleted file mode 100644 index 8a56d060..00000000 --- a/bsp/buildroot/configs/calao_usb_a9g20_lpw_defconfig +++ /dev/null @@ -1,17 +0,0 @@ -BR2_arm=y -BR2_arm926t=y -# Linux headers same as kernel, a 3.10 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10=y -BR2_GLOBAL_PATCH_DIR="board/calao/usb-a9g20-lpw/patches" -BR2_PACKAGE_HOST_SAM_BA=y -BR2_TARGET_ROOTFS_UBIFS=y -BR2_TARGET_AT91BOOTSTRAP=y -BR2_TARGET_AT91BOOTSTRAP_BOARD="usb_a9g20_lpw" -BR2_TARGET_AT91BOOTSTRAP_NANDFLASH=y -BR2_TARGET_BAREBOX=y -BR2_TARGET_BAREBOX_BOARD_DEFCONFIG="usb_a9g20" -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.10.10" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/calao/usb-a9g20-lpw/linux-3.4.4.config" diff --git a/bsp/buildroot/configs/ci20_defconfig b/bsp/buildroot/configs/ci20_defconfig index 0455170d..ecf3007a 100644 --- a/bsp/buildroot/configs/ci20_defconfig +++ b/bsp/buildroot/configs/ci20_defconfig @@ -1,6 +1,6 @@ # architecture BR2_mipsel=y -BR2_mips_32r2=y +BR2_mips_xburst=y # BR2_MIPS_SOFT_FLOAT is not set # Linux headers same as kernel, a 3.18 series @@ -13,7 +13,7 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyS4" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/MIPS/CI20_linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="93b4df0786f07643eb61daee8934a3f3a05fd280" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="fbf929bc733b82b15f6996d4262a45870f19d214" BR2_LINUX_KERNEL_DEFCONFIG="ci20" # u-boot diff --git a/bsp/buildroot/configs/cubieboard_defconfig b/bsp/buildroot/configs/cubieboard_defconfig deleted file mode 100644 index 498999b6..00000000 --- a/bsp/buildroot/configs/cubieboard_defconfig +++ /dev/null @@ -1,38 +0,0 @@ -# Architecture -BR2_arm=y -BR2_cortex_a8=y - -# System configuration -BR2_TARGET_GENERIC_HOSTNAME="Cubieboard" -BR2_TARGET_GENERIC_ISSUE="Welcome to use Cubieboard!" -BR2_TARGET_GENERIC_GETTY=y -BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/cubietech/cubieboard/post-build.sh" - -# Additional tools -BR2_PACKAGE_HOST_SUNXI_TOOLS=y -BR2_PACKAGE_HOST_UBOOT_TOOLS=y -BR2_PACKAGE_SUNXI_TOOLS=y -BR2_PACKAGE_SUNXI_BOARDS=y -BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE="a10/cubieboard.fex" - -# Linux headers same as kernel, a 3.4 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_4=y - -# Kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux-sunxi/linux-sunxi.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="9a1cd034181af628d4145202289e1993c1687db6" -BR2_LINUX_KERNEL_DEFCONFIG="sun4i" - -# Bootloaders -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="cubieboard" -BR2_TARGET_UBOOT_CUSTOM_GIT=y -BR2_TARGET_UBOOT_VERSION="sunxi" -BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux-sunxi/u-boot-sunxi.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="1a8ac55429f7f8cc9f100c1cf2dc0195cf81e76f" -BR2_TARGET_UBOOT_FORMAT_BIN=y -BR2_TARGET_UBOOT_SPL=y -BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" diff --git a/bsp/buildroot/configs/freescale_imx28evk_defconfig b/bsp/buildroot/configs/freescale_imx28evk_defconfig index 9a430f74..b2242e70 100644 --- a/bsp/buildroot/configs/freescale_imx28evk_defconfig +++ b/bsp/buildroot/configs/freescale_imx28evk_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 3.19 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_19=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" @@ -11,7 +11,7 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.19.2" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.8" BR2_LINUX_KERNEL_DEFCONFIG="mxs" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-evk" @@ -20,5 +20,15 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-evk" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="mx28evk" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2015.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" 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/bsp/buildroot/configs/freescale_imx31_3stack_defconfig b/bsp/buildroot/configs/freescale_imx31_3stack_defconfig index bf1afad1..0476fc1b 100644 --- a/bsp/buildroot/configs/freescale_imx31_3stack_defconfig +++ b/bsp/buildroot/configs/freescale_imx31_3stack_defconfig @@ -3,18 +3,18 @@ BR2_arm=y BR2_arm1136jf_s=y BR2_ARM_EABIHF=y -# Linux headers same as kernel, a 3.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_15=y +# Linux headers same as kernel, a 4.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y # system BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" # kernel BR2_LINUX_KERNEL=y -# Note: sadly the Linux kernel will not boot on the i.MX31 PDK, starting with -# v3.16 and at least up to v4.0-rc4; this is why we use v3.15.y here. -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.15.10" +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/freescale/imx31_3stack/linux.fragment" BR2_TARGET_ROOTFS_CPIO_GZIP=y BR2_TARGET_ROOTFS_INITRAMFS=y diff --git a/bsp/buildroot/configs/freescale_imx6dlsabreauto_defconfig b/bsp/buildroot/configs/freescale_imx6dlsabreauto_defconfig index a58ab5d0..c946988f 100644 --- a/bsp/buildroot/configs/freescale_imx6dlsabreauto_defconfig +++ b/bsp/buildroot/configs/freescale_imx6dlsabreauto_defconfig @@ -1,6 +1,9 @@ # 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" @@ -14,16 +17,21 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_LINUX_KERNEL_DEFCONFIG="imx_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-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 @@ -31,4 +39,4 @@ BR2_TARGET_UBOOT_BOARDNAME="mx6dlsabreauto" BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.freescale.com/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" diff --git a/bsp/buildroot/configs/freescale_imx6dlsabresd_defconfig b/bsp/buildroot/configs/freescale_imx6dlsabresd_defconfig index ecb5f8b5..18cef00d 100644 --- a/bsp/buildroot/configs/freescale_imx6dlsabresd_defconfig +++ b/bsp/buildroot/configs/freescale_imx6dlsabresd_defconfig @@ -1,6 +1,9 @@ # 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" @@ -14,21 +17,25 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_LINUX_KERNEL_DEFCONFIG="imx_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-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="git://git.freescale.com/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" diff --git a/bsp/buildroot/configs/freescale_imx6qsabreauto_defconfig b/bsp/buildroot/configs/freescale_imx6qsabreauto_defconfig index 6ed33ee7..9e8e0076 100644 --- a/bsp/buildroot/configs/freescale_imx6qsabreauto_defconfig +++ b/bsp/buildroot/configs/freescale_imx6qsabreauto_defconfig @@ -1,6 +1,9 @@ # 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" @@ -14,16 +17,21 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_LINUX_KERNEL_DEFCONFIG="imx_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-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 @@ -31,4 +39,4 @@ BR2_TARGET_UBOOT_BOARDNAME="mx6qsabreauto" BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.freescale.com/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" diff --git a/bsp/buildroot/configs/freescale_imx6qsabresd_defconfig b/bsp/buildroot/configs/freescale_imx6qsabresd_defconfig index bd01f05e..824e1288 100644 --- a/bsp/buildroot/configs/freescale_imx6qsabresd_defconfig +++ b/bsp/buildroot/configs/freescale_imx6qsabresd_defconfig @@ -1,6 +1,9 @@ # 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" @@ -14,16 +17,21 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_LINUX_KERNEL_DEFCONFIG="imx_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-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 @@ -31,4 +39,4 @@ BR2_TARGET_UBOOT_BOARDNAME="mx6qsabresd" BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.freescale.com/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" diff --git a/bsp/buildroot/configs/freescale_imx6sololiteevk_defconfig b/bsp/buildroot/configs/freescale_imx6sololiteevk_defconfig index 18043e8f..0e81b2bd 100644 --- a/bsp/buildroot/configs/freescale_imx6sololiteevk_defconfig +++ b/bsp/buildroot/configs/freescale_imx6sololiteevk_defconfig @@ -1,6 +1,9 @@ # 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.1 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y @@ -11,21 +14,25 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" -BR2_LINUX_KERNEL_UIMAGE=y -BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sl-evk" # 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="mx6slevk" BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.freescale.com/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" diff --git a/bsp/buildroot/configs/freescale_imx6sxsabresd_defconfig b/bsp/buildroot/configs/freescale_imx6sxsabresd_defconfig index 2519f493..4a40c263 100644 --- a/bsp/buildroot/configs/freescale_imx6sxsabresd_defconfig +++ b/bsp/buildroot/configs/freescale_imx6sxsabresd_defconfig @@ -1,6 +1,9 @@ # 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" @@ -14,19 +17,25 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.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="git://git.freescale.com/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_TARGET_UBOOT_FORMAT_IMX=y diff --git a/bsp/buildroot/configs/freescale_imx6ulevk_defconfig b/bsp/buildroot/configs/freescale_imx6ulevk_defconfig index 5a18c1d4..3c5a9099 100644 --- a/bsp/buildroot/configs/freescale_imx6ulevk_defconfig +++ b/bsp/buildroot/configs/freescale_imx6ulevk_defconfig @@ -11,8 +11,8 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.1_patch" +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-14x14-evk" @@ -22,7 +22,7 @@ BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="mx6ul_14x14_evk" BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.freescale.com/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.1.0_ga" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_TARGET_UBOOT_FORMAT_IMX=y # required tools to create the microSD image @@ -31,6 +31,6 @@ BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y # filesystem / image -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/imx6ulevk/post-image.sh" +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/bsp/buildroot/configs/freescale_imx7dsabresd_defconfig b/bsp/buildroot/configs/freescale_imx7dsabresd_defconfig index 67680411..97d3cde1 100644 --- a/bsp/buildroot/configs/freescale_imx7dsabresd_defconfig +++ b/bsp/buildroot/configs/freescale_imx7dsabresd_defconfig @@ -11,8 +11,8 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-2.6-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.0.0_ga" +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.freescale.com/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-sdb" @@ -26,11 +26,11 @@ BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="mx7dsabresd" BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.freescale.com/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_1.0.0_ga" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.1.15_2.0.0_ga" BR2_TARGET_UBOOT_FORMAT_IMX=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/imx7dsdb/post-image.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" diff --git a/bsp/buildroot/configs/freescale_mpc8315erdb_defconfig b/bsp/buildroot/configs/freescale_mpc8315erdb_defconfig index 628aaade..de7e5613 100644 --- a/bsp/buildroot/configs/freescale_mpc8315erdb_defconfig +++ b/bsp/buildroot/configs/freescale_mpc8315erdb_defconfig @@ -26,12 +26,3 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="mpc8315erdb" # Serial port config BR2_TARGET_GENERIC_GETTY=y BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" - -# Bootloader -# Lock down binutils to <2.25 to avoid U-Boot build failure -BR2_BINUTILS_VERSION_2_24_X=y -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="MPC8315ERDB_NAND" -BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2014.04" -BR2_TARGET_UBOOT_FORMAT_NAND_BIN=y diff --git a/bsp/buildroot/configs/freescale_p1010rdb_pa_defconfig b/bsp/buildroot/configs/freescale_p1010rdb_pa_defconfig index 7f482485..3497275c 100644 --- a/bsp/buildroot/configs/freescale_p1010rdb_pa_defconfig +++ b/bsp/buildroot/configs/freescale_p1010rdb_pa_defconfig @@ -25,11 +25,3 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="p1010rdb-pa" # Serial port config BR2_TARGET_GENERIC_GETTY=y BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" - -# Bootloader -# Lock down binutils to <2.25 to avoid U-Boot build failure -BR2_BINUTILS_VERSION_2_24_X=y -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="P1010RDB-PA_NOR" -BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2014.01" diff --git a/bsp/buildroot/configs/freescale_p2020ds_defconfig b/bsp/buildroot/configs/freescale_p2020ds_defconfig deleted file mode 100644 index 6661acbc..00000000 --- a/bsp/buildroot/configs/freescale_p2020ds_defconfig +++ /dev/null @@ -1,24 +0,0 @@ -# Architecture -BR2_powerpc=y -BR2_powerpc_8548=y - -# Filesystem -# BR2_TARGET_ROOTFS_TAR is not set -BR2_TARGET_ROOTFS_JFFS2=y - -# Linux headers same as kernel, a 3.12 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_12=y - -# Kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="http://git.freescale.com/git/cgit.cgi/ppc/sdk/linux.git/snapshot/fsl-sdk-v1.6.tar.bz2" -BR2_LINUX_KERNEL_PATCH="board/freescale/p2020ds/linux-fix-c6187597-breakage.patch" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/freescale/p2020ds/linux-3.12.config" -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="p2020ds" - -# Serial port config -BR2_TARGET_GENERIC_GETTY=y -BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/bsp/buildroot/configs/galileo_defconfig b/bsp/buildroot/configs/galileo_defconfig index 9334266b..f0c308a1 100644 --- a/bsp/buildroot/configs/galileo_defconfig +++ b/bsp/buildroot/configs/galileo_defconfig @@ -1,6 +1,6 @@ BR2_x86_x1000=y -# Linux headers same as kernel, a 3.8 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_8=y +# Linux headers same as kernel, a 3.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y # Binutils 2.25 is required as this enables stripping the LOCK prefix BR2_BINUTILS_VERSION_2_25_X=y BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y @@ -12,9 +12,9 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="board/intel/galileo/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/mdr78/Linux-x1000.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="d1a51d55dc67022be6c2d15163ce6dd28540042f" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="0feded4f96ddca9816c6c1b8a4780cb4065747b9" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/intel/galileo/linux-3.8.config" +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 diff --git a/bsp/buildroot/configs/grinn_chiliboard_defconfig b/bsp/buildroot/configs/grinn_chiliboard_defconfig new file mode 100644 index 00000000..cfd22b82 --- /dev/null +++ b/bsp/buildroot/configs/grinn_chiliboard_defconfig @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" +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="4.9.6" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-chiliboard" +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="http://git.denx.de/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="aac477eca88dd81b18b48573ababee5112d571f3" +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/bsp/buildroot/configs/grinn_liteboard_defconfig b/bsp/buildroot/configs/grinn_liteboard_defconfig new file mode 100644 index 00000000..11c240f4 --- /dev/null +++ b/bsp/buildroot/configs/grinn_liteboard_defconfig @@ -0,0 +1,26 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_GLOBAL_PATCH_DIR="board/grinn/liteboard/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +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="4.9.2" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-liteboard" +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="2017.01" +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/bsp/buildroot/configs/imx23evk_defconfig b/bsp/buildroot/configs/imx23evk_defconfig new file mode 100644 index 00000000..fe074403 --- /dev/null +++ b/bsp/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="2016.09.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/bsp/buildroot/configs/imx6q-sabresd_defconfig b/bsp/buildroot/configs/imx6q-sabresd_defconfig new file mode 100644 index 00000000..cc37ecf2 --- /dev/null +++ b/bsp/buildroot/configs/imx6q-sabresd_defconfig @@ -0,0 +1,36 @@ +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_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="mx6qsabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.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.9.7" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabresd" diff --git a/bsp/buildroot/configs/imx6ulpico_defconfig b/bsp/buildroot/configs/imx6ulpico_defconfig index 8406226f..96ac038d 100644 --- a/bsp/buildroot/configs/imx6ulpico_defconfig +++ b/bsp/buildroot/configs/imx6ulpico_defconfig @@ -1,9 +1,10 @@ # architecture BR2_arm=y BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # system BR2_TARGET_GENERIC_GETTY_PORT="ttymxc5" @@ -11,13 +12,10 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttymxc5" # rootfs overlay BR2_ROOTFS_OVERLAY="board/technexion/imx6ulpico/rootfs_overlay" -# patches -BR2_GLOBAL_PATCH_DIR="board/technexion/imx6ulpico/patches" - # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/technexion/imx6ulpico/linux.fragment" BR2_LINUX_KERNEL_DTS_SUPPORT=y @@ -27,6 +25,9 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-pico-hobbit" 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 @@ -36,7 +37,7 @@ BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="pico-imx6ul" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.07" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" BR2_TARGET_UBOOT_FORMAT_IMX=y # required tools to create the eMMC image @@ -45,6 +46,6 @@ BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y # filesystem / image -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/technexion/imx6ulpico/post-image.sh" +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/bsp/buildroot/configs/kb9202_defconfig b/bsp/buildroot/configs/kb9202_defconfig deleted file mode 100644 index 0aea0eba..00000000 --- a/bsp/buildroot/configs/kb9202_defconfig +++ /dev/null @@ -1,17 +0,0 @@ -# Architecture -BR2_arm=y -BR2_arm920t=y - -# Filesystem -BR2_TARGET_ROOTFS_TAR=y - -# Linux headers same as kernel, a 2.6 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_REALLY_OLD=y - -# Kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.38.8" -BR2_LINUX_KERNEL_PATCH="http://maxim.org.za/AT91RM9200/2.6/2.6.38-at91.patch.gz" -BR2_LINUX_KERNEL_USE_DEFCONFIG=y -BR2_LINUX_KERNEL_DEFCONFIG="kb9202" diff --git a/bsp/buildroot/configs/lego_ev3_defconfig b/bsp/buildroot/configs/lego_ev3_defconfig index d49fa060..543a2274 100644 --- a/bsp/buildroot/configs/lego_ev3_defconfig +++ b/bsp/buildroot/configs/lego_ev3_defconfig @@ -2,25 +2,38 @@ BR2_arm=y BR2_arm926t=y -# toolchain -# Use gcc 4.7, as gcc 4.8 breaks the boot. -BR2_GCC_VERSION_4_7_X=y - # system BR2_TARGET_GENERIC_GETTY=y BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" - -# Linux headers same as kernel, a 3.3 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_3=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lego/ev3/post-image.sh" +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/mindboards/ev3dev-kernel.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="v3.3.0-2-ev3dev_0" +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/ev3dev/ev3dev-kernel.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="v4.4.19-15-ev3dev-ev3_1" BR2_LINUX_KERNEL_DEFCONFIG="ev3dev" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/lego/ev3/linux.fragment" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_EXT_EV3DEV_LINUX_DRIVERS=y # filesystem BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_3=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="2016.09.01" +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/bsp/buildroot/configs/linksprite_pcduino_defconfig b/bsp/buildroot/configs/linksprite_pcduino_defconfig index 45de3c1b..fb82714e 100644 --- a/bsp/buildroot/configs/linksprite_pcduino_defconfig +++ b/bsp/buildroot/configs/linksprite_pcduino_defconfig @@ -17,13 +17,13 @@ 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.6 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9" BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun4i-a10-pcduino" @@ -37,7 +37,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.05" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" BR2_TARGET_UBOOT_USE_DEFCONFIG=y BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Linksprite_pcDuino" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/bsp/buildroot/configs/mini2440_defconfig b/bsp/buildroot/configs/mini2440_defconfig deleted file mode 100644 index 2891d10d..00000000 --- a/bsp/buildroot/configs/mini2440_defconfig +++ /dev/null @@ -1,34 +0,0 @@ -# Architecture -BR2_arm=y -BR2_arm920t=y - -# Serial port -BR2_TARGET_GENERIC_GETTY=y -BR2_TARGET_GENERIC_GETTY_PORT="ttySAC0" - -# Filesystem -BR2_TARGET_ROOTFS_JFFS2=y -BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K=y -BR2_TARGET_ROOTFS_JFFS2_PAGESIZE=0x800 -BR2_TARGET_ROOTFS_JFFS2_EBSIZE=0x20000 -BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y -BR2_TARGET_ROOTFS_JFFS2_LE=y -BR2_TARGET_ROOTFS_TAR=y - -# Linux headers same as kernel, a 3.0 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0=y - -# Bootloader -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="mini2440" -BR2_TARGET_UBOOT_CUSTOM_TARBALL=y -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="http://repo.or.cz/w/u-boot-openmoko/mini2440.git/snapshot/dev-mini2440-stable.tar.gz" - -# -# Kernel -# -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.0.4" -BR2_LINUX_KERNEL_DEFCONFIG="mini2440" -BR2_LINUX_KERNEL_UIMAGE=y diff --git a/bsp/buildroot/configs/minnowboard_max-graphical_defconfig b/bsp/buildroot/configs/minnowboard_max-graphical_defconfig index de803f02..1b95d8e5 100644 --- a/bsp/buildroot/configs/minnowboard_max-graphical_defconfig +++ b/bsp/buildroot/configs/minnowboard_max-graphical_defconfig @@ -3,7 +3,7 @@ BR2_x86_64=y BR2_x86_atom=y # Toolchain -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_TOOLCHAIN_BUILDROOT_CXX=y @@ -22,9 +22,9 @@ BR2_PACKAGE_HOST_MTOOLS=y # Linux BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6.1" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.1" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/minnowboard/linux-4.6.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/minnowboard/linux-4.8.config" # Bootloader BR2_TARGET_GRUB2=y diff --git a/bsp/buildroot/configs/minnowboard_max_defconfig b/bsp/buildroot/configs/minnowboard_max_defconfig index 0adb382f..63190eaa 100644 --- a/bsp/buildroot/configs/minnowboard_max_defconfig +++ b/bsp/buildroot/configs/minnowboard_max_defconfig @@ -8,8 +8,8 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="board/minnowboard/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/minnowboard/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="minnowboard-max" -# Linux headers same as kernel, a 4.6 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y @@ -21,9 +21,9 @@ 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.6.1" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.1" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/minnowboard/linux-4.6.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/minnowboard/linux-4.8.config" # Bootloader BR2_TARGET_GRUB2=y diff --git a/bsp/buildroot/configs/mx25pdk_defconfig b/bsp/buildroot/configs/mx25pdk_defconfig index d682f0fa..c97ba766 100644 --- a/bsp/buildroot/configs/mx25pdk_defconfig +++ b/bsp/buildroot/configs/mx25pdk_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 4.6 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +# 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" @@ -14,7 +14,7 @@ BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y # Filesystem -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/imx25pdk/post-image.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y @@ -22,13 +22,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="mx25pdk" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.05" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.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.6.1" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.9" BR2_LINUX_KERNEL_DEFCONFIG="imx_v4_v5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx25-pdk" diff --git a/bsp/buildroot/configs/mx51evk_defconfig b/bsp/buildroot/configs/mx51evk_defconfig index bc72e06c..db82a36e 100644 --- a/bsp/buildroot/configs/mx51evk_defconfig +++ b/bsp/buildroot/configs/mx51evk_defconfig @@ -14,7 +14,7 @@ BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y # Filesystem -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/imx51evk/post-image.sh" +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/bsp/buildroot/configs/mx53loco_defconfig b/bsp/buildroot/configs/mx53loco_defconfig index 286b719e..a79cacd1 100644 --- a/bsp/buildroot/configs/mx53loco_defconfig +++ b/bsp/buildroot/configs/mx53loco_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_cortex_a8=y -# Linux headers same as kernel, a 4.6 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +# 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" @@ -14,7 +14,7 @@ BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y # Filesystem -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/imx53loco/post-image.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y @@ -22,13 +22,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="mx53loco" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.07" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" BR2_TARGET_UBOOT_FORMAT_IMX=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6.2" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx53-qsb imx53-qsrb" diff --git a/bsp/buildroot/configs/mx6cubox_defconfig b/bsp/buildroot/configs/mx6cubox_defconfig new file mode 100644 index 00000000..9ce496d9 --- /dev/null +++ b/bsp/buildroot/configs/mx6cubox_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_VFPV3=y +# Linux headers same as kernel, a 4.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=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="2016.09.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.7.3" +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 +# 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/bsp/buildroot/configs/mx6sx_udoo_neo_defconfig b/bsp/buildroot/configs/mx6sx_udoo_neo_defconfig new file mode 100644 index 00000000..a465eb97 --- /dev/null +++ b/bsp/buildroot/configs/mx6sx_udoo_neo_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_VFPV3=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/udoo/neo/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/udoo/neo/post-image.sh" +BR2_GLOBAL_PATCH_DIR="board/udoo/neo/patches" +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.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.9" +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/bsp/buildroot/configs/mx6udoo_defconfig b/bsp/buildroot/configs/mx6udoo_defconfig new file mode 100644 index 00000000..bf2a5966 --- /dev/null +++ b/bsp/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.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/udoo/mx6qdl/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="2016.09.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.8.11" +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/bsp/buildroot/configs/nanopi_neo_defconfig b/bsp/buildroot/configs/nanopi_neo_defconfig new file mode 100644 index 00000000..ba4534a1 --- /dev/null +++ b/bsp/buildroot/configs/nanopi_neo_defconfig @@ -0,0 +1,41 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Cannot use same headers as the kernel, because kernel is 4.9 +# and we only know 4.8 at best so far +BR2_KERNEL_HEADERS_4_8=y + +BR2_TARGET_GENERIC_HOSTNAME="nanopi-neo" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the NanoPi NEO" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/nanopi-neo/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/nanopi-neo/post-image.sh" + +# 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.9-rc3" +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="2016.11-rc3" +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_BLOCKS=32768 +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/bsp/buildroot/configs/nitrogen6sx_defconfig b/bsp/buildroot/configs/nitrogen6sx_defconfig index bd92f55e..6bb9953a 100644 --- a/bsp/buildroot/configs/nitrogen6sx_defconfig +++ b/bsp/buildroot/configs/nitrogen6sx_defconfig @@ -1,6 +1,9 @@ # 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 @@ -23,13 +26,13 @@ BR2_TARGET_UBOOT_BOARDNAME="nitrogen6sx" BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Last version of branch boundary-v2016.03 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/12f31130.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/9cbdb79a.tar.gz" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Last version of branch boundary-imx_4.1.15_1.0.0_ga -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/be36042a.tar.gz" +# Last version of branch boundary-imx_4.1.15_2.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/3c1c6149.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_DTS_SUPPORT=y diff --git a/bsp/buildroot/configs/nitrogen6x_defconfig b/bsp/buildroot/configs/nitrogen6x_defconfig index 85acabe6..48bb114a 100644 --- a/bsp/buildroot/configs/nitrogen6x_defconfig +++ b/bsp/buildroot/configs/nitrogen6x_defconfig @@ -1,6 +1,9 @@ # 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 @@ -23,13 +26,13 @@ BR2_TARGET_UBOOT_BOARDNAME="nitrogen6q" BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Last version of branch boundary-v2016.03 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/12f31130.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/9cbdb79a.tar.gz" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Last version of branch boundary-imx_4.1.15_1.0.0_ga -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/be36042a.tar.gz" +# Last version of branch boundary-imx_4.1.15_2.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/3c1c6149.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_DTS_SUPPORT=y diff --git a/bsp/buildroot/configs/nitrogen7_defconfig b/bsp/buildroot/configs/nitrogen7_defconfig index a8f3b45d..b027fb7c 100644 --- a/bsp/buildroot/configs/nitrogen7_defconfig +++ b/bsp/buildroot/configs/nitrogen7_defconfig @@ -1,6 +1,7 @@ # architecture BR2_arm=y BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y # system BR2_TARGET_GENERIC_GETTY=y @@ -24,13 +25,13 @@ BR2_TARGET_UBOOT_BOARDNAME="nitrogen7" BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_TARBALL=y # Last version of branch boundary-v2016.03 -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/12f31130.tar.gz" +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/9cbdb79a.tar.gz" # kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -# Last version of branch boundary-imx_4.1.15_1.0.0_ga -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/be36042a.tar.gz" +# Last version of branch boundary-imx_4.1.15_2.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/3c1c6149.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary" BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_DTS_SUPPORT=y diff --git a/bsp/buildroot/configs/odroidc2_defconfig b/bsp/buildroot/configs/odroidc2_defconfig index 45ede629..f2d82296 100644 --- a/bsp/buildroot/configs/odroidc2_defconfig +++ b/bsp/buildroot/configs/odroidc2_defconfig @@ -7,15 +7,16 @@ 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.29" +BR2_DEFAULT_KERNEL_VERSION="3.14.79" BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_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="1cb48cebb9d525e524de0ede46710bb29f54d4a6" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="a7fe6f2258e30c7a547908b5480bdbe6b56d6d3c" BR2_LINUX_KERNEL_DEFCONFIG="odroidc2" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_BUILD_DEFAULT_DTS=y @@ -27,7 +28,7 @@ BR2_LINUX_KERNEL_IMAGE=y 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="1ec799cec97574a9838bc25b286484e579a41652" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="eb5d2d16fd45f52ec49e9b4ff9d562630c08e61c" BR2_TARGET_UBOOT_BOARDNAME="odroidc2" # Required tools to create the SD image diff --git a/bsp/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig b/bsp/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig index 57dda72f..807f41c5 100644 --- a/bsp/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig +++ b/bsp/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig @@ -23,9 +23,11 @@ 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_BOARDNAME="A20-OLinuXino-Lime2" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2015.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime2" +BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/bsp/buildroot/configs/olimex_a20_olinuxino_lime_defconfig b/bsp/buildroot/configs/olimex_a20_olinuxino_lime_defconfig index b3a85036..10ce44d4 100644 --- a/bsp/buildroot/configs/olimex_a20_olinuxino_lime_defconfig +++ b/bsp/buildroot/configs/olimex_a20_olinuxino_lime_defconfig @@ -3,8 +3,8 @@ BR2_arm=y BR2_cortex_a7=y BR2_ARM_EABIHF=y -# Linux headers same as kernel, a 4.4 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # System configuration BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" @@ -18,7 +18,7 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="board/olimex/a20_olinuxino/boot.cmd $(TARGET_DIR)/b # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.2" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y @@ -32,9 +32,10 @@ BR2_TARGET_ROOTFS_EXT2_4=y # Bootloaders BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="A20-OLinuXino-Lime" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.07" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_FORMAT_BIN=y BR2_TARGET_UBOOT_SPL=y diff --git a/bsp/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig b/bsp/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig index 42c8a7c3..dd5175b5 100644 --- a/bsp/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig +++ b/bsp/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig @@ -17,8 +17,10 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="board/olimex/a20_olinuxino/boot-mali.cmd $(TARGET_D # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux-sunxi,linux-sunxi,sunxi-v3.4.103-r1)/sunxi-v3.4.103-r1.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/dan-and/linux-sunxi.git" +# based on Linux version 3.4.113 +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="fc385cc6dfa350382ecc94a520a716b57e654410" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="sun7i" BR2_LINUX_KERNEL_INSTALL_TARGET=y @@ -37,9 +39,11 @@ BR2_TARGET_ROOTFS_EXT2_4=y # Bootloaders BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="A20-OLinuXino-Lime" +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2015.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime" +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" diff --git a/bsp/buildroot/configs/olimex_imx233_olinuxino_defconfig b/bsp/buildroot/configs/olimex_imx233_olinuxino_defconfig index f74f4222..e5e66053 100644 --- a/bsp/buildroot/configs/olimex_imx233_olinuxino_defconfig +++ b/bsp/buildroot/configs/olimex_imx233_olinuxino_defconfig @@ -2,6 +2,9 @@ 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_GETTY_PORT="ttyAMA0" @@ -9,15 +12,15 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y # Kernel -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.18.2" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/olimex/imx233_olinuxino/linux-3.18.config" -BR2_LINUX_KERNEL_APPENDED_UIMAGE=y -BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x42000000" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.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 @@ -30,13 +33,14 @@ 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="2016.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx23_olinuxino" BR2_TARGET_UBOOT_FORMAT_SD=y @@ -44,5 +48,5 @@ BR2_TARGET_UBOOT_FORMAT_SD=y BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/olimex/imx233_olinuxino/post-image.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh" diff --git a/bsp/buildroot/configs/orangepi_one_defconfig b/bsp/buildroot/configs/orangepi_one_defconfig new file mode 100644 index 00000000..925ba9c4 --- /dev/null +++ b/bsp/buildroot/configs/orangepi_one_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_One" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi One" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepi-one/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/orangepi/orangepi-one/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="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="2016.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_one" +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_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/bsp/buildroot/configs/orangepipc_defconfig b/bsp/buildroot/configs/orangepi_pc_defconfig similarity index 68% rename from bsp/buildroot/configs/orangepipc_defconfig rename to bsp/buildroot/configs/orangepi_pc_defconfig index 3683ad49..a3a5700f 100644 --- a/bsp/buildroot/configs/orangepipc_defconfig +++ b/bsp/buildroot/configs/orangepi_pc_defconfig @@ -1,24 +1,24 @@ BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_VFPV4=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC" BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC" -BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepipc/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/orangepi/orangepipc/post-image.sh" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepi-pc/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/orangepi/orangepi-pc/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9" BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-plus" +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="2016.05" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y diff --git a/bsp/buildroot/configs/pc_x86_64_bios_defconfig b/bsp/buildroot/configs/pc_x86_64_bios_defconfig index 020be858..23462ad5 100644 --- a/bsp/buildroot/configs/pc_x86_64_bios_defconfig +++ b/bsp/buildroot/configs/pc_x86_64_bios_defconfig @@ -20,15 +20,15 @@ BR2_TARGET_ROOTFS_EXT2_4=y # BR2_TARGET_ROOTFS_TAR is not set BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image.sh" -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux-4.9.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/pc/linux-extras.config" BR2_LINUX_KERNEL_INSTALL_TARGET=y diff --git a/bsp/buildroot/configs/pc_x86_64_efi_defconfig b/bsp/buildroot/configs/pc_x86_64_efi_defconfig index 13194881..136b7113 100644 --- a/bsp/buildroot/configs/pc_x86_64_efi_defconfig +++ b/bsp/buildroot/configs/pc_x86_64_efi_defconfig @@ -23,15 +23,15 @@ BR2_TARGET_ROOTFS_EXT2_4=y # BR2_TARGET_ROOTFS_TAR is not set BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image.sh" -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux-4.9.config" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/pc/linux-extras.config" BR2_LINUX_KERNEL_INSTALL_TARGET=y diff --git a/bsp/buildroot/configs/qemu_aarch64_virt_defconfig b/bsp/buildroot/configs/qemu_aarch64_virt_defconfig index 2f5429b1..222c69eb 100644 --- a/bsp/buildroot/configs/qemu_aarch64_virt_defconfig +++ b/bsp/buildroot/configs/qemu_aarch64_virt_defconfig @@ -9,12 +9,12 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ROOTFS_INITRAMFS=y -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux-4.9.config" diff --git a/bsp/buildroot/configs/qemu_arm_versatile_defconfig b/bsp/buildroot/configs/qemu_arm_versatile_defconfig index 738c7277..afeef75c 100644 --- a/bsp/buildroot/configs/qemu_arm_versatile_defconfig +++ b/bsp/buildroot/configs/qemu_arm_versatile_defconfig @@ -10,14 +10,14 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-4.9.config" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="versatile-pb" diff --git a/bsp/buildroot/configs/qemu_arm_versatile_nommu_defconfig b/bsp/buildroot/configs/qemu_arm_versatile_nommu_defconfig new file mode 100644 index 00000000..6cc646b2 --- /dev/null +++ b/bsp/buildroot/configs/qemu_arm_versatile_nommu_defconfig @@ -0,0 +1,32 @@ +# 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.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.45" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-4.4-nommu.config" diff --git a/bsp/buildroot/configs/qemu_arm_vexpress_defconfig b/bsp/buildroot/configs/qemu_arm_vexpress_defconfig index 381c0eb7..f8dd5a09 100644 --- a/bsp/buildroot/configs/qemu_arm_vexpress_defconfig +++ b/bsp/buildroot/configs/qemu_arm_vexpress_defconfig @@ -13,13 +13,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" diff --git a/bsp/buildroot/configs/qemu_m68k_mcf5208_defconfig b/bsp/buildroot/configs/qemu_m68k_mcf5208_defconfig index 659ae3d8..a5ebf153 100644 --- a/bsp/buildroot/configs/qemu_m68k_mcf5208_defconfig +++ b/bsp/buildroot/configs/qemu_m68k_mcf5208_defconfig @@ -9,17 +9,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_INITRAMFS=y # BR2_TARGET_ROOTFS_TAR is not set -BR2_GLOBAL_PATCH_DIR="board/qemu/m68k-mcf5208/patches" - -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=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.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.17" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-mcf5208/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-mcf5208/linux-4.8.config" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/bsp/buildroot/configs/qemu_m68k_q800_defconfig b/bsp/buildroot/configs/qemu_m68k_q800_defconfig index 6ebd6fae..7bba7ef1 100644 --- a/bsp/buildroot/configs/qemu_m68k_q800_defconfig +++ b/bsp/buildroot/configs/qemu_m68k_q800_defconfig @@ -9,15 +9,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-q800/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-q800/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/bsp/buildroot/configs/qemu_microblazebe_mmu_defconfig b/bsp/buildroot/configs/qemu_microblazebe_mmu_defconfig index ecff6c3b..3af8ad90 100644 --- a/bsp/buildroot/configs/qemu_microblazebe_mmu_defconfig +++ b/bsp/buildroot/configs/qemu_microblazebe_mmu_defconfig @@ -10,14 +10,14 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ROOTFS_INITRAMFS=y -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazebe-mmu/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazebe-mmu/linux-4.9.config" BR2_LINUX_KERNEL_LINUX_BIN=y BR2_LINUX_KERNEL_PATCH="board/qemu/microblazebe-mmu/xilinx-xemaclite.patch" diff --git a/bsp/buildroot/configs/qemu_microblazeel_mmu_defconfig b/bsp/buildroot/configs/qemu_microblazeel_mmu_defconfig index 67534b31..6bda8cc7 100644 --- a/bsp/buildroot/configs/qemu_microblazeel_mmu_defconfig +++ b/bsp/buildroot/configs/qemu_microblazeel_mmu_defconfig @@ -10,14 +10,14 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ROOTFS_INITRAMFS=y -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazeel-mmu/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazeel-mmu/linux-4.9.config" BR2_LINUX_KERNEL_LINUX_BIN=y BR2_LINUX_KERNEL_PATCH="board/qemu/microblazeel-mmu/xilinx-xemaclite.patch" diff --git a/bsp/buildroot/configs/qemu_mips32r2_malta_defconfig b/bsp/buildroot/configs/qemu_mips32r2_malta_defconfig index 7aa8fc08..efac1f26 100644 --- a/bsp/buildroot/configs/qemu_mips32r2_malta_defconfig +++ b/bsp/buildroot/configs/qemu_mips32r2_malta_defconfig @@ -9,15 +9,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2-malta/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2-malta/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/bsp/buildroot/configs/qemu_mips32r2el_malta_defconfig b/bsp/buildroot/configs/qemu_mips32r2el_malta_defconfig index 6c6b3cd4..066c8977 100644 --- a/bsp/buildroot/configs/qemu_mips32r2el_malta_defconfig +++ b/bsp/buildroot/configs/qemu_mips32r2el_malta_defconfig @@ -9,15 +9,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2el-malta/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2el-malta/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/bsp/buildroot/configs/qemu_mips32r6_malta_defconfig b/bsp/buildroot/configs/qemu_mips32r6_malta_defconfig index bddde486..898477b3 100644 --- a/bsp/buildroot/configs/qemu_mips32r6_malta_defconfig +++ b/bsp/buildroot/configs/qemu_mips32r6_malta_defconfig @@ -9,15 +9,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6-malta/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6-malta/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Compiler diff --git a/bsp/buildroot/configs/qemu_mips32r6el_malta_defconfig b/bsp/buildroot/configs/qemu_mips32r6el_malta_defconfig index f0d64ffc..a082167c 100644 --- a/bsp/buildroot/configs/qemu_mips32r6el_malta_defconfig +++ b/bsp/buildroot/configs/qemu_mips32r6el_malta_defconfig @@ -9,15 +9,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6el-malta/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6el-malta/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Compiler diff --git a/bsp/buildroot/configs/qemu_mips64_malta_defconfig b/bsp/buildroot/configs/qemu_mips64_malta_defconfig index 211bf01e..7c400633 100644 --- a/bsp/buildroot/configs/qemu_mips64_malta_defconfig +++ b/bsp/buildroot/configs/qemu_mips64_malta_defconfig @@ -9,15 +9,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=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.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.17" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64-malta/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64-malta/linux-4.8.config" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/bsp/buildroot/configs/qemu_mips64el_malta_defconfig b/bsp/buildroot/configs/qemu_mips64el_malta_defconfig index b80b3eb9..e9570456 100644 --- a/bsp/buildroot/configs/qemu_mips64el_malta_defconfig +++ b/bsp/buildroot/configs/qemu_mips64el_malta_defconfig @@ -9,15 +9,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64el-malta/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64el-malta/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/bsp/buildroot/configs/qemu_mips64r6_malta_defconfig b/bsp/buildroot/configs/qemu_mips64r6_malta_defconfig index 43e141d6..dccdc169 100644 --- a/bsp/buildroot/configs/qemu_mips64r6_malta_defconfig +++ b/bsp/buildroot/configs/qemu_mips64r6_malta_defconfig @@ -10,15 +10,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6-malta/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6-malta/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Compiler diff --git a/bsp/buildroot/configs/qemu_mips64r6el_malta_defconfig b/bsp/buildroot/configs/qemu_mips64r6el_malta_defconfig index c3acc1ca..8bbc114a 100644 --- a/bsp/buildroot/configs/qemu_mips64r6el_malta_defconfig +++ b/bsp/buildroot/configs/qemu_mips64r6el_malta_defconfig @@ -10,15 +10,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6el-malta/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6el-malta/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Compiler diff --git a/bsp/buildroot/configs/qemu_nios2_10m50_defconfig b/bsp/buildroot/configs/qemu_nios2_10m50_defconfig new file mode 100644 index 00000000..345a6e54 --- /dev/null +++ b/bsp/buildroot/configs/qemu_nios2_10m50_defconfig @@ -0,0 +1,10 @@ +BR2_nios2=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" +BR2_LINUX_KERNEL_DEFCONFIG="10m50" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/nios2-10m50/linux-4.9.fragment" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y diff --git a/bsp/buildroot/configs/qemu_or1k_defconfig b/bsp/buildroot/configs/qemu_or1k_defconfig new file mode 100644 index 00000000..4f70285d --- /dev/null +++ b/bsp/buildroot/configs/qemu_or1k_defconfig @@ -0,0 +1,19 @@ +# Architecture +BR2_or1k=y + +# Patches +BR2_GLOBAL_PATCH_DIR="board/qemu/or1k/patches" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4,9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/or1k/linux-4.9.config" diff --git a/bsp/buildroot/configs/qemu_ppc64_pseries_defconfig b/bsp/buildroot/configs/qemu_ppc64_pseries_defconfig index 5c183573..c15de3bc 100644 --- a/bsp/buildroot/configs/qemu_ppc64_pseries_defconfig +++ b/bsp/buildroot/configs/qemu_ppc64_pseries_defconfig @@ -10,12 +10,12 @@ BR2_TARGET_GENERIC_GETTY_PORT="hvc0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_DEFCONFIG="pseries" BR2_LINUX_KERNEL_VMLINUX=y diff --git a/bsp/buildroot/configs/qemu_ppc_g3beige_defconfig b/bsp/buildroot/configs/qemu_ppc_g3beige_defconfig index ab3276d7..58d4dfc8 100644 --- a/bsp/buildroot/configs/qemu_ppc_g3beige_defconfig +++ b/bsp/buildroot/configs/qemu_ppc_g3beige_defconfig @@ -9,15 +9,15 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-g3beige/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-g3beige/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/bsp/buildroot/configs/qemu_ppc_mpc8544ds_defconfig b/bsp/buildroot/configs/qemu_ppc_mpc8544ds_defconfig index a77936f3..0252da72 100644 --- a/bsp/buildroot/configs/qemu_ppc_mpc8544ds_defconfig +++ b/bsp/buildroot/configs/qemu_ppc_mpc8544ds_defconfig @@ -9,15 +9,15 @@ BR2_SYSTEM_DHCP="eth0" # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ROOTFS_INITRAMFS=y -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-mpc8544ds/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-mpc8544ds/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y # Serial port config diff --git a/bsp/buildroot/configs/qemu_ppc_virtex_ml507_defconfig b/bsp/buildroot/configs/qemu_ppc_virtex_ml507_defconfig index d2581cbd..84cb3298 100644 --- a/bsp/buildroot/configs/qemu_ppc_virtex_ml507_defconfig +++ b/bsp/buildroot/configs/qemu_ppc_virtex_ml507_defconfig @@ -6,8 +6,8 @@ BR2_powerpc_440=y # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ROOTFS_INITRAMFS=y -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Use soft float BR2_SOFT_FLOAT=y @@ -15,9 +15,9 @@ BR2_SOFT_FLOAT=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-virtex-ml507/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-virtex-ml507/linux-4.9.config" BR2_LINUX_KERNEL_VMLINUX=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="virtex440-ml507" diff --git a/bsp/buildroot/configs/qemu_sh4_r2d_defconfig b/bsp/buildroot/configs/qemu_sh4_r2d_defconfig index ce387c27..becce23e 100644 --- a/bsp/buildroot/configs/qemu_sh4_r2d_defconfig +++ b/bsp/buildroot/configs/qemu_sh4_r2d_defconfig @@ -10,13 +10,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttySC1" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Linux kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4-r2d/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4-r2d/linux-4.9.config" BR2_LINUX_KERNEL_ZIMAGE=y diff --git a/bsp/buildroot/configs/qemu_sh4eb_r2d_defconfig b/bsp/buildroot/configs/qemu_sh4eb_r2d_defconfig index 246e39e3..61d9ac9d 100644 --- a/bsp/buildroot/configs/qemu_sh4eb_r2d_defconfig +++ b/bsp/buildroot/configs/qemu_sh4eb_r2d_defconfig @@ -9,13 +9,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttySC1" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Linux kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4eb-r2d/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4eb-r2d/linux-4.9.config" BR2_LINUX_KERNEL_ZIMAGE=y diff --git a/bsp/buildroot/configs/qemu_sparc64_sun4u_defconfig b/bsp/buildroot/configs/qemu_sparc64_sun4u_defconfig index 288945b3..ef2d22f7 100644 --- a/bsp/buildroot/configs/qemu_sparc64_sun4u_defconfig +++ b/bsp/buildroot/configs/qemu_sparc64_sun4u_defconfig @@ -9,12 +9,12 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Linux kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc64-sun4u/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc64-sun4u/linux-4.9.config" diff --git a/bsp/buildroot/configs/qemu_sparc_ss10_defconfig b/bsp/buildroot/configs/qemu_sparc_ss10_defconfig index 42efa481..1d6c9517 100644 --- a/bsp/buildroot/configs/qemu_sparc_ss10_defconfig +++ b/bsp/buildroot/configs/qemu_sparc_ss10_defconfig @@ -9,12 +9,12 @@ BR2_SYSTEM_DHCP="eth0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Linux kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux-4.9.config" diff --git a/bsp/buildroot/configs/qemu_x86_64_defconfig b/bsp/buildroot/configs/qemu_x86_64_defconfig index 40840bee..7002d5ed 100644 --- a/bsp/buildroot/configs/qemu_x86_64_defconfig +++ b/bsp/buildroot/configs/qemu_x86_64_defconfig @@ -9,12 +9,12 @@ BR2_TARGET_GENERIC_GETTY_PORT="tty1" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux-4.9.config" diff --git a/bsp/buildroot/configs/qemu_x86_defconfig b/bsp/buildroot/configs/qemu_x86_defconfig index a17ced44..99ca6040 100644 --- a/bsp/buildroot/configs/qemu_x86_defconfig +++ b/bsp/buildroot/configs/qemu_x86_defconfig @@ -10,12 +10,12 @@ BR2_TARGET_GENERIC_GETTY_PORT="tty1" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux-4.9.config" diff --git a/bsp/buildroot/configs/qemu_xtensa_lx60_defconfig b/bsp/buildroot/configs/qemu_xtensa_lx60_defconfig index cf60100b..54d844d7 100644 --- a/bsp/buildroot/configs/qemu_xtensa_lx60_defconfig +++ b/bsp/buildroot/configs/qemu_xtensa_lx60_defconfig @@ -16,15 +16,15 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ROOTFS_INITRAMFS=y -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=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.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.17" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-4.7.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-4.8.config" BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y BR2_LINUX_KERNEL_IMAGE_NAME="Image.elf" BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="zImage" diff --git a/bsp/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig b/bsp/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig index ab9de6aa..256cbeee 100644 --- a/bsp/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig +++ b/bsp/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig @@ -20,15 +20,15 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_ROOTFS_INITRAMFS=y -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=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.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.17" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-4.7-nommu.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-4.8-nommu.config" BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y BR2_LINUX_KERNEL_IMAGE_NAME="Image.elf" BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="zImage" diff --git a/bsp/buildroot/configs/qmx6_defconfig b/bsp/buildroot/configs/qmx6_defconfig deleted file mode 100644 index cb80cad4..00000000 --- a/bsp/buildroot/configs/qmx6_defconfig +++ /dev/null @@ -1,33 +0,0 @@ -BR2_arm=y -BR2_cortex_a9=y -# Linux headers same as kernel, a 3.14 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y -BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" - -# Notice you need a recent version of u-boot (with DT support) to be able -# to boot this kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://git.congatec.com/arm/imx6_kernel_3.14.git" -# Last version of branch cgt_qmx6_3.14.28_1.0.0 -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="105820d6bd251deb49c3dd3f71fa0d76adce97c7" -BR2_LINUX_KERNEL_DEFCONFIG="qmx6" -BR2_LINUX_KERNEL_UIMAGE=y -BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-qmx6" -BR2_LINUX_KERNEL_INSTALL_TARGET=y - -# Change boardname depending of your product number -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="cgt_qmx6_pn016103" -BR2_TARGET_UBOOT_CUSTOM_GIT=y -BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://git.congatec.com/arm/qmx6_uboot.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="4d3b64e93064ed3d97ef7d91ff0f61a693a460fc" -BR2_TARGET_UBOOT_FORMAT_CUSTOM=y -BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.pn016103.imx" - -BR2_TARGET_ROOTFS_EXT2=y -BR2_TARGET_ROOTFS_EXT2_3=y - -BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/bsp/buildroot/configs/raspberrypi0_defconfig b/bsp/buildroot/configs/raspberrypi0_defconfig index 87b1108e..736143f0 100644 --- a/bsp/buildroot/configs/raspberrypi0_defconfig +++ b/bsp/buildroot/configs/raspberrypi0_defconfig @@ -10,7 +10,7 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="26f3b72a9c049be10e6af196252283e1f6ab9d1f" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="1ebe8d4a4c96cd6a90805c74233a468854960f67" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" # Build the DTBs for A/B from the kernel sources: the zero is the same diff --git a/bsp/buildroot/configs/raspberrypi2_defconfig b/bsp/buildroot/configs/raspberrypi2_defconfig index e45a970e..1ec92e75 100644 --- a/bsp/buildroot/configs/raspberrypi2_defconfig +++ b/bsp/buildroot/configs/raspberrypi2_defconfig @@ -13,7 +13,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="26f3b72a9c049be10e6af196252283e1f6ab9d1f" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="1ebe8d4a4c96cd6a90805c74233a468854960f67" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" # Build the DTB from the kernel sources diff --git a/bsp/buildroot/configs/raspberrypi3_defconfig b/bsp/buildroot/configs/raspberrypi3_defconfig index 4eb5333f..6fceaa0b 100644 --- a/bsp/buildroot/configs/raspberrypi3_defconfig +++ b/bsp/buildroot/configs/raspberrypi3_defconfig @@ -13,7 +13,7 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="26f3b72a9c049be10e6af196252283e1f6ab9d1f" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="1ebe8d4a4c96cd6a90805c74233a468854960f67" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" # Build the DTB from the kernel sources @@ -21,7 +21,7 @@ BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b" BR2_PACKAGE_RPI_FIRMWARE=y -# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set +BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS=y # Required tools to create the SD image BR2_PACKAGE_HOST_DOSFSTOOLS=y @@ -34,3 +34,4 @@ BR2_TARGET_ROOTFS_EXT2_4=y # 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/bsp/buildroot/configs/raspberrypi_defconfig b/bsp/buildroot/configs/raspberrypi_defconfig index 422426b6..6af9fb30 100644 --- a/bsp/buildroot/configs/raspberrypi_defconfig +++ b/bsp/buildroot/configs/raspberrypi_defconfig @@ -12,7 +12,7 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="26f3b72a9c049be10e6af196252283e1f6ab9d1f" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="1ebe8d4a4c96cd6a90805c74233a468854960f67" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" # Build the DTBs for A/B, A+/B+ and compute module from the kernel sources diff --git a/bsp/buildroot/configs/riotboard_defconfig b/bsp/buildroot/configs/riotboard_defconfig index d486e1e2..c2281058 100644 --- a/bsp/buildroot/configs/riotboard_defconfig +++ b/bsp/buildroot/configs/riotboard_defconfig @@ -1,7 +1,9 @@ # 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 diff --git a/bsp/buildroot/configs/snps_aarch64_vdk_defconfig b/bsp/buildroot/configs/snps_aarch64_vdk_defconfig index f165a9a3..b55dce1a 100644 --- a/bsp/buildroot/configs/snps_aarch64_vdk_defconfig +++ b/bsp/buildroot/configs/snps_aarch64_vdk_defconfig @@ -1,12 +1,10 @@ BR2_aarch64=y -# Linux headers same as kernel, a 3.18 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=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_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://git.linaro.org/kernel/linux-linaro-tracking.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux-linaro-3.18-2014.12" +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 diff --git a/bsp/buildroot/configs/snps_hs38_smp_vdk_defconfig b/bsp/buildroot/configs/snps_archs38_vdk_defconfig similarity index 61% rename from bsp/buildroot/configs/snps_hs38_smp_vdk_defconfig rename to bsp/buildroot/configs/snps_archs38_vdk_defconfig index 32922f81..d13fcb22 100644 --- a/bsp/buildroot/configs/snps_hs38_smp_vdk_defconfig +++ b/bsp/buildroot/configs/snps_archs38_vdk_defconfig @@ -3,17 +3,18 @@ BR2_arcle=y BR2_archs38=y # System -BR2_TARGET_GENERIC_HOSTNAME="hs38_vdk" +BR2_TARGET_GENERIC_HOSTNAME="archs38_vdk" BR2_TARGET_GENERIC_ISSUE="Welcome to the HS38 VDK Software Development Platform" BR2_ROOTFS_OVERLAY="board/synopsys/axs10x/fs-overlay" BR2_TARGET_ROOTFS_EXT2=y -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_KERNEL_HEADERS_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" +BR2_LINUX_KERNEL_PATCH="board/synopsys/vdk/patches/linux" BR2_LINUX_KERNEL_DEFCONFIG="vdk_hs38_smp" BR2_LINUX_KERNEL_VMLINUX=y diff --git a/bsp/buildroot/configs/snps_archs38_zebu_defconfig b/bsp/buildroot/configs/snps_archs38_zebu_defconfig new file mode 100644 index 00000000..96d941ac --- /dev/null +++ b/bsp/buildroot/configs/snps_archs38_zebu_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.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" +BR2_LINUX_KERNEL_DEFCONFIG="zebu_hs_smp" +BR2_LINUX_KERNEL_VMLINUX=y diff --git a/bsp/buildroot/configs/snps_axs101_defconfig b/bsp/buildroot/configs/snps_axs101_defconfig index f272853c..48372acc 100644 --- a/bsp/buildroot/configs/snps_axs101_defconfig +++ b/bsp/buildroot/configs/snps_axs101_defconfig @@ -8,19 +8,19 @@ BR2_TARGET_ROOTFS_INITRAMFS=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_OVERLAY="board/synopsys/axs10x/fs-overlay" -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_DEFCONFIG="axs101" # Bootloader BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.07" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="axs101" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/bsp/buildroot/configs/snps_axs103_defconfig b/bsp/buildroot/configs/snps_axs103_defconfig index 75596c90..eb16b703 100644 --- a/bsp/buildroot/configs/snps_axs103_defconfig +++ b/bsp/buildroot/configs/snps_axs103_defconfig @@ -9,19 +9,19 @@ BR2_TARGET_ROOTFS_INITRAMFS=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_OVERLAY="board/synopsys/axs10x/fs-overlay" -# Linux headers same as kernel, a 4.7 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" BR2_LINUX_KERNEL_DEFCONFIG="axs103_smp" # Bootloader BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.07" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="axs103" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/bsp/buildroot/configs/ts4900_defconfig b/bsp/buildroot/configs/ts4900_defconfig new file mode 100644 index 00000000..7d5d02be --- /dev/null +++ b/bsp/buildroot/configs/ts4900_defconfig @@ -0,0 +1,17 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/technologic/ts4900/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/embeddedarm/linux-3.10.17-imx6.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="70d1e85a22879e27cc9e36384438d5a9793e44b0" +BR2_LINUX_KERNEL_DEFCONFIG="imx_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/bsp/buildroot/configs/udoo_quad_defconfig b/bsp/buildroot/configs/udoo_quad_defconfig deleted file mode 100644 index 53444468..00000000 --- a/bsp/buildroot/configs/udoo_quad_defconfig +++ /dev/null @@ -1,29 +0,0 @@ -# Architceture -BR2_arm=y -BR2_cortex_a9=y -BR2_ARM_ENABLE_VFP=y - -# Linux headers same as kernel, a 3.0 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0=y - -# System -BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" - -# Kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/UDOOboard/Kernel_Unico" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="8a6eb060a0d968048f88d5a94510fc6db2c37939" -BR2_LINUX_KERNEL_PATCH="https://github.com/torvalds/linux/commit/455bd4c430b0c0a361f38e8658a0d6cb469942b5.patch https://github.com/torvalds/linux/commit/418df63adac56841ef6b0f1fcf435bc64d4ed177.patch" -BR2_LINUX_KERNEL_DEFCONFIG="UDOO" -BR2_LINUX_KERNEL_UIMAGE=y -BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" -BR2_LINUX_KERNEL_INSTALL_TARGET=y - -# Bootloader -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="udoo_quad" -BR2_TARGET_UBOOT_CUSTOM_GIT=y -BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/UDOOboard/U-Boot_Unico-2013" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="1b90fd4bafb1efe05f88eaded731d99a1428f497" -BR2_TARGET_UBOOT_FORMAT_IMX=y diff --git a/bsp/buildroot/configs/wandboard_defconfig b/bsp/buildroot/configs/wandboard_defconfig index cd06f40b..caa4c510 100644 --- a/bsp/buildroot/configs/wandboard_defconfig +++ b/bsp/buildroot/configs/wandboard_defconfig @@ -1,29 +1,31 @@ BR2_arm=y BR2_cortex_a9=y -# Linux headers same as kernel, a 3.14 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.7 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" -BR2_PACKAGE_HOST_GENIMAGE=y +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_BUILD_SYSTEM_KCONFIG=y -BR2_TARGET_UBOOT_USE_DEFCONFIG=y -BR2_TARGET_UBOOT_BOARD_DEFCONFIG="wandboard" +BR2_TARGET_UBOOT_BOARDNAME="wandboard" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2015.07" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="SPL" -BR2_TARGET_UBOOT_ENVIMAGE=y -BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/wandboard/uboot-env.txt" -BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x2000" BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/wandboard-org/linux" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="e2213f9a98dd7413ee5a9ca40cf60e8cb8292f4a" -BR2_LINUX_KERNEL_DEFCONFIG="wandboard" +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7.3" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-wandboard imx6dl-wandboard" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-wandboard imx6dl-wandboard imx6q-wandboard-revb1 imx6dl-wandboard-revb1" 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/bsp/buildroot/configs/warp7_defconfig b/bsp/buildroot/configs/warp7_defconfig new file mode 100644 index 00000000..c18a7826 --- /dev/null +++ b/bsp/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 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=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="4.9" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/warp7/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7s-warp" + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="warp7" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01" +BR2_TARGET_UBOOT_FORMAT_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/bsp/buildroot/configs/warpboard_defconfig b/bsp/buildroot/configs/warpboard_defconfig index 19425b36..1655381a 100644 --- a/bsp/buildroot/configs/warpboard_defconfig +++ b/bsp/buildroot/configs/warpboard_defconfig @@ -1,9 +1,12 @@ # 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.4 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=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" @@ -15,7 +18,7 @@ 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.4.15" +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 @@ -25,6 +28,9 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sl-warp" 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 @@ -34,7 +40,7 @@ BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="warp" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.07" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" BR2_TARGET_UBOOT_FORMAT_IMX=y # host utility @@ -42,7 +48,7 @@ BR2_PACKAGE_HOST_DFU_UTIL=y BR2_PACKAGE_HOST_IMX_USB_LOADER=y # Filesystem -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/warpboard/post-image.sh" +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/bsp/buildroot/configs/zynq_microzed_defconfig b/bsp/buildroot/configs/zynq_microzed_defconfig index 5efc0d4f..dd580ab9 100644 --- a/bsp/buildroot/configs/zynq_microzed_defconfig +++ b/bsp/buildroot/configs/zynq_microzed_defconfig @@ -1,6 +1,7 @@ BR2_arm=y BR2_cortex_a9=y BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" BR2_LINUX_KERNEL=y @@ -22,6 +23,7 @@ BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/Xilinx/u-boot-xlnx.git" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="xilinx-v2016.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" diff --git a/bsp/buildroot/configs/zynq_zc706_defconfig b/bsp/buildroot/configs/zynq_zc706_defconfig index 578f042b..3f7fd8c4 100644 --- a/bsp/buildroot/configs/zynq_zc706_defconfig +++ b/bsp/buildroot/configs/zynq_zc706_defconfig @@ -2,6 +2,7 @@ BR2_arm=y BR2_cortex_a9=y BR2_ARM_ENABLE_NEON=y BR2_ARM_ENABLE_VFP=y +BR2_ARM_ENABLE_VFP=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" BR2_LINUX_KERNEL=y @@ -23,6 +24,7 @@ BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/Xilinx/u-boot-xlnx.git" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="xilinx-v2016.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" diff --git a/bsp/buildroot/configs/zynq_zed_defconfig b/bsp/buildroot/configs/zynq_zed_defconfig index 7ce3365e..0febf825 100644 --- a/bsp/buildroot/configs/zynq_zed_defconfig +++ b/bsp/buildroot/configs/zynq_zed_defconfig @@ -1,6 +1,7 @@ BR2_arm=y BR2_cortex_a9=y BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" BR2_LINUX_KERNEL=y @@ -22,6 +23,7 @@ BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/Xilinx/u-boot-xlnx.git" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="xilinx-v2016.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" diff --git a/bsp/buildroot/configs/zynq_zybo_defconfig b/bsp/buildroot/configs/zynq_zybo_defconfig new file mode 100644 index 00000000..ee6fa060 --- /dev/null +++ b/bsp/buildroot/configs/zynq_zybo_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_6=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/digilent/zybo/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6.4" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="zynq-zybo" +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.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="zynq_zybo" +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_ZYNQ_IMAGE=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/bsp/buildroot/docs/manual/adding-packages-asciidoc.txt b/bsp/buildroot/docs/manual/adding-packages-asciidoc.txt index 6e217869..d870c510 100644 --- a/bsp/buildroot/docs/manual/adding-packages-asciidoc.txt +++ b/bsp/buildroot/docs/manual/adding-packages-asciidoc.txt @@ -19,9 +19,9 @@ 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 -xref:outside-br-custom[BR2_EXTERNAL]. This allows documentation for a -BR2_EXTERNAL tree to match the Buildroot documentation, as it will be +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 @@ -63,6 +63,11 @@ information is (assuming the document name is +foo+) : 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: diff --git a/bsp/buildroot/docs/manual/adding-packages-directory.txt b/bsp/buildroot/docs/manual/adding-packages-directory.txt index dc66f009..5dba962b 100644 --- a/bsp/buildroot/docs/manual/adding-packages-directory.txt +++ b/bsp/buildroot/docs/manual/adding-packages-directory.txt @@ -7,7 +7,7 @@ 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+, +efl+ and +matchbox+. If your package fits in ++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. @@ -384,9 +384,6 @@ openGL libraries. See xref:virtual-package-tutorial[] for more on the virtual packages. -See xref:virtual-package-list[] for the symbols to depend on if your package -depends on a feature provided by a virtual package. - === The +.mk+ file [[adding-packages-mk]] diff --git a/bsp/buildroot/docs/manual/adding-packages-generic.txt b/bsp/buildroot/docs/manual/adding-packages-generic.txt index ef895ec9..a08283c5 100644 --- a/bsp/buildroot/docs/manual/adding-packages-generic.txt +++ b/bsp/buildroot/docs/manual/adding-packages-generic.txt @@ -250,6 +250,13 @@ information is (assuming the package name is +libfoo+) : +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 @@ -310,11 +317,12 @@ information is (assuming the package name is +libfoo+) : the package source code. Buildroot copies the contents of the source directory into the package's build directory. -* +LIBFOO_GIT_SUBMODULES+, when +LIBFOO_SITE_METHOD=git+, will create - an archive with the git submodules in the repository. - Note that we try not to use such git submodules when they contain - bundled libraries, in which case we prefer to use those libraries - from their own package. +* +LIBFOO_GIT_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. @@ -521,8 +529,8 @@ endef In the action definitions, you can use the following variables: -* +$(FOO_PKGDIR)+ contains the path to the directory containing the - +foo.mk+ and +Config.in+ files. This variable is useful when it is +* +$(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... diff --git a/bsp/buildroot/docs/manual/adding-packages-kconfig.txt b/bsp/buildroot/docs/manual/adding-packages-kconfig.txt index 3290024b..d4d8630a 100644 --- a/bsp/buildroot/docs/manual/adding-packages-kconfig.txt +++ b/bsp/buildroot/docs/manual/adding-packages-kconfig.txt @@ -75,3 +75,9 @@ be set to suit the needs of the package under consideration: 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. diff --git a/bsp/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt b/bsp/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt index d394ae67..6deb6d4c 100644 --- a/bsp/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt +++ b/bsp/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt @@ -12,33 +12,36 @@ hooks for building Linux kernel tools or/and building Linux kernel extensions. 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, it is not very -practical to use separate packages for them as they often need to be -built with the same kernel version as the kernel being used on the -target. The small Linux kernel tools infrastructure is a simplified -packaging mechanism based on the generic package infrastructure to -help building those tools. +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 -+linux/Config.tools.in+. This file will contain the option ++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_LINUX_KERNEL_TOOL_FOO +01: config BR2_PACKAGE_LINUX_TOOLS_FOO 02: bool "foo" -03: help -04: This is a comment that explains what foo kernel tool is. -05: -06: http://foosoftware.org/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_LINUX_KERNEL_TOOL_+, +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). -Then for each linux tool, add a new +.mk+ file named +linux/linux-tool-foo.mk+. -It would basically look like: +.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+ file named ++package/linux-tools/linux-tool-foo.mk+. It would basically look like: ------------------------------ 01: ################################################################################ @@ -52,19 +55,19 @@ It would basically look like: 09: FOO_DEPENDENCIES = libbbb 10: 11: define FOO_BUILD_CMDS -12: $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/tools foo +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 $(@D)/tools \ -17: DESTDIR=$(STAGING_DIR) \ -18: foo_install +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 $(@D)/tools \ -23: DESTDIR=$(@D) \ -24: foo_install +22: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +23: DESTDIR=$(TARGET_DIR) \ +24: foo_install 25: endef -------------------------------- @@ -84,7 +87,7 @@ used only when the +foo+ tool is selected. The only supported commands are .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+ package. +they are part of the +linux-tools+ package. [[linux-kernel-ext]] ==== linux-kernel-extensions diff --git a/bsp/buildroot/docs/manual/adding-packages-perl.txt b/bsp/buildroot/docs/manual/adding-packages-perl.txt index 63fafe65..3476b628 100644 --- a/bsp/buildroot/docs/manual/adding-packages-perl.txt +++ b/bsp/buildroot/docs/manual/adding-packages-perl.txt @@ -47,7 +47,7 @@ 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 +supports/scripts/scancpan Foo-Bar+ in the Buildroot directory -(or in the +BR2_EXTERNAL+ 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 @@ -68,8 +68,8 @@ 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+, +Module-Build+ and +Module-Build-Tiny+. -+Build.PL+ is always preferred when a package provides a +Makefile.PL+ ++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 @@ -97,6 +97,13 @@ 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. diff --git a/bsp/buildroot/docs/manual/adding-packages-python.txt b/bsp/buildroot/docs/manual/adding-packages-python.txt index 94ac809f..19d31e28 100644 --- a/bsp/buildroot/docs/manual/adding-packages-python.txt +++ b/bsp/buildroot/docs/manual/adding-packages-python.txt @@ -178,7 +178,7 @@ your host. When at the root of your buildroot directory just do : ----------------------- -./support/script/scanpypi foo bar -o package +./support/scripts/scanpypi foo bar -o package ----------------------- This will generate packages +python-foo+ and +python-bar+ in the package @@ -195,10 +195,10 @@ 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: +a br2-external tree, use the -o flag as follows: ----------------------- -./support/script/scanpypi foo bar -o other_package_dir +./support/scripts/scanpypi foo bar -o other_package_dir ----------------------- This will generate packages +python-foo+ and +python-bar+ in the @@ -207,7 +207,7 @@ This will generate packages +python-foo+ and +python-bar+ in the Option +-h+ will list the available options: ----------------------- -./support/script/scanpypi -h +./support/scripts/scanpypi -h ----------------------- [[python-package-cffi-backend]] diff --git a/bsp/buildroot/docs/manual/adding-packages-virtual.txt b/bsp/buildroot/docs/manual/adding-packages-virtual.txt index a5f17a26..6326bb54 100644 --- a/bsp/buildroot/docs/manual/adding-packages-virtual.txt +++ b/bsp/buildroot/docs/manual/adding-packages-virtual.txt @@ -83,9 +83,6 @@ 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. -See xref:virtual-package-list[] for the symbols to select if you implement -a new provider for an existing virtual package. - ==== Provider's +.mk+ file The +.mk+ file should also declare an additional variable @@ -99,9 +96,6 @@ packages it is an implementation of: Of course, do not forget to add the proper build and runtime dependencies for this package! -See xref:virtual-package-list[] for the names of virtual packages to provide -if you implement a new provider for an existing virtual package. - ==== Notes on depending on a virtual package When adding a package that requires a certain +FEATURE+ provided by a virtual diff --git a/bsp/buildroot/docs/manual/adding-packages-waf.txt b/bsp/buildroot/docs/manual/adding-packages-waf.txt new file mode 100644 index 00000000..43b557c0 --- /dev/null +++ b/bsp/buildroot/docs/manual/adding-packages-waf.txt @@ -0,0 +1,85 @@ +// -*- 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_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 Buidlroot 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/bsp/buildroot/docs/manual/adding-packages.txt b/bsp/buildroot/docs/manual/adding-packages.txt index 76f90c9a..4595991f 100644 --- a/bsp/buildroot/docs/manual/adding-packages.txt +++ b/bsp/buildroot/docs/manual/adding-packages.txt @@ -29,6 +29,8 @@ include::adding-packages-kconfig.txt[] include::adding-packages-rebar.txt[] +include::adding-packages-waf.txt[] + include::adding-packages-kernel-module.txt[] include::adding-packages-asciidoc.txt[] diff --git a/bsp/buildroot/docs/manual/appendix.txt b/bsp/buildroot/docs/manual/appendix.txt index 87a20bd8..4d4bbecc 100644 --- a/bsp/buildroot/docs/manual/appendix.txt +++ b/bsp/buildroot/docs/manual/appendix.txt @@ -3,40 +3,4 @@ include::makedev-syntax.txt[] include::makeusers-syntax.txt[] - - -// Automatically generated lists: - -[[package-list]] -== List of target packages available in Buildroot - -include::package-list.txt[] - -[[virtual-package-list]] -== List of virtual packages - -These are the virtual packages known to +Buildroot+, with the -corresponding symbols and providers. - -include::virtual-package-list.txt[] - -[[host-package-list]] -== List of host utilities available in Buildroot - -The following packages are all available in the menu +Host utilities+. - -include::host-package-list.txt[] - -[[deprecated-list]] -== Deprecated features - -The following features are marked as _deprecated_ in Buildroot due to -them being either too old or unmaintained. They will be removed at -some point, so stop using them. -Each deprecated symbol in kconfig depends on a symbol -+BR2_DEPRECATED_SINCE_xxxx_xx+, which provides an indication of when -the feature can be removed: features will not be removed within the -year following deprecation. For example, a symbol depending on -+BR2_DEPRECATED_SINCE_2013_05+ can be removed from 2014.05 onwards. - -include::deprecated-list.txt[] +include::br2-external-converting.txt[] diff --git a/bsp/buildroot/docs/manual/br2-external-converting.txt b/bsp/buildroot/docs/manual/br2-external-converting.txt new file mode 100644 index 00000000..831addf5 --- /dev/null +++ b/bsp/buildroot/docs/manual/br2-external-converting.txt @@ -0,0 +1,39 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[br2-external-converting]] +== Converting old br2-external trees + +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. diff --git a/bsp/buildroot/docs/manual/common-usage.txt b/bsp/buildroot/docs/manual/common-usage.txt index 7602260b..8dd99a6d 100644 --- a/bsp/buildroot/docs/manual/common-usage.txt +++ b/bsp/buildroot/docs/manual/common-usage.txt @@ -91,8 +91,9 @@ to +make+ or set in the environment: 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; this - is the recommended way of setting it. + 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 diff --git a/bsp/buildroot/docs/manual/configure.txt b/bsp/buildroot/docs/manual/configure.txt index 0cd9f826..0739bc7c 100644 --- a/bsp/buildroot/docs/manual/configure.txt +++ b/bsp/buildroot/docs/manual/configure.txt @@ -31,7 +31,7 @@ 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.org/[uClibc]). +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 @@ -81,7 +81,7 @@ 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.org[uClibc], +http://www.uclibc-ng.org[uClibc-ng], http://www.gnu.org/software/libc/libc.html[glibc] and http://www.musl-libc.org[musl]. diff --git a/bsp/buildroot/docs/manual/contribute.txt b/bsp/buildroot/docs/manual/contribute.txt index 1b1f4de1..c2c8a901 100644 --- a/bsp/buildroot/docs/manual/contribute.txt +++ b/bsp/buildroot/docs/manual/contribute.txt @@ -258,6 +258,12 @@ 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 a separate +patch of the series. See xref:DEVELOPERS[the DEVELOPERS file] for more +information. + ==== Preparing a patch series Starting from the changes committed in your local git view, _rebase_ @@ -283,10 +289,19 @@ 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. -Lastly, send/submit your patch set to the Buildroot mailing list: +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: --------------------- -$ git send-email --to buildroot@buildroot.org outgoing/* +$ ./support/scripts/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/* --------------------- Note that +git+ should be configured to use your mail account. diff --git a/bsp/buildroot/docs/manual/customize-directory-structure.txt b/bsp/buildroot/docs/manual/customize-directory-structure.txt index 0be3f77e..b177319f 100644 --- a/bsp/buildroot/docs/manual/customize-directory-structure.txt +++ b/bsp/buildroot/docs/manual/customize-directory-structure.txt @@ -13,7 +13,8 @@ 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 +BR2_EXTERNAL+. Both options are valid, the choice is up to you. +it using a br2-external tree. Both options are valid, the choice is up +to you. ----- +-- board/ @@ -38,8 +39,8 @@ it using +BR2_EXTERNAL+. Both options are valid, the choice is up to you. | +-- package/ | +-- / -| +-- Config.in (if not using BR2_EXTERNAL) -| +-- .mk (if not using BR2_EXTERNAL) +| +-- Config.in (if not using a br2-external tree) +| +-- .mk (if not using a br2-external tree) | +-- package1/ | | +-- Config.in | | +-- package1.mk @@ -47,14 +48,14 @@ it using +BR2_EXTERNAL+. Both options are valid, the choice is up to you. | +-- Config.in | +-- package2.mk | -+-- Config.in (if using BR2_EXTERNAL) -+-- external.mk (if using BR2_EXTERNAL) ++-- Config.in (if using a br2-external tree) ++-- external.mk (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 using +BR2_EXTERNAL+, the and possibly +tree but in a br2-external tree, the and possibly components may be superfluous and can be left out. ==== Implementing layered customizations diff --git a/bsp/buildroot/docs/manual/customize-outside-br.txt b/bsp/buildroot/docs/manual/customize-outside-br.txt index 9ad177d0..ea0e1203 100644 --- a/bsp/buildroot/docs/manual/customize-outside-br.txt +++ b/bsp/buildroot/docs/manual/customize-outside-br.txt @@ -11,99 +11,303 @@ place project-specific customizations in two locations: 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. + * 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. This section - explains how to use +BR2_EXTERNAL+. + 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. -+BR2_EXTERNAL+ is an environment variable that can be used to point to -a directory that contains Buildroot customizations. It can be passed -to any Buildroot +make+ invocation. It is automatically saved in the -hidden +.br-external+ 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. +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 +BR2_EXTERNAL+ 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* -to the Buildroot output directory. +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/foobar menuconfig +buildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig ----- -From now on, external definitions from the +/path/to/foobar+ -directory will be used: +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 external definitions directory at any time: +We can switch to another br2-external tree at any time: ----- -buildroot/ $ make BR2_EXTERNAL=/where/we/have/barfoo xconfig +buildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig ----- -Or disable the usage of external definitions: +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 ----- -+BR2_EXTERNAL+ allows three different things: +==== Layout of a br2-external tree - * 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 its - location. The +BR2_EXTERNAL+ value is available within the - Buildroot configuration using +$(BR2_EXTERNAL)+. As an example, one - could set the +BR2_ROOTFS_OVERLAY+ Buildroot option to - +$(BR2_EXTERNAL)/board//overlay/+ (to specify a root - filesystem overlay), or the +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+ - Buildroot option to - +$(BR2_EXTERNAL)/board//kernel.config+ (to specify the - location of the kernel configuration file). +A br2-external tree must contain at least those three files, described +in the following chapters: - * One can store package recipes (i.e. +Config.in+ and - +.mk+), or even custom configuration options and make - logic. Buildroot automatically includes +$(BR2_EXTERNAL)/Config.in+ to - make it appear in the top-level configuration menu, and includes - +$(BR2_EXTERNAL)/external.mk+ with the rest of the makefile logic. -+ -.Note -Providing +Config.in+ and +external.mk+ is mandatory, but they can be - empty. -+ -The main usage of this is to store package recipes. The recommended - way to do this is to write a +$(BR2_EXTERNAL)/Config.in+ file that - looks like: -+ ------- -source "$BR2_EXTERNAL/package/package1/Config.in" -source "$BR2_EXTERNAL/package/package2/Config.in" ------- -+ -Then, have a +$(BR2_EXTERNAL)/external.mk+ file that looks like: -+ ------- -include $(sort $(wildcard $(BR2_EXTERNAL)/package/*/*.mk)) ------- -+ -And then in +$(BR2_EXTERNAL)/package/package1+ and - +$(BR2_EXTERNAL)/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. + * +external.desc+ + * +external.mk+ + * +Config.in+ - * One can store Buildroot defconfigs in the +configs+ subdirectory of - +$(BR2_EXTERNAL)+. 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 under the - +User-provided configs+' label in the 'make list-defconfigs' output. +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_FOO)/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_FOO)/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/bsp/buildroot/docs/manual/customize-packages.txt b/bsp/buildroot/docs/manual/customize-packages.txt index 9a5e8c5b..b57280ea 100644 --- a/bsp/buildroot/docs/manual/customize-packages.txt +++ b/bsp/buildroot/docs/manual/customize-packages.txt @@ -14,8 +14,9 @@ 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+ feature (see xref:outside-br-custom[]) the recommended -location is +$(BR2_EXTERNAL)/package/+. +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 @@ -37,14 +38,6 @@ have only one extra directory level below +package//+): include $(sort $(wildcard package//*/*.mk)) ----- -If you are using +BR2_EXTERNAL+, create a file -+$(BR2_EXTERNAL)/external.mk+ with following contents (again assuming only -one extra level): - ------ -include $(sort $(wildcard $(BR2_EXTERNAL)/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. @@ -59,13 +52,5 @@ 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 you are using +BR2_EXTERNAL+, create a file -+$(BR2_EXTERNAL)/Config.in+ with similar contents: - ------ -source "$BR2_EXTERNAL/package/package1/Config.in" -source "$BR2_EXTERNAL/package/package2/Config.in" ------ - -You do not have to add an include for this +$(BR2_EXTERNAL)/Config.in+ -file as it is included automatically. +If using a br2-external tree, refer to xref:outside-br-custom[] for how +to fill in those files. diff --git a/bsp/buildroot/docs/manual/developers.txt b/bsp/buildroot/docs/manual/developers.txt new file mode 100644 index 00000000..3c31aa96 --- /dev/null +++ b/bsp/buildroot/docs/manual/developers.txt @@ -0,0 +1,46 @@ +// -*- 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-developer+ 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-developer+ tool, located in +support/scripts+ allows to use +the +DEVELOPERS+ file for various tasks: + +- When passing one or several patches as command line argument, + +get-developer+ will return the appropriate +git send-email+ + command. + +- When using the +-a + command line option, +get-developer+ will + return the list of developers in charge of the given architecture. + +- When using the +-p + command line option, +get-developer+ + will return the list of developers in charge of the given package. + +- When using the +-c+ command line option, +get-developer+ 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. + diff --git a/bsp/buildroot/docs/manual/download-location.txt b/bsp/buildroot/docs/manual/download-location.txt index 0b53f54c..d485df94 100644 --- a/bsp/buildroot/docs/manual/download-location.txt +++ b/bsp/buildroot/docs/manual/download-location.txt @@ -1,6 +1,8 @@ // -*- mode:doc; -*- // vim: set syntax=asciidoc: +[[download-location]] + ==== Location of downloaded packages The various tarballs that are downloaded by Buildroot are all stored diff --git a/bsp/buildroot/docs/manual/legal-notice.txt b/bsp/buildroot/docs/manual/legal-notice.txt index 7c19bc30..c9b5211f 100644 --- a/bsp/buildroot/docs/manual/legal-notice.txt +++ b/bsp/buildroot/docs/manual/legal-notice.txt @@ -73,6 +73,16 @@ 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-list-licenses]] === License abbreviations diff --git a/bsp/buildroot/docs/manual/manual.html b/bsp/buildroot/docs/manual/manual.html index a14e7c1c..28a3b3be 100644 --- a/bsp/buildroot/docs/manual/manual.html +++ b/bsp/buildroot/docs/manual/manual.html @@ -1,9 +1,9 @@ -The Buildroot user manual

The Buildroot user manual


Table of Contents

I. Getting started
1. About Buildroot
2. System requirements
2.1. Mandatory packages
2.2. Optional packages
3. Getting Buildroot
4. Buildroot quick start
5. Community resources
II. User guide
6. Buildroot configuration
6.1. Cross-compilation toolchain
6.2. /dev management
6.3. init system
7. Configuration of other components
8. General Buildroot usage
8.1. make tips
8.2. Understanding when a full rebuild is necessary
8.3. Understanding how to rebuild packages
8.4. Offline builds
8.5. Building out-of-tree
8.6. Environment variables
8.7. Dealing efficiently with filesystem images
8.8. Graphing the dependencies between packages
8.9. Graphing the build duration
8.10. Graphing the filesystem size contribution of packages
8.11. Integration with Eclipse
8.12. Advanced usage
9. Project-specific customization
9.1. Recommended directory structure
9.2. Keeping customizations outside of Buildroot
9.3. Storing the Buildroot configuration
9.4. Storing the configuration of other components
9.5. Customizing the generated target filesystem
9.6. Adding custom user accounts
9.7. Customization after the images have been created
9.8. Adding project-specific patches
9.9. Adding project-specific packages
9.10. Quick guide to storing your project-specific customizations
10. Frequently Asked Questions & Troubleshooting
10.1. The boot hangs after Starting network…
10.2. Why is there no compiler on the target?
10.3. Why are there no development files on the target?
10.4. Why is there no documentation on the target?
10.5. Why are some packages not visible in the Buildroot config menu?
10.6. Why not use the target directory as a chroot directory?
10.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)?
10.8. How to speed-up the build process?
11. Known issues
12. Legal notice and licensing
12.1. Complying with open source licenses
12.2. License abbreviations
12.3. Complying with the Buildroot license
13. Beyond Buildroot
13.1. Boot the generated images
13.2. Chroot
III. Developer guide
14. How Buildroot works
15. Coding style
15.1. Config.in file
15.2. The .mk file
15.3. The documentation
16. Adding support for a particular board
17. Adding new packages to Buildroot
17.1. Package directory
17.2. Config files
17.3. The .mk file
17.4. The .hash file
17.5. Infrastructure for packages with specific build systems
17.6. Infrastructure for autotools-based packages
17.7. Infrastructure for CMake-based packages
17.8. Infrastructure for Python packages
17.9. Infrastructure for LuaRocks-based packages
17.10. Infrastructure for Perl/CPAN packages
17.11. Infrastructure for virtual packages
17.12. Infrastructure for packages using kconfig for configuration files
17.13. Infrastructure for rebar-based packages
17.14. Infrastructure for packages building kernel modules
17.15. Infrastructure for asciidoc documents
17.16. Infrastructure specific to the Linux kernel package
17.17. Hooks available in the various build steps
17.18. Gettext integration and interaction with packages
17.19. Tips and tricks
17.20. Conclusion
18. Patching a package
18.1. Providing patches
18.2. How patches are applied
18.3. Format and licensing of the package patches
18.4. Integrating patches found on the Web
19. Download infrastructure
20. Debugging Buildroot
21. Contributing to Buildroot
21.1. Reproducing, analyzing and fixing bugs
21.2. Analyzing and fixing autobuild failures
21.3. Reviewing and testing patches
21.4. Work on items from the TODO list
21.5. Submitting patches
21.6. Reporting issues/bugs or getting help
IV. Appendix
22. Makedev syntax documentation
23. Makeusers syntax documentation
24. List of target packages available in Buildroot
25. List of virtual packages
26. List of host utilities available in Buildroot
27. Deprecated features

Buildroot 2016.08.1 manual generated on 2016-09-21 -20:56:58 UTC from git revision b1001ac

The Buildroot manual is written by the Buildroot developers. +The Buildroot user manual

The Buildroot user manual


Table of Contents

I. Getting started
1. About Buildroot
2. System requirements
2.1. Mandatory packages
2.2. Optional packages
3. Getting Buildroot
4. Buildroot quick start
5. Community resources
II. User guide
6. Buildroot configuration
6.1. Cross-compilation toolchain
6.2. /dev management
6.3. init system
7. Configuration of other components
8. General Buildroot usage
8.1. make tips
8.2. Understanding when a full rebuild is necessary
8.3. Understanding how to rebuild packages
8.4. Offline builds
8.5. Building out-of-tree
8.6. Environment variables
8.7. Dealing efficiently with filesystem images
8.8. Graphing the dependencies between packages
8.9. Graphing the build duration
8.10. Graphing the filesystem size contribution of packages
8.11. Integration with Eclipse
8.12. Advanced usage
9. Project-specific customization
9.1. Recommended directory structure
9.2. Keeping customizations outside of Buildroot
9.3. Storing the Buildroot configuration
9.4. Storing the configuration of other components
9.5. Customizing the generated target filesystem
9.6. Adding custom user accounts
9.7. Customization after the images have been created
9.8. Adding project-specific patches
9.9. Adding project-specific packages
9.10. Quick guide to storing your project-specific customizations
10. Frequently Asked Questions & Troubleshooting
10.1. The boot hangs after Starting network…
10.2. Why is there no compiler on the target?
10.3. Why are there no development files on the target?
10.4. Why is there no documentation on the target?
10.5. Why are some packages not visible in the Buildroot config menu?
10.6. Why not use the target directory as a chroot directory?
10.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)?
10.8. How to speed-up the build process?
11. Known issues
12. Legal notice and licensing
12.1. Complying with open source licenses
12.2. License abbreviations
12.3. Complying with the Buildroot license
13. Beyond Buildroot
13.1. Boot the generated images
13.2. Chroot
III. Developer guide
14. How Buildroot works
15. Coding style
15.1. Config.in file
15.2. The .mk file
15.3. The documentation
16. Adding support for a particular board
17. Adding new packages to Buildroot
17.1. Package directory
17.2. Config files
17.3. The .mk file
17.4. The .hash file
17.5. Infrastructure for packages with specific build systems
17.6. Infrastructure for autotools-based packages
17.7. Infrastructure for CMake-based packages
17.8. Infrastructure for Python packages
17.9. Infrastructure for LuaRocks-based packages
17.10. Infrastructure for Perl/CPAN packages
17.11. Infrastructure for virtual packages
17.12. Infrastructure for packages using kconfig for configuration files
17.13. Infrastructure for rebar-based packages
17.14. Infrastructure for Waf-based packages
17.15. Infrastructure for packages building kernel modules
17.16. Infrastructure for asciidoc documents
17.17. Infrastructure specific to the Linux kernel package
17.18. Hooks available in the various build steps
17.19. Gettext integration and interaction with packages
17.20. Tips and tricks
17.21. Conclusion
18. Patching a package
18.1. Providing patches
18.2. How patches are applied
18.3. Format and licensing of the package patches
18.4. Integrating patches found on the Web
19. Download infrastructure
20. Debugging Buildroot
21. Contributing to Buildroot
21.1. Reproducing, analyzing and fixing bugs
21.2. Analyzing and fixing autobuild failures
21.3. Reviewing and testing patches
21.4. Work on items from the TODO list
21.5. Submitting patches
21.6. Reporting issues/bugs or getting help
22. DEVELOPERS file and get-developers
IV. Appendix
23. Makedev syntax documentation
24. Makeusers syntax documentation
25. Converting old br2-external trees

Buildroot 2017.02 manual generated on 2017-02-28 +21:03:45 UTC from git revision 083c0735e

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

Copyright © 2004-2014 The Buildroot developers

logo.png

Part I. Getting started

Chapter 1. About Buildroot

Buildroot is a tool that simplifies and automates the process of +sources for the full text of this license.

Copyright © 2004-2017 The Buildroot developers

logo.png

Part I. Getting started

Chapter 1. About Buildroot

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

In order to achieve this, Buildroot is able to generate a cross-compilation toolchain, a root filesystem, a Linux kernel image @@ -16,8 +16,8 @@ processors everyone is used to having in his PC. They can be PowerPC processors, MIPS processors, ARM processors, etc.

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



[1] BSP: Board Support Package

[2] SDK: Software Development Kit

Chapter 2. System requirements

Buildroot is designed to run on Linux systems.

While Buildroot itself will build most host packages it needs for the +or develop their BSP [1] or +SDK [2] on top of Buildroot.



[1] BSP: Board Support Package

[2] SDK: Software Development Kit

Chapter 2. System requirements

Buildroot is designed to run on Linux systems.

While Buildroot itself will build most host packages it needs for the compilation, certain standard Linux utilities are expected to be already installed on the host system. Below you will find an overview of the mandatory and optional packages (note that package names may vary @@ -57,6 +57,10 @@ Build tools: unzip

  • rsync +
  • +file (must be in /usr/bin/file) +
  • +bc
  • Source fetching tools:

    • @@ -260,7 +264,7 @@ code for your system. It consists of a compiler (in our case, ) and a C standard library (for example GNU Libc, -uClibc).

      The system installed on your development station certainly already has +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 @@ -268,7 +272,7 @@ processor. Under most Linux systems, the compilation toolchain uses the GNU libc (glibc) as the C standard library. This compilation toolchain is called the "host compilation toolchain". The machine on which it is running, and on which you’re working, is called the "host -system" [3].

      The compilation toolchain is provided by your distribution, and +system" [3].

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

      As said above, the compilation toolchain that comes with your system @@ -291,7 +295,7 @@ chosen, a number of configuration options appear, they are detailed in the following sections.

      6.1.1. Internal toolchain backend

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

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

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

      • @@ -450,7 +454,7 @@ The first solution is Static using device tablesystem/device_table_dev.txt board/<yourcompany>/<yourproject>/device_table_dev.txt. For more details about the format of the device table file, see - Chapter 22, Makedev syntax documentation. + Chapter 23, Makedev syntax documentation.
      • The second solution is Dynamic using devtmpfs only. devtmpfs is a virtual filesystem inside the Linux kernel that has been @@ -547,7 +551,7 @@ The third solution is systemd. http://www.freedesktop.org/wiki/Software/systemd.

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



      [3] This terminology differs from what is used by GNU +systems. systemd can be used for more complex situations.



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

      Chapter 7. Configuration of other components

      Before attempting to modify any of the components below, make sure you have already configured Buildroot itself, and have enabled the @@ -749,8 +753,9 @@ to make or set in the environment:

      .config file; this - is the recommended way of setting it. + configuration interface, so through the Buildroot .config file. See + Section 8.12.4, “Location of downloaded packages†for more details on how you can set the download + directory.
    • BR2_GRAPH_ALT, if set and non-empty, to use an alternate color-scheme in build-time graphs @@ -962,7 +967,7 @@ relative paths in the object file. Therefore, for example, the debugger will no longer find the file, unless you cd to the output directory first.

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

    8.12.4. Location of downloaded packages

    The various tarballs that are downloaded by Buildroot are all stored +more details about this rewriting of absolute paths.

    8.12.4. Location of downloaded packages

    The various tarballs that are downloaded by Buildroot are all stored in BR2_DL_DIR, which by default is the dl directory. If you want to keep a complete version of Buildroot which is known to be working with the associated tarballs, you can make a copy of this directory. @@ -976,14 +981,14 @@ overridden. The following line should be added to <~/.b is overridden by the BR2_DL_DIR environment variable.

    8.12.5. Package-specific make targets

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

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

    make <package>-<target>

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

    command/target Description

    source

    Fetch the source (download the tarball, clone +this:

    make <package>-<target>

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

    command/target Description

    source

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

    depends

    Build and install all dependencies required to build the package

    extract

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

    patch

    Apply the patches, if any

    configure

    Run the configure commands, if any

    build

    Run the compilation commands

    install-staging

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

    install-target

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

    install

    target package: Run the 2 previous installation commands

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

    Additionally, there are some other useful make targets:

    command/target Description

    show-depends

    Displays the dependencies required to build the +directory

    Additionally, there are some other useful make targets:

    command/target Description

    show-depends

    Displays the dependencies required to build the package

    graph-depends

    Generate a dependency graph of the package, in the context of the current Buildroot configuration. See this section @@ -1082,7 +1087,8 @@ 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 BR2_EXTERNAL. Both options are valid, the choice is up to you.

    +-- board/
    +it using a br2-external tree. Both options are valid, the choice is up
    +to you.

    +-- board/
     |   +-- <company>/
     |       +-- <boardname>/
     |           +-- linux.config
    @@ -1104,8 +1110,8 @@ it using BR2_EXTERNAL. Both options are valid, the
     |
     +-- package/
     |   +-- <company>/
    -|       +-- Config.in (if not using BR2_EXTERNAL)
    -|       +-- <company>.mk (if not using BR2_EXTERNAL)
    +|       +-- Config.in (if not using a br2-external tree)
    +|       +-- <company>.mk (if not using a br2-external tree)
     |       +-- package1/
     |       |    +-- Config.in
     |       |    +-- package1.mk
    @@ -1113,9 +1119,9 @@ it using BR2_EXTERNAL. Both options are valid, the
     |           +-- Config.in
     |           +-- package2.mk
     |
    -+-- Config.in (if using BR2_EXTERNAL)
    -+-- external.mk (if using BR2_EXTERNAL)

    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 using BR2_EXTERNAL, the <company> and possibly <boardname> ++-- Config.in (if using a br2-external tree) ++-- external.mk (if using a br2-external tree)

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

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

    9.1.1. Implementing layered customizations

    It is quite common for a user to have several related projects that partly need the same customizations. Instead of duplicating these customizations for each project, it is recommended to use a layered @@ -1153,55 +1159,191 @@ 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. +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. This section - explains how to use BR2_EXTERNAL. -
  • BR2_EXTERNAL is an environment variable that can be used to point to -a directory that contains Buildroot customizations. It can be passed -to any Buildroot make invocation. It is automatically saved in the -hidden .br-external 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 BR2_EXTERNAL 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 -to the Buildroot output directory.

    Some examples:

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

    From now on, external definitions from the /path/to/foobar -directory will be used:

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

    We can switch to another external definitions directory at any time:

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

    Or disable the usage of external definitions:

    buildroot/ $ make BR2_EXTERNAL= xconfig

    BR2_EXTERNAL allows three different things:

    • -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 its - location. The BR2_EXTERNAL value is available within the - Buildroot configuration using $(BR2_EXTERNAL). As an example, one - could set the BR2_ROOTFS_OVERLAY Buildroot option to - $(BR2_EXTERNAL)/board/<boardname>/overlay/ (to specify a root - filesystem overlay), or the BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE - Buildroot option to - $(BR2_EXTERNAL)/board/<boardname>/kernel.config (to specify the - location of the kernel configuration file). -
    • -One can store package recipes (i.e. Config.in and - <packagename>.mk), or even custom configuration options and make - logic. Buildroot automatically includes $(BR2_EXTERNAL)/Config.in to - make it appear in the top-level configuration menu, and includes - $(BR2_EXTERNAL)/external.mk with the rest of the makefile logic. -

      Note. Providing Config.in and external.mk is mandatory, but they can be - empty.

      The main usage of this is to store package recipes. The recommended - way to do this is to write a $(BR2_EXTERNAL)/Config.in file that - looks like:

      source "$BR2_EXTERNAL/package/package1/Config.in"
      -source "$BR2_EXTERNAL/package/package2/Config.in"

      Then, have a $(BR2_EXTERNAL)/external.mk file that looks like:

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

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

    • -One can store Buildroot defconfigs in the configs subdirectory of - $(BR2_EXTERNAL). Buildroot will automatically show them in the - output of make list-defconfigs and allow them to be loaded with the - normal make <name>_defconfig command. They will be visible under the - User-provided configs' label in the make list-defconfigs output. -

    9.3. Storing the Buildroot configuration

    The Buildroot configuration can be stored using the command + 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 +Chapter 25, Converting old br2-external trees for help on doing so.

    Some examples:

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

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

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

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

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

    We can also use multiple br2-external trees:

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

    Or disable the usage of any br2-external tree:

    buildroot/ $ make BR2_EXTERNAL= xconfig

    9.2.1. Layout of a br2-external tree

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

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

    Apart from those mandatory files, there may be additional and optional +content that may be present in a br2-external tree, like the configs/ +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 Chapter 17, Adding new packages to Buildroot. +If you prefer, you can also group the packages in subdirectories +called <boardname> and adapt the above paths accordingly.

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

    The configs/ directory

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

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

    Free-form content

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

    BR2_GLOBAL_PATCH_DIR=$(BR2_EXTERNAL_BAR_42_PATH)/patches/
    +BR2_ROOTFS_OVERLAY=$(BR2_EXTERNAL_BAR_42_PATH)/board/<boardname>/overlay/
    +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(BR2_EXTERNAL_BAR_42_FOO)/board/<boardname>/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_FOO)/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

    9.3. Storing the Buildroot configuration

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

    This strips the Buildroot configuration down by removing configuration options that are at their default value. The result is stored in a file called defconfig. If you want to save it in another place, change the @@ -1339,8 +1481,8 @@ such changes from there unless you use an explicit fakeroot from the post-build script.

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

    If you are using a static device table (i.e. not using devtmpfs, +the makedev syntax +Chapter 23, Makedev syntax documentation.

    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 @@ -1352,8 +1494,8 @@ related to a specific application, you should set variables To cover this requirement, Buildroot provides support for so-called users tables. To use this feature, set config option BR2_ROOTFS_USERS_TABLES to a space-separated list of users tables, -regular text files following the makeusers syntax -Chapter 23, Makeusers syntax documentation.

    As shown in Section 9.1, “Recommended directory structureâ€, the recommended location for +regular text files following the makeusers syntax +Chapter 24, Makeusers syntax documentation.

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

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

    9.7. Customization after the images have been created

    While post-build scripts (Section 9.5, “Customizing the generated target filesystemâ€) are run before @@ -1426,8 +1568,9 @@ project may need some proprietary packages that cannot be upstreamed. This section will explain how you can keep such project-specific packages in a project-specific directory.

    As shown in Section 9.1, “Recommended directory structureâ€, the recommended location for project-specific packages is package/<company>/. If you are using the -BR2_EXTERNAL feature (see Section 9.2, “Keeping customizations outside of Buildrootâ€) the recommended -location is $(BR2_EXTERNAL)/package/.

    However, Buildroot will not be aware of the packages in this location, +br2-external tree feature (see Section 9.2, “Keeping customizations outside of Buildrootâ€) the recommended +location is to put them in a sub-directory named package/ in your +br2-external tree.

    However, Buildroot will not be aware of the packages in this location, unless we perform some additional steps. As explained in Chapter 17, Adding new packages to Buildroot, a package in Buildroot basically consists of two files: a .mk file (describing how to build the package) and a @@ -1439,18 +1582,14 @@ deeper subdirectories (like package/<company>/packag simply have to add a .mk file in a first-level subdirectory that includes these additional .mk files. Therefore, create a file package/<company>/<company>.mk with following contents (assuming you -have only one extra directory level below package/<company>/):

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

    If you are using BR2_EXTERNAL, create a file -$(BR2_EXTERNAL)/external.mk with following contents (again assuming only -one extra level):

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

    For the Config.in files, create a file package/<company>/Config.in +have only one extra directory level below package/<company>/):

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

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

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

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

    If you are using BR2_EXTERNAL, create a file -$(BR2_EXTERNAL)/Config.in with similar contents:

    source "$BR2_EXTERNAL/package/package1/Config.in"
    -source "$BR2_EXTERNAL/package/package2/Config.in"

    You do not have to add an include for this $(BR2_EXTERNAL)/Config.in -file as it is included automatically.

    9.10. Quick guide to storing your project-specific customizations

    Earlier in this chapter, the different methods for making +merges with future Buildroot versions easier.

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

    9.10. Quick guide to storing your project-specific customizations

    Earlier in this chapter, the different methods for making project-specific customizations have been described. This section will now summarize all this by providing step-by-step instructions to storing your project-specific customizations. Clearly, the steps that are not relevant to @@ -1798,7 +1937,15 @@ 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.

    12.2. License abbreviations

    Here is a list of the licenses that are most widely used by packages in +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.

    12.2. License abbreviations

    Here is a list of the licenses that are most widely used by packages in Buildroot, with the name used in the manifest files:

    • AGPLv3: @@ -2073,7 +2220,7 @@ applications) can be integrated into Buildroot. It also shows how existing packages are integrated, which is needed for fixing issues or tuning their configuration.

      17.1. Package directory

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

      Some packages have been grouped by topic in a sub-directory: -x11r7, efl and matchbox. If your package fits in +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.

      17.2. Config files

      For the package to be displayed in the configuration tool, you need to create a Config file in your package directory. There are two types: @@ -2343,8 +2490,7 @@ toolchain options. The general format is:

      foo needs a Lin
       kernel, use this format:

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

      17.2.6. Dependencies on udev /dev management

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

      foo needs udev /dev management

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

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

      17.2.7. Dependencies on features provided by virtual packages

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

      See Section 17.11, “Infrastructure for virtual packages†for more on the virtual packages.

      See Chapter 25, List of virtual packages for the symbols to depend on if your package -depends on a feature provided by a virtual package.

    17.3. The .mk file

    Finally, here’s the hardest part. Create a file named libfoo.mk. It +openGL libraries.

    See Section 17.11, “Infrastructure for virtual packages†for more on the virtual packages.

    17.3. The .mk file

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

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

    • @@ -2527,7 +2673,7 @@ flags. The argument to be given to LIBFOO_CONFIG_SCRIPTS is the file name(s) of the shell script(s) needing fixing. All these names are relative to $(STAGING_DIR)/usr/bin and if needed multiple names can be given.

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

      Example 17.1. Config script: divine package

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

      So its fixup would be:

      DIVINE_CONFIG_SCRIPTS = divine-config

      Example 17.2. Config script: imagemagick package:

      Package imagemagick installs the following scripts: +from $(TARGET_DIR)/usr/bin, since they are not needed on the target.

      Example 17.1. Config script: divine package

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

      So its fixup would be:

      DIVINE_CONFIG_SCRIPTS = divine-config

      Example 17.2. Config script: imagemagick package:

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

      So it’s fixup would be:

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

      On line 14, we specify the list of dependencies this package relies @@ -2611,7 +2757,7 @@ information is (assuming the package name is libfoo and Bazaar are supported URL types for retrieving packages directly from source code management systems. There is a helper function to make it easier to download source tarballs from GitHub (refer to - Section 17.19.2, “How to add a package from GitHub†for details). A filesystem path may be used + Section 17.20.2, “How to add a package from GitHub†for details). A filesystem path may be used to specify either a tarball or a directory containing the package source code. See LIBFOO_SITE_METHOD below for more details on how retrieval works. @@ -2628,6 +2774,13 @@ information is (assuming the package name is libfoo 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 @@ -2697,11 +2850,12 @@ information is (assuming the package name is libfoo the package source code. Buildroot copies the contents of the source directory into the package’s build directory.
  • -LIBFOO_GIT_SUBMODULES, when LIBFOO_SITE_METHOD=git, will create - an archive with the git submodules in the repository. - Note that we try not to use such git submodules when they contain - bundled libraries, in which case we prefer to use those libraries - from their own package. +LIBFOO_GIT_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. @@ -2760,17 +2914,17 @@ information is (assuming the package name is libfoo LIBFOO_DEVICES lists the device files to be created by Buildroot when using the static device table. The syntax to use is the makedevs one. You can find some documentation for this syntax in the - Chapter 22, Makedev syntax documentation. This variable is optional. + Chapter 23, Makedev syntax documentation. This variable is optional.
  • LIBFOO_PERMISSIONS lists the changes of permissions to be done at the end of the build process. The syntax is once again the makedevs one. - You can find some documentation for this syntax in the Chapter 22, Makedev syntax documentation. + You can find some documentation for this syntax in the Chapter 23, Makedev syntax documentation. This variable is optional.
  • LIBFOO_USERS lists the users to create for this package, if it installs a program you want to run as a specific user (e.g. as a daemon, or as a cron-job). The syntax is similar in spirit to the makedevs one, and is - described in the Chapter 23, Makeusers syntax documentation. This variable is optional. + described in the Chapter 24, Makeusers syntax documentation. This variable is optional.
  • LIBFOO_LICENSE defines the license (or licenses) under which the package is released. @@ -2895,8 +3049,8 @@ different steps of the build process.

      • -$(FOO_PKGDIR) contains the path to the directory containing the - foo.mk and Config.in files. This variable is useful when it is +$(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…
      • @@ -2910,7 +3064,7 @@ endef

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

      • Of course the $(HOST_DIR), $(STAGING_DIR) and $(TARGET_DIR) variables to install the packages properly. -

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

  • 17.6. Infrastructure for autotools-based packages

    17.6.1. autotools-package tutorial

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

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

    17.6. Infrastructure for autotools-based packages

    17.6.1. autotools-package tutorial

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

    01: ################################################################################
     02: #
     03: # libfoo
    @@ -3035,7 +3189,7 @@ and install the packages are already defined, and they generally work
     well for most autotools-based packages. However, when required, it is
     still possible to customize what is done in any particular step:

    • By adding a post-operation hook (after extract, patch, configure, - build or install). See Section 17.17, “Hooks available in the various build steps†for details. + build or install). See Section 17.18, “Hooks available in the various build steps†for details.
    • By overriding one of the steps. For example, even if the autotools infrastructure is used, if the package .mk file defines its @@ -3151,7 +3305,7 @@ install the packages are already defined, and they generally work well for most CMake-based packages. However, when required, it is still possible to customize what is done in any particular step:

      • By adding a post-operation hook (after extract, patch, configure, - build or install). See Section 17.17, “Hooks available in the various build steps†for details. + build or install). See Section 17.18, “Hooks available in the various build steps†for details.
      • By overriding one of the steps. For example, even if the CMake infrastructure is used, if the package .mk file defines its own @@ -3262,7 +3416,7 @@ install the packages are already defined, and they generally work well for most Python-based packages. However, when required, it is still possible to customize what is done in any particular step:

        • By adding a post-operation hook (after extract, patch, configure, - build or install). See Section 17.17, “Hooks available in the various build steps†for details. + build or install). See Section 17.18, “Hooks available in the various build steps†for details.
        • By overriding one of the steps. For example, even if the Python infrastructure is used, if the package .mk file defines its own @@ -3273,7 +3427,7 @@ By overriding one of the steps. For example, even if the Python package is available on PyPI, you may want to use the scanpypi tool located in support/scripts to automate the process.

          You can find the list of existing PyPI packages here.

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

          When at the root of your buildroot directory just do :

          ./support/script/scanpypi foo bar -o package

          This will generate packages python-foo and python-bar in the package +your host.

          When at the root of your buildroot directory just do :

          ./support/scripts/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 @@ -3281,8 +3435,8 @@ 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:

          ./support/script/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:

          ./support/script/scanpypi -h

        17.8.4. python-package CFFI backend

        C Foreign Function Interface for Python (CFFI) provides a convenient +a br2-external tree, use the -o flag as follows:

        ./support/scripts/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:

        ./support/scripts/scanpypi -h

        17.8.4. python-package CFFI backend

        C Foreign Function Interface for Python (CFFI) provides a convenient and reliable way to call compiled C code from Python using interface declarations written in C. Python packages relying on this backend can be identified by the appearance of a cffi dependency in the @@ -3380,7 +3534,7 @@ 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 supports/scripts/scancpan Foo-Bar in the Buildroot directory -(or in the BR2_EXTERNAL 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 @@ -3394,8 +3548,8 @@ The package/Config.in file has to be updated manual the required source "…" statements, sorted alphabetically.

    17.10.2. perl-package reference

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

    This infrastructure handles various Perl build systems : -ExtUtils-MakeMaker, Module-Build and Module-Build-Tiny. -Build.PL is always preferred when a package provides a Makefile.PL +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 @@ -3412,6 +3566,13 @@ 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. @@ -3467,12 +3628,10 @@ functionalities of something-virtual, sho 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.

    See Chapter 25, List of virtual packages for the symbols to select if you implement -a new provider for an existing virtual package.

    17.11.5. Provider’s .mk file

    The .mk file should also declare an additional variable +provider, but only if it is selected.

    17.11.5. Provider’s .mk file

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

    01: SOME_PROVIDER_PROVIDES = something-virtual

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

    See Chapter 25, List of virtual packages for the names of virtual packages to provide -if you implement a new provider for an existing virtual package.

    17.11.6. Notes on depending on a virtual package

    When adding a package that requires a certain FEATURE provided by a virtual +this package!

    17.11.6. Notes on depending on a virtual package

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

    config BR2_PACKAGE_HAS_FEATURE
         bool
     
    @@ -3548,6 +3707,12 @@ be set to suit the needs of the package under consideration:

    +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.

    17.13. Infrastructure for rebar-based packages

    17.13.1. rebar-package tutorial

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

    01: ################################################################################
     02: #
    @@ -3600,7 +3765,7 @@ 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:

    17.14. Infrastructure for packages building kernel modules

    Buildroot offers a helper infrastructure to make it easy to write packages that +

    17.14. Infrastructure for Waf-based packages

    17.14.1. waf-package tutorial

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

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

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

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

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

    On line 11, we tell Buildroot the 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.

    17.14.2. waf-package reference

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

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

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

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

    • +LIBFOO_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 Buidlroot 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. +

    17.15. 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.

    17.14.1. kernel-module tutorial

    Let’s start with an example on how to prepare a simple package that only +modules. Buildroot’s helper infrastructure supports either case.

    17.15.1. kernel-module tutorial

    Let’s start with an example on how to prepare a simple package that only builds a kernel module, and no other component:

    01: ################################################################################
     02: #
     03: # foo
    @@ -3664,7 +3878,7 @@ not sufficient; another package infrastructure must
     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).

    17.14.2. kernel-module reference

    The main macro for the kernel module infrastructure is kernel-module. +when building the module(s).

    17.15.2. kernel-module reference

    The main macro for the kernel module infrastructure is kernel-module. Unlike other package infrastructures, it is not stand-alone, and requires any of the other *-package macros be called after it.

    The kernel-module macro defines post-build and post-target-install hooks to build the kernel modules. If the package’s .mk needs access @@ -3700,7 +3914,7 @@ configure the build of the kernel module:

    • KERNEL_ARCH contains the name of the current architecture, like arm, mips… -

    17.15. Infrastructure for asciidoc documents

    The Buildroot manual, which you are currently reading, is entirely written +

    17.16. Infrastructure for asciidoc documents

    The Buildroot manual, which you are currently reading, is entirely written using the AsciiDoc mark-up syntax. The manual is then rendered to many formats:

    • html @@ -3714,11 +3928,11 @@ 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 -BR2_EXTERNAL -Section 9.2, “Keeping customizations outside of Buildrootâ€. 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.

    17.15.1. asciidoc-document tutorial

    Whereas package infrastructures are suffixed with -package, the document +AsciiDoc syntax.

    Also as for packages, the AsciiDoc infrastructure is available from a +br2-external tree +Section 9.2, “Keeping customizations outside of Buildrootâ€. 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.

    17.16.1. asciidoc-document tutorial

    Whereas package infrastructures are suffixed with -package, the document infrastructures are suffixed with -document. So, the AsciiDoc infrastructure is named asciidoc-document.

    Here is an example to render a simple AsciiDoc document.

    01: ################################################################################
     02: #
    @@ -3732,14 +3946,19 @@ 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.

    17.15.2. asciidoc-document reference

    The list of variables that can be set in a .mk file to give metadata +the Makefile code necessary to render the document.

    17.16.2. asciidoc-document reference

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

    • FOO_SOURCES, mandatory, defines the source files for the document.
    • FOO_RESOURCES, optional, may contain a space-separated list of paths to one or more directories containing so-called resources (like CSS or images). By default, empty. -

    There are also additional hooks (see Section 17.17, “Hooks available in the various build steps†for general information +

  • +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 Section 17.18, “Hooks available in the various build steps†for general information on hooks), that a document may set to define extra actions to be done at various steps:

    • FOO_POST_RSYNC_HOOKS to run additional commands after the sources @@ -3786,26 +4005,26 @@ various steps:

        17.16. 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.

        17.16.1. linux-kernel-tools

        Buildroot offers a helper infrastructure to build some userspace tools +31: $(eval $(call asciidoc-document))

      17.17. 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.

      17.17.1. linux-kernel-tools

      Buildroot offers a helper infrastructure to build some userspace tools for the target available within the Linux kernel sources. Since their -source code is part of the kernel source code, it is not very -practical to use separate packages for them as they often need to be -built with the same kernel version as the kernel being used on the -target. The small Linux kernel tools infrastructure is a simplified -packaging mechanism based on the generic package infrastructure to -help building those tools.

      Let’s look at an example of a Linux tool. For a new Linux tool named +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 -linux/Config.tools.in. This file will contain the option +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_LINUX_KERNEL_TOOL_FOO
      +displayed in the configuration tool. It would basically look like:

      01: config BR2_PACKAGE_LINUX_TOOLS_FOO
       02:     bool "foo"
      -03:     help
      -04:       This is a comment that explains what foo kernel tool is.
      -05:
      -06:       http://foosoftware.org/foo/

      The name of the option starts with the prefix BR2_LINUX_KERNEL_TOOL_, -followed by the uppercase name of the tool (like is done for packages).

      Then for each linux tool, add a new .mk file named linux/linux-tool-foo.mk. -It would basically look like:

      01: ################################################################################
      +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 file named +package/linux-tools/linux-tool-foo.mk. It would basically look like:

      01: ################################################################################
       02: #
       03: # foo
       04: #
      @@ -3816,18 +4035,18 @@ It would basically look like:

      01: #######################
       09: FOO_DEPENDENCIES = libbbb
       10:
       11: define FOO_BUILD_CMDS
      -12:     $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/tools foo
      +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 $(@D)/tools \
      +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 $(@D)/tools \
      -23:             DESTDIR=$(@D) \
      +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 @@ -3839,7 +4058,7 @@ different steps of the Linux tool build process like for a 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 package.

      17.16.2. linux-kernel-extensions

      Some packages provide new features that require the Linux kernel tree +they are part of the linux-tools package.

      17.17.2. linux-kernel-extensions

      Some packages provide new features that require the Linux kernel tree to be modified. This can be in the form of patches to be applied on the kernel tree, or in the form of new files to be added to the tree. The Buildroot’s Linux kernel extensions infrastructure provides @@ -3877,7 +4096,7 @@ use the variables defined by the foo package, like: $(FOO_VERSION)… as well as all the Linux variables, like: $(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)… See the definition of those kernel variables -Section 17.14.2, “kernel-module referenceâ€.

      17.17. Hooks available in the various build steps

      The generic infrastructure (and as a result also the derived autotools +Section 17.15.2, “kernel-module referenceâ€.

    17.18. 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 @@ -3933,7 +4152,7 @@ registered at a given hook point. Here is an example:

    def
             action2
     endef
     
    -LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP

    17.17.1. Using the POST_RSYNC hook

    The POST_RSYNC hook is run only for packages that use a local source, +LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP

    17.18.1. Using the POST_RSYNC hook

    The POST_RSYNC hook is run only for packages that use a local source, either through the local site method or the OVERRIDE_SRCDIR mechanism. In this case, package sources are copied using rsync from the local location into the buildroot build directory. The rsync @@ -3948,10 +4167,10 @@ others, use the following variables:

      $(SRCDIR): the path to the overridden source directory
    • $(@D): the path to the build directory -

    17.17.2. Target-finalize hook

    Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. +

    17.18.2. Target-finalize hook

    Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. These hooks are run after all packages are built, but before the filesystem images are generated. They are seldom used, and your -package probably do not need them.

    17.18. Gettext integration and interaction with packages

    Many packages that support internationalization use the gettext +package probably do not need them.

    17.19. 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 uClibc C library doesn’t implement gettext functionality; therefore with this C library, a separate gettext must be compiled, @@ -3990,7 +4209,7 @@ use select BR2_PACKAGE_GETTEXT in their

  • not add any gettext dependency in the DEPENDENCIES variable of their .mk file. -
  • 17.19. Tips and tricks

    17.19.1. Package name, config entry name and makefile variable relationship

    In Buildroot, there is some relationship between:

    • +

    17.20. Tips and tricks

    17.20.1. Package name, config entry name and makefile variable relationship

    In Buildroot, there is some relationship between:

    • the package name, which is the package directory name (and the name of the *.mk file);
    • @@ -4012,7 +4231,7 @@ the config entry is the upper case package name< the *.mk file variable prefix is the upper case package name with . and - characters substituted with _ (e.g.: FOO_BAR_BOO_VERSION). -

    17.19.2. How to add a package from GitHub

    Packages on GitHub often don’t have a download area with release tarballs. +

    17.20.2. 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
    @@ -4039,7 +4258,7 @@ If it looks like the image above then it was uploaded by the
     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.
    -

    17.20. Conclusion

    As you can see, adding a software package to Buildroot is simply a +

    17.21. 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 @@ -4354,12 +4573,20 @@ 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.

    21.5.2. Preparing a patch series

    Starting from the changes committed in your local git view, rebase +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 a separate +patch of the series. See the DEVELOPERS file +Chapter 22, DEVELOPERS file and get-developers for more +information.

    21.5.2. Preparing a patch series

    Starting from the changes committed in your local git view, rebase your development branch on top of the upstream tree before generating a patch set. To do so, run:

    $ git fetch --all --tags
     $ git rebase origin/master

    Now, 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.

    Lastly, send/submit your patch set to the Buildroot mailing list:

    $ git send-email --to buildroot@buildroot.org outgoing/*

    Note that git should be configured to use your mail account. +before submitting them, using your favorite text editor.

    Buildroot provides a handy tool to know to whom your patches should be +sent, called get-developers (see Chapter 22, DEVELOPERS file and get-developers for more +information). This tool reads your patches and outputs the appropriate +git send-email command to use:

    $ ./support/scripts/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/*

    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.

    21.5.3. Cover letter

    If you want to present the whole patch set in a separate mail, add @@ -4371,7 +4598,7 @@ large number of commits in the series;

  • deep impact of the changes in the rest of the project;
  • -RFC [4]; +RFC [4];
  • whenever you feel it will help presenting your work, your choices, the review process, etc. @@ -4453,11 +4680,43 @@ 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/



  • [4] RFC: (Request for comments) change proposal

    Part IV. Appendix

    Chapter 22. Makedev syntax documentation

    The makedev syntax is used in several places in Buildroot to +- http://code.bulix.org/



    [4] RFC: (Request for comments) change proposal

    Chapter 22. 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-developer tool allows to:

    • +Calculate the list of developers to whom patches should be sent, by + parsing the patches and matching the modified files with the + relevant developers. See Section 21.5, “Submitting patches†for details. +
    • +Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs on + this architecture or package. This is done in interaction with + Buildroot’s autobuild infrastructure. +

    We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the DEVELOPERS +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the +DEVELOPERS file.

    The DEVELOPERS file format is documented in detail inside the file +itself.

    The get-developer tool, located in support/scripts allows to use +the DEVELOPERS file for various tasks:

    • +When passing one or several patches as command line argument, + get-developer will return the appropriate git send-email + command. +
    • +When using the -a <arch> command line option, get-developer will + return the list of developers in charge of the given architecture. +
    • +When using the -p <package> command line option, get-developer + will return the list of developers in charge of the given package. +
    • +When using the -c command line option, get-developer 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. +

    Part IV. Appendix

    Chapter 23. 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:

    • +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: @@ -4499,7 +4758,7 @@ and the corresponding 15 files for the partitions, you will need for 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

        • +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 @@ -4509,9 +4768,9 @@ you will write :

            /usr/bin/foo f 755 root root - - - - -
             If you want to add the capability cap_sys_admin and cap_net_admin to the
             binary foo, you will write :

            /usr/bin/foo f 755 root root - - - - -
             |xattr cap_sys_admin+eip
            -|xattr cap_net_admin+eip

          Chapter 23. Makeusers syntax documentation

          The syntax to create users is inspired by the makedev syntax, above, but +|xattr cap_net_admin+eip

          Chapter 24. 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:

          • +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. @@ -4591,12 +4850,17 @@ main group gid is computed by Buildroot, and will u test is not a member of any additional groups
            • comment is: Test user -

          Chapter 24. List of target packages available in Buildroot

          Packages Target packages → …

          4th

          → Interpreter languages and scripting

          a10disp

          → Hardware handling

          acl

          → System tools

          acpica

          → Hardware handling

          acpid

          → Hardware handling

          acpitool

          → Hardware handling

          acsccid

          → Libraries → Hardware handling

          adwaita icon theme

          → Fonts, cursors, icons, sounds and themes

          aer-inject

          → Hardware handling

          aespipe

          → Miscellaneous

          agent++

          → Libraries → Networking

          aiccu

          → Networking applications

          aircrack-ng

          → Networking applications

          alljoyn

          → Libraries → Networking

          alljoyn-base

          → Libraries → Networking

          alljoyn-tcl

          → Libraries → Networking

          alljoyn-tcl-base

          → Libraries → Networking

          alsa-lib

          → Libraries → Audio/Sound

          alsa-utils

          → Audio and video applications

          alsamixergui

          → Graphic libraries and applications (graphic/text)

          am335x-pru-package

          → Hardware handling

          am33x-cm3

          → Hardware handling → Firmware

          android-tools

          → System tools

          angularjs

          → Libraries → Javascript

          apache

          → Networking applications

          apitrace

          → Graphic libraries and applications (graphic/text)

          applewmproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          appres

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          apr

          → Libraries → Other

          apr-util

          → Libraries → Other

          argp-standalone

          → Libraries → Other

          argparse

          → Interpreter languages and scripting → Lua libraries/modules

          argus

          → Networking applications

          armadillo

          → Libraries → Other

          arptables

          → Networking applications

          assimp

          → Libraries → Graphics

          at

          → Shell and utilities

          atf

          → Libraries → Other

          atftp

          → Networking applications

          atk

          → Libraries → Graphics

          atkmm

          → Libraries → Graphics

          attr

          → System tools

          audiofile

          → Libraries → Audio/Sound

          audit

          → System tools

          aumix

          → Audio and video applications

          autofs

          → Filesystem and flash utilities

          autossh

          → Networking applications

          avahi

          → Networking applications

          avrdude

          → Hardware handling

          axel

          → Networking applications

          b43-firmware

          → Hardware handling → Firmware

          babeld

          → Networking applications

          bandwidthd

          → Networking applications

          bash

          → Shell and utilities

          batctl

          → Networking applications

          batman-adv

          → Libraries → Networking

          bc

          → Miscellaneous

          bcache tools

          → Hardware handling

          bcm2835

          → Libraries → Hardware handling

          bcusdk

          → Networking applications

          bdftopcf

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          bdwgc

          → Libraries → Other

          beecrypt

          → Libraries → Crypto

          beforelight

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          bellagio

          → Audio and video applications

          benejson

          → Libraries → JSON/XML

          berkeleydb

          → Libraries → Database

          bigreqsproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          bind

          → Networking applications

          binutils

          → Development tools

          biosdevname

          → Hardware handling

          bitmap

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          bitstream

          → Libraries → Multimedia

          Bitstream Vera

          → Fonts, cursors, icons, sounds and themes

          blktrace

          → Debugging, profiling and benchmark

          bluez-utils

          → Networking applications

          bluez-utils 5.x

          → Networking applications

          bmon

          → Networking applications

          boa

          → Networking applications

          bonnie++

          → Debugging, profiling and benchmark

          boost

          → Libraries → Other

          bootstrap

          → Libraries → Javascript

          bootutils

          → System tools

          botan

          → Libraries → Crypto

          bridge-utils

          → Networking applications

          bsdiff

          → Development tools

          btrfs-progs

          → Filesystem and flash utilities

          bullet

          → Libraries → Graphics

          bustle

          → Development tools

          BusyBox

          bwm-ng

          → Networking applications

          bzip2

          → Compressors and decompressors

          c-ares

          → Libraries → Networking

          c-icap

          → Networking applications

          c-icap-modules

          → Networking applications

          c-periphery

          → Libraries → Hardware handling

          CA Certificates

          → Libraries → Crypto

          cache-calibrator

          → Debugging, profiling and benchmark

          cairo

          → Libraries → Graphics

          cairomm

          → Libraries → Graphics

          can-utils

          → Networking applications

          canfestival

          → Libraries → Networking

          cannelloni

          → Networking applications

          cantarell

          → Fonts, cursors, icons, sounds and themes

          cblas/clapack

          → Libraries → Other

          cc-tool

          → Hardware handling

          ccid

          → Libraries → Hardware handling

          ccrypt

          → Shell and utilities

          cdrkit

          → Hardware handling

          cegui06

          → Graphic libraries and applications (graphic/text)

          celt051

          → Libraries → Audio/Sound

          cgic

          → Libraries → Networking

          cgilua

          → Interpreter languages and scripting → Lua libraries/modules

          cgroupfs-mount

          → System tools

          check

          → Development tools

          chocolate-doom

          → Games

          chrony

          → Networking applications

          cifs-utils

          → Filesystem and flash utilities

          circus

          → System tools

          civetweb

          → Networking applications

          cJSON

          → Libraries → JSON/XML

          clamav

          → Miscellaneous

          classpath

          → Libraries → Other

          collectd

          → Miscellaneous

          comix-cursors

          → Fonts, cursors, icons, sounds and themes

          compositeproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          connman

          → Networking applications

          connman-gtk

          → Networking applications

          conntrack-tools

          → Networking applications

          copas

          → Interpreter languages and scripting → Lua libraries/modules

          coreutils

          → System tools

          cosmo

          → Interpreter languages and scripting → Lua libraries/modules

          coxpcall

          → Interpreter languages and scripting → Lua libraries/modules

          cpio

          → Filesystem and flash utilities

          cppcms

          → Libraries → Other

          cppdb

          → Libraries → Database

          cppunit

          → Development tools

          cppzmq

          → Libraries → Networking

          cpuload

          → System tools

          cramfs

          → Filesystem and flash utilities

          crda

          → Networking applications

          crudini

          → Shell and utilities

          cryptodev-linux

          → Libraries → Crypto → cryptodev variant

          cryptsetup

          → Hardware handling

          ctorrent

          → Networking applications

          cups

          → Networking applications

          curlftpfs (FUSE)

          → Filesystem and flash utilities

          cvs

          → Development tools

          cwiid

          → Hardware handling

          cxxtest

          → Development tools

          czmq

          → Libraries → Networking

          dado

          → Interpreter languages and scripting → Lua libraries/modules

          damageproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          dante

          → Networking applications

          dash

          → Shell and utilities

          dawgdic

          → Libraries → Other

          dbus

          → Hardware handling

          dbus-c++

          → Hardware handling

          dbus-glib

          → Hardware handling

          dbus-python

          → Hardware handling

          dbus-triggerd

          → Hardware handling

          dcron

          → System tools

          debianutils

          → System tools

          Declarative module

          → Graphic libraries and applications (graphic/text)

          DejaVu fonts

          → Fonts, cursors, icons, sounds and themes

          devmem2

          → Hardware handling

          dhcp (ISC)

          → Networking applications

          dhcpcd

          → Networking applications

          dhcpdump

          → Networking applications

          dhrystone

          → Debugging, profiling and benchmark

          dialog

          → Shell and utilities

          diffutils

          → Development tools

          dillo

          → Graphic libraries and applications (graphic/text)

          ding-libs

          → Libraries → Other

          directfb

          → Graphic libraries and applications (graphic/text)

          directfb examples

          → Graphic libraries and applications (graphic/text)

          dmalloc

          → Debugging, profiling and benchmark

          dmidecode

          → Hardware handling

          dmraid

          → Hardware handling

          dmxproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          dnsmasq

          → Networking applications

          docker

          → Graphic libraries and applications (graphic/text)

          docker-containerd

          → System tools

          docker-engine

          → System tools

          domoticz

          → Miscellaneous

          dos2unix

          → Development tools

          dosfstools

          → Filesystem and flash utilities

          dovecot

          → Mail

          dovecot-pigeonhole

          → Mail

          drbd-utils

          → Networking applications

          dri2proto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          dri3proto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          dropbear

          → Networking applications

          dropwatch

          → Debugging, profiling and benchmark

          dsp-tools

          → System tools

          dstat

          → Debugging, profiling and benchmark

          dt

          → Debugging, profiling and benchmark

          dtach

          → Shell and utilities

          dtc (libfdt)

          → Libraries → Hardware handling

          dtv-scan-tables

          → Hardware handling

          duma

          → Debugging, profiling and benchmark

          dvb-apps

          → Hardware handling

          dvblast

          → Audio and video applications

          dvbsnoop

          → Hardware handling

          dvdauthor

          → Audio and video applications

          dvdrw-tools

          → Audio and video applications

          e2fsprogs

          → Filesystem and flash utilities

          e2tools

          → Filesystem and flash utilities

          ebtables

          → Networking applications

          ecryptfs-utils

          → Filesystem and flash utilities

          ed

          → Text editors and viewers

          edid-decode

          → Hardware handling

          editres

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          eeprog

          → Hardware handling

          efibootmgr

          → System tools

          efivar

          → System tools

          efl

          → Graphic libraries and applications (graphic/text)

          eigen

          → Libraries → Other

          ejabberd

          → Networking applications

          elementary

          → Graphic libraries and applications (graphic/text)

          elfutils

          → Libraries → Other

          emlog

          → System tools

          empty

          → Miscellaneous

          enchant

          → Libraries → Text and terminal handling

          encodings

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          enlightenment

          → Graphic libraries and applications (graphic/text)

          enscript

          → Interpreter languages and scripting

          erlang

          → Interpreter languages and scripting

          erlang-goldrush

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-lager

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-cache-tab

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-iconv

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-sip

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-stringprep

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-stun

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-tls

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-utils

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-xml

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-yaml

          → Interpreter languages and scripting → Erlang libraries/modules

          erlang-p1-zlib

          → Interpreter languages and scripting → Erlang libraries/modules

          espeak

          → Audio and video applications

          ethtool

          → Networking applications

          eudev

          → Hardware handling

          evemu

          → Hardware handling

          eventlog

          → Libraries → Logging

          evtest

          → Hardware handling

          exFAT (FUSE)

          → Filesystem and flash utilities

          exfat-utils

          → Filesystem and flash utilities

          exim

          → Mail

          exiv2

          → Libraries → Graphics

          expat

          → Libraries → JSON/XML

          expect

          → Interpreter languages and scripting → Tcl libraries/modules

          expedite

          → Graphic libraries and applications (graphic/text)

          explorercanvas

          → Libraries → Javascript

          ezxml

          → Libraries → JSON/XML

          f2fs-tools

          → Filesystem and flash utilities

          faad2

          → Audio and video applications

          faifa

          → Networking applications

          fan-ctrl

          → Hardware handling

          fastd

          → Networking applications

          fb-test-app

          → Graphic libraries and applications (graphic/text)

          fbdump (Framebuffer Capture Tool)

          → Graphic libraries and applications (graphic/text)

          fbgrab

          → Graphic libraries and applications (graphic/text)

          fbset

          → Graphic libraries and applications (graphic/text)

          fbterm

          → Graphic libraries and applications (graphic/text)

          fbv

          → Graphic libraries and applications (graphic/text)

          fcgiwrap

          → Networking applications

          fconfig

          → Hardware handling

          fdk-aac

          → Libraries → Audio/Sound

          feh

          → Graphic libraries and applications (graphic/text)

          fetchmail

          → Mail

          ffmpeg

          → Audio and video applications

          fftw

          → Libraries → Other

          ficl

          → Interpreter languages and scripting

          file

          → Shell and utilities

          filemq

          → Libraries → Networking

          findutils

          → Development tools

          fio

          → Debugging, profiling and benchmark

          firmware-imx

          → Hardware handling

          fis

          → Hardware handling

          fixesproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          flac

          → Audio and video applications

          flann

          → Libraries → Other

          flannel

          → Networking applications

          flashbench

          → Filesystem and flash utilities

          flashrom

          → Hardware handling

          flex

          → Development tools

          flickcurl

          → Libraries → Networking

          flite

          → Audio and video applications

          flot

          → Libraries → Javascript

          fltk

          → Libraries → Graphics

          fluxbox

          → Graphic libraries and applications (graphic/text)

          fmc

          → Networking applications

          fmlib

          → Libraries → Networking

          fmtools

          → Hardware handling

          font-adobe-100dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-adobe-75dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-adobe-utopia-100dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-adobe-utopia-75dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-adobe-utopia-type1

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-alias

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-arabic-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-awesome

          → Fonts, cursors, icons, sounds and themes

          font-bh-100dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-bh-75dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-bh-lucidatypewriter-100dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-bh-lucidatypewriter-75dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-bh-ttf

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-bh-type1

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-bitstream-100dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-bitstream-75dpi

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-bitstream-type1

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-cronyx-cyrillic

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-cursor-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-daewoo-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-dec-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-ibm-type1

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-isas-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-jis-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-micro-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-misc-cyrillic

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-misc-ethiopic

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-misc-meltho

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-misc-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-mutt-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-schumacher-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-screen-cyrillic

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-sony-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-sun-misc

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-util

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-winitzki-cyrillic

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          font-xfree86-type1

          → Graphic libraries and applications (graphic/text) → X11R7 Fonts

          fontcacheproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          fontconfig

          → Libraries → Graphics

          fontsproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          fonttosfnt

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          fping

          → Networking applications

          freeradius-client

          → Libraries → Networking

          freerdp

          → Graphic libraries and applications (graphic/text)

          Freescale i.MX libraries

          → Hardware handling

          freeswitch

          → Networking applications

          freetype

          → Libraries → Graphics

          fslsfonts

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          fstobdf

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          fswebcam

          → Graphic libraries and applications (graphic/text)

          ftop

          → System tools

          fwup

          → Filesystem and flash utilities

          fxload

          → Hardware handling

          gadgetfs-test

          → Hardware handling

          gamin

          → Libraries → Filesystem

          gauche

          → Interpreter languages and scripting

          gawk

          → Development tools

          gcr

          → Libraries → Crypto

          gd

          → Libraries → Graphics

          gdb

          → Debugging, profiling and benchmark

          gdbm

          → Libraries → Database

          gdk-pixbuf

          → Libraries → Graphics

          genext2fs

          → Filesystem and flash utilities

          genpart

          → Filesystem and flash utilities

          genromfs

          → Filesystem and flash utilities

          geoip

          → Libraries → Networking

          gesftpserver

          → Networking applications

          getent

          → System tools

          gettext

          → Development tools

          gflags

          → Libraries → Other

          ghostscript-fonts

          → Fonts, cursors, icons, sounds and themes

          giblib

          → Libraries → Graphics

          giflib

          → Libraries → Graphics

          git

          → Development tools

          glib-networking

          → Libraries → Networking

          glibmm

          → Libraries → Other

          glm

          → Libraries → Other

          glmark2

          → Graphic libraries and applications (graphic/text)

          glog

          → Libraries → Logging

          glproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          gmock

          → Libraries → Other

          gmp

          → Libraries → Other

          gmpc

          → Graphic libraries and applications (graphic/text)

          gmrender-resurrect

          → Audio and video applications

          gnu-efi

          → Libraries → Hardware handling

          gnuchess

          → Games

          gnupg

          → Shell and utilities

          gnupg2

          → Shell and utilities

          gnuplot

          → Graphic libraries and applications (graphic/text)

          gnuradio

          → Miscellaneous

          gnutls

          → Libraries → Crypto

          Google font directory

          → Miscellaneous

          google-breakpad

          → Debugging, profiling and benchmark

          google-material-design-icons

          → Fonts, cursors, icons, sounds and themes

          gperf

          → Development tools

          gpm

          → Hardware handling

          gpsd

          → Hardware handling

          gptfdisk

          → Hardware handling

          gpu-amd-bin-mx51 (also imx53)

          → Hardware handling

          gqview

          → Graphic libraries and applications (graphic/text)

          gr-osmosdr

          → Miscellaneous

          granite

          → Libraries → Graphics

          grantlee

          → Graphic libraries and applications (graphic/text)

          graphite2

          → Libraries → Graphics

          grep

          → Development tools

          gsettings-desktop-schemas

          → Miscellaneous

          gsl

          → Libraries → Other

          gssdp

          → Libraries → Networking

          gst-dsp

          → Audio and video applications

          gst-ffmpeg

          → Audio and video applications

          gst-fsl-plugins

          → Audio and video applications

          gst-omapfb

          → Audio and video applications

          gst-omx

          → Audio and video applications

          gst-plugin-x170

          → Audio and video applications

          gst-plugins-bad

          → Audio and video applications

          gst-plugins-base

          → Audio and video applications

          gst-plugins-good

          → Audio and video applications

          gst-plugins-ugly

          → Audio and video applications

          gst1-imx

          → Audio and video applications

          gst1-libav

          → Audio and video applications

          gst1-plugins-bad

          → Audio and video applications

          gst1-plugins-base

          → Audio and video applications

          gst1-plugins-good

          → Audio and video applications

          gst1-plugins-ugly

          → Audio and video applications

          gst1-validate

          → Audio and video applications

          gstreamer 0.10

          → Audio and video applications

          gstreamer 1.x

          → Audio and video applications

          gtest

          → Libraries → Other

          gtk engines

          → Fonts, cursors, icons, sounds and themes

          gtk# 3

          → Interpreter languages and scripting → Mono libraries/modules

          gtkmm3

          → Libraries → Graphics

          gtkperf (performance test for GTK2)

          → Graphic libraries and applications (graphic/text)

          gtksourceview

          → Libraries → Graphics

          guile

          → Interpreter languages and scripting

          gupnp

          → Libraries → Networking

          gupnp-av

          → Libraries → Networking

          gupnp-dlna

          → Libraries → Networking

          gupnp-tools

          → Networking applications

          gutenprint

          → Networking applications

          gvfs

          → Hardware handling

          gzip

          → Compressors and decompressors

          hans

          → Networking applications

          harfbuzz

          → Libraries → Graphics

          haserl

          → Interpreter languages and scripting

          haveged

          → Miscellaneous

          hdparm

          → Hardware handling

          heirloom-mailx

          → Mail

          hiawatha

          → Networking applications

          hicolor icon theme

          → Fonts, cursors, icons, sounds and themes

          hidapi

          → Libraries → Hardware handling

          hostapd

          → Networking applications

          hplip

          → Networking applications

          htop

          → System tools

          httping

          → Networking applications

          hwdata

          → Hardware handling

          hwloc

          → Hardware handling

          i2c-tools

          → Hardware handling

          i7z

          → Hardware handling

          ibrcommon

          → Libraries → Networking

          ibrdtn

          → Libraries → Networking

          ibrdtn-tools

          → Networking applications

          ibrdtnd

          → Networking applications

          iceauth

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          ico

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          icu

          → Libraries → Text and terminal handling

          ifplugd

          → Networking applications

          iftop

          → Networking applications

          ifupdown

          → Networking applications

          igd2-for-linux

          → Networking applications

          igh-ethercat

          → Networking applications

          igmpproxy

          → Networking applications

          ijs

          → Libraries → Graphics

          imagemagick

          → Graphic libraries and applications (graphic/text)

          imlib2

          → Libraries → Graphics

          imx-codec

          → Hardware handling

          imx-gpu-viv

          → Hardware handling

          imx-kobs

          → Hardware handling

          imx-lib

          → Hardware handling

          imx-parser

          → Hardware handling

          imx-uuc

          → Hardware handling

          imx-vpu

          → Hardware handling

          imx-vpuwrap

          → Hardware handling

          inadyn

          → Networking applications

          inconsolata

          → Fonts, cursors, icons, sounds and themes

          inotify-tools

          → Shell and utilities

          input-event-daemon

          → Hardware handling

          input-tools

          → Hardware handling

          inputproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          intel-microcode

          → Hardware handling

          intltool

          → Development tools

          iodine

          → Networking applications

          iostat

          → Hardware handling

          iotop

          → System tools

          iozone

          → Debugging, profiling and benchmark

          iperf

          → Networking applications

          iperf3

          → Networking applications

          ipkg (deprecated)

          → Package managers

          ipmitool

          → Hardware handling

          ipmiutil

          → Hardware handling

          iproute2

          → Networking applications

          iprutils

          → System tools

          ipsec-tools

          → Networking applications

          ipset

          → Networking applications

          iptables

          → Networking applications

          iptraf-ng

          → Networking applications

          iputils

          → Networking applications

          iqvlinux

          → Hardware handling

          irda-utils

          → Hardware handling

          irqbalance

          → System tools

          irssi

          → Networking applications

          iucode-tool

          → Hardware handling

          iw

          → Networking applications

          jack2

          → Audio and video applications

          jamvm

          → Interpreter languages and scripting

          jansson

          → Libraries → JSON/XML

          janus-gateway

          → Networking applications

          jasper

          → Libraries → Graphics

          jemalloc

          → Libraries → Other

          jhead

          → Graphic libraries and applications (graphic/text)

          jimtcl

          → Interpreter languages and scripting

          joe

          → Text editors and viewers

          jpeg

          → Libraries → Graphics → jpeg variant

          jpeg-turbo

          → Libraries → Graphics → jpeg variant

          jq

          → Development tools

          jQuery

          → Libraries → Javascript

          jquery-datetimepicker

          → Libraries → Javascript → External jQuery plugins

          jquery-keyboard

          → Libraries → Javascript → External jQuery plugins

          jquery-mobile

          → Libraries → Javascript → External jQuery plugins

          jquery-sidebar

          → Libraries → Javascript → External jQuery plugins

          jquery-sparkline

          → Libraries → Javascript → External jQuery plugins

          jquery-ui

          → Libraries → Javascript → External jQuery plugins

          jquery-ui-themes

          → Libraries → Javascript → External jQuery plugins

          jquery-validation

          → Libraries → Javascript → External jQuery plugins

          jsmin

          → Libraries → Javascript

          json-c

          → Libraries → JSON/XML

          json-glib

          → Libraries → JSON/XML

          json-javascript

          → Libraries → Javascript

          jsoncpp

          → Libraries → JSON/XML

          kbd

          → Hardware handling

          kbproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          kernel-module-imx-gpu-viv

          → Hardware handling

          kexec

          → Debugging, profiling and benchmark

          kexec-lite

          → Debugging, profiling and benchmark

          keyutils

          → System tools

          kismet

          → Networking applications

          kmod

          → System tools

          kms++

          → Libraries → Graphics

          knock

          → Networking applications

          kodi

          → Audio and video applications

          kodi-addon-xvdr (deprecated)

          → Audio and video applications → PVR addons

          kodi-adsp-basic

          → Audio and video applications → Audio DSP addons

          kodi-adsp-freesurround

          → Audio and video applications → Audio DSP addons

          kodi-audiodecoder-modplug

          → Audio and video applications → Audio decoder addons

          kodi-audiodecoder-nosefart

          → Audio and video applications → Audio decoder addons

          kodi-audiodecoder-opus

          → Audio and video applications → Audio decoder addons

          kodi-audiodecoder-sidplay

          → Audio and video applications → Audio decoder addons

          kodi-audiodecoder-snesapu

          → Audio and video applications → Audio decoder addons

          kodi-audiodecoder-stsound

          → Audio and video applications → Audio decoder addons

          kodi-audiodecoder-timidity

          → Audio and video applications → Audio decoder addons

          kodi-audiodecoder-vgmstream

          → Audio and video applications → Audio decoder addons

          kodi-audioencoder-flac

          → Audio and video applications → Audio encoder addons

          kodi-audioencoder-lame

          → Audio and video applications → Audio encoder addons

          kodi-audioencoder-vorbis

          → Audio and video applications → Audio encoder addons

          kodi-audioencoder-wav

          → Audio and video applications → Audio encoder addons

          kodi-pvr-argustv

          → Audio and video applications → PVR addons

          kodi-pvr-dvblink

          → Audio and video applications → PVR addons

          kodi-pvr-dvbviewer

          → Audio and video applications → PVR addons

          kodi-pvr-filmon

          → Audio and video applications → PVR addons

          kodi-pvr-hdhomerun

          → Audio and video applications → PVR addons

          kodi-pvr-hts

          → Audio and video applications → PVR addons

          kodi-pvr-iptvsimple

          → Audio and video applications → PVR addons

          kodi-pvr-mediaportal-tvserver

          → Audio and video applications → PVR addons

          kodi-pvr-mythtv

          → Audio and video applications → PVR addons

          kodi-pvr-nextpvr

          → Audio and video applications → PVR addons

          kodi-pvr-njoy

          → Audio and video applications → PVR addons

          kodi-pvr-pctv

          → Audio and video applications → PVR addons

          kodi-pvr-stalker

          → Audio and video applications → PVR addons

          kodi-pvr-vbox

          → Audio and video applications → PVR addons

          kodi-pvr-vdr-vnsi

          → Audio and video applications → PVR addons

          kodi-pvr-vuplus

          → Audio and video applications → PVR addons

          kodi-pvr-wmc

          → Audio and video applications → PVR addons

          kodi-screensaver-asteroids

          → Audio and video applications → Screensavers

          kodi-screensaver-asterwave

          → Audio and video applications → Screensavers

          kodi-screensaver-biogenesis

          → Audio and video applications → Screensavers

          kodi-screensaver-cpblobs

          → Audio and video applications → Screensavers

          kodi-screensaver-crystalmorph

          → Audio and video applications → Screensavers

          kodi-screensaver-greynetic

          → Audio and video applications → Screensavers

          kodi-screensaver-matrixtrails

          → Audio and video applications → Screensavers

          kodi-screensaver-pingpong

          → Audio and video applications → Screensavers

          kodi-screensaver-planestate

          → Audio and video applications → Screensavers

          kodi-screensaver-pyro

          → Audio and video applications → Screensavers

          kodi-screensaver-rsxs

          → Audio and video applications → Screensavers

          kodi-screensaver-stars

          → Audio and video applications → Screensavers

          kodi-visualisation-fishbmc

          → Audio and video applications → Visualisations

          kodi-visualisation-fountain

          → Audio and video applications → Visualisations

          kodi-visualisation-goom

          → Audio and video applications → Visualisations

          kodi-visualisation-shadertoy

          → Audio and video applications → Visualisations

          kodi-visualisation-spectrum

          → Audio and video applications → Visualisations

          kodi-visualisation-waveforhue

          → Audio and video applications → Visualisations

          kodi-visualisation-waveform

          → Audio and video applications → Visualisations

          kompexsqlite

          → Libraries → Database

          ktap

          → Debugging, profiling and benchmark

          kvmtool

          → System tools

          kyua

          → Debugging, profiling and benchmark

          lame

          → Audio and video applications

          lapack/blas

          → Libraries → Other

          latencytop

          → Debugging, profiling and benchmark

          lbase64

          → Interpreter languages and scripting → Lua libraries/modules

          LBreakout2

          → Games

          lcdapi

          → Libraries → Hardware handling

          lcdproc

          → Hardware handling

          lcms2

          → Libraries → Graphics

          leafnode2

          → Networking applications

          leafpad

          → Graphic libraries and applications (graphic/text)

          less

          → Text editors and viewers

          lesstif

          → Libraries → Graphics

          leveldb

          → Libraries → Database

          lft

          → Networking applications

          lftp

          → Networking applications

          libaacs

          → Libraries → Multimedia

          libaio

          → Libraries → Hardware handling

          libamcodec

          → Libraries → Multimedia

          libao

          → Libraries → Audio/Sound

          libarchive

          → Libraries → Compression and decompression

          libargtable2

          → Libraries → Other

          libart

          → Libraries → Graphics

          libasplib

          → Libraries → Audio/Sound

          libass

          → Libraries → Multimedia

          libassuan

          → Libraries → Crypto

          libatasmart

          → Libraries → Hardware handling

          libatomic_ops

          → Libraries → Other

          libbdplus

          → Libraries → Multimedia

          libbluray

          → Libraries → Multimedia

          libbroadvoice

          → Libraries → Audio/Sound

          libbsd

          → Libraries → Other

          libcap

          → Libraries → Other

          libcap-ng

          → Libraries → Other

          libcdaudio

          → Libraries → Audio/Sound

          libcddb

          → Libraries → Audio/Sound

          libcdio

          → Libraries → Audio/Sound

          libcec

          → Libraries → Hardware handling

          libcgi

          → Libraries → Networking

          libcgicc

          → Libraries → Networking

          libcgroup

          → Libraries → Other

          libcli

          → Libraries → Text and terminal handling

          libcoap

          → Libraries → Networking

          libcodec2

          → Libraries → Audio/Sound

          libcofi

          → Libraries → Other

          libconfig

          → Libraries → Filesystem

          libconfuse

          → Libraries → Filesystem

          libcroco

          → Libraries → Other

          libcrossguid

          → Libraries → Other

          libcue

          → Libraries → Audio/Sound

          libcuefile

          → Libraries → Audio/Sound

          libcurl

          → Libraries → Networking

          libdaemon

          → Libraries → Other

          libdcadec

          → Libraries → Multimedia

          libdmtx

          → Libraries → Graphics

          libdmx

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libdnet

          → Libraries → Networking

          libdri2

          → Libraries → Graphics

          libdrm

          → Libraries → Graphics

          libdvbcsa

          → Libraries → Multimedia

          libdvbpsi

          → Libraries → Multimedia

          libdvbsi

          → Libraries → Multimedia

          libdvdcss

          → Libraries → Multimedia

          libdvdnav

          → Libraries → Multimedia

          libdvdread

          → Libraries → Multimedia

          libebml

          → Libraries → Multimedia

          libebur128

          → Libraries → Audio/Sound

          libedit

          → Libraries → Text and terminal handling

          libee

          → Libraries → Other

          libenca

          → Libraries → Text and terminal handling

          libepoxy

          → Libraries → Graphics

          Liberation (Free fonts)

          → Fonts, cursors, icons, sounds and themes

          libesmtp

          → Mail

          libestr

          → Libraries → Text and terminal handling

          libev

          → Libraries → Other

          libevas generic loaders

          → Libraries → Graphics

          libevdev

          → Libraries → Other

          libevent

          → Libraries → Other

          libexif

          → Libraries → Graphics

          libeXosip2

          → Libraries → Networking

          libfastjson

          → Libraries → JSON/XML

          libfcgi

          → Libraries → Networking

          libffi

          → Libraries → Other

          libfm

          → Libraries → Graphics

          libfm-extra

          → Libraries → Graphics

          libfontenc

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libfreefare

          → Libraries → Hardware handling

          libfreeglut

          → Libraries → Graphics

          libfreeimage

          → Libraries → Graphics

          libfribidi

          → Libraries → Text and terminal handling

          libFS

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libftdi

          → Libraries → Hardware handling

          libftdi1

          → Libraries → Hardware handling

          libfuse

          → Libraries → Filesystem

          libg7221

          → Libraries → Audio/Sound

          libgail (deprecated)

          → Libraries → Graphics

          libgcrypt

          → Libraries → Crypto

          libgdiplus

          → Libraries → Graphics

          libgee

          → Libraries → Other

          libgeotiff

          → Libraries → Graphics

          libglade

          → Libraries → Graphics

          libglew

          → Libraries → Graphics

          libglfw

          → Libraries → Graphics

          libglib2

          → Libraries → Other

          libglu

          → Libraries → Graphics

          libgpg-error

          → Libraries → Crypto

          libgpgme

          → Libraries → Crypto

          libgsasl

          → Libraries → Networking

          libgtk2

          → Libraries → Graphics

          libgtk3

          → Libraries → Graphics

          libgudev

          → Libraries → Hardware handling

          libhdhomerun

          → Libraries → Multimedia

          libhid

          → Libraries → Hardware handling

          libhttpparser

          → Libraries → Networking

          libical

          → Libraries → Other

          libICE

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libiconv

          → Libraries → Text and terminal handling

          libid3tag

          → Libraries → Audio/Sound

          libidn

          → Libraries → Networking

          libiio

          → Libraries → Hardware handling

          libilbc

          → Libraries → Audio/Sound

          libimxvpuapi

          → Libraries → Multimedia

          libinput

          → Libraries → Hardware handling

          libiqrf

          → Libraries → Hardware handling

          libiscsi

          → Libraries → Networking

          libjson

          → Libraries → JSON/XML

          libksba

          → Libraries → Crypto

          libldns

          → Libraries → Networking

          liblinear

          → Libraries → Other

          libllcp

          → Libraries → Hardware handling

          liblo

          → Libraries → Audio/Sound

          liblockfile

          → Libraries → Filesystem

          liblog4c-localtime

          → Libraries → Logging

          liblogging

          → Libraries → Logging

          libmad

          → Libraries → Audio/Sound

          libmatroska

          → Libraries → Multimedia

          libmbim

          → Libraries → Hardware handling

          libmbus

          → Libraries → Networking

          libmcrypt

          → Libraries → Crypto

          libmemcached

          → Libraries → Networking

          libmhash

          → Libraries → Crypto

          libmicrohttpd

          → Libraries → Networking

          libminiupnpc

          → Libraries → Networking

          libmms

          → Libraries → Multimedia

          libmng

          → Libraries → Graphics

          libmnl

          → Libraries → Networking

          libmodbus

          → Libraries → Networking

          libmodplug

          → Libraries → Audio/Sound

          libmpd

          → Libraries → Audio/Sound

          libmpdclient

          → Libraries → Audio/Sound

          libmpeg2

          → Libraries → Multimedia

          libnatpmp

          → Libraries → Networking

          libndp

          → Libraries → Networking

          libneon

          → Libraries → Networking

          libnet

          → Libraries → Networking

          libnetfilter_acct

          → Libraries → Networking

          libnetfilter_conntrack

          → Libraries → Networking

          libnetfilter_cthelper

          → Libraries → Networking

          libnetfilter_cttimeout

          → Libraries → Networking

          libnetfilter_log

          → Libraries → Networking

          libnetfilter_queue

          → Libraries → Networking

          libnfc

          → Libraries → Hardware handling

          libnfnetlink

          → Libraries → Networking

          libnfs

          → Libraries → Filesystem

          libnftnl

          → Libraries → Networking

          libnice

          → Libraries → Networking

          libnl

          → Libraries → Networking

          libnspr

          → Libraries → Other

          libnss

          → Libraries → Crypto

          liboauth

          → Libraries → Networking

          libogg

          → Libraries → Multimedia

          libopenh264

          → Libraries → Multimedia

          liboping

          → Libraries → Networking

          libosip2

          → Libraries → Networking

          libpam-radius-auth

          → Libraries → Other

          libpam-tacplus

          → Libraries → Other

          libpcap

          → Libraries → Networking

          libpciaccess

          → Libraries → Hardware handling

          libpfm4

          → Libraries → Other

          libphidget

          → Libraries → Hardware handling

          libpjsip

          → Libraries → Networking

          libplayer

          → Libraries → Multimedia

          libplist

          → Libraries → Other

          libpng

          → Libraries → Graphics

          libpqxx

          → Libraries → Database

          libpthread-stubs

          → Libraries → Other

          libpthsem

          → Libraries → Other

          libqmi

          → Libraries → Hardware handling

          libqrencode

          → Libraries → Graphics

          libraw

          → Libraries → Graphics

          libraw1394

          → Libraries → Hardware handling

          libreplaygain

          → Libraries → Audio/Sound

          librsvg

          → Libraries → Graphics

          librsync

          → Libraries → Networking

          librtas

          → Libraries → Hardware handling

          librtlsdr

          → Libraries → Hardware handling

          librtmp

          → Libraries → Networking

          libsamplerate

          → Libraries → Audio/Sound

          libseccomp

          → Libraries → Other

          libsecret

          → Libraries → Crypto

          libselinux

          → Libraries → Security

          libsemanage

          → Libraries → Security

          libsepol

          → Libraries → Security

          libserial

          → Libraries → Hardware handling

          libserialport

          → Libraries → Hardware handling

          libsexy

          → Graphic libraries and applications (graphic/text)

          libsha1

          → Libraries → Crypto

          libshairplay

          → Libraries → Networking

          libshout

          → Libraries → Networking

          libsidplay2

          → Libraries → Audio/Sound

          libsigc++

          → Libraries → Other

          libsigrok

          → Libraries → Hardware handling

          libsigrokdecode

          → Libraries → Hardware handling

          libsigsegv

          → Libraries → Other

          libsilk

          → Libraries → Audio/Sound

          libSM

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libsndfile

          → Libraries → Audio/Sound

          libsoc

          → Libraries → Hardware handling

          libsocketcan

          → Libraries → Networking

          libsodium

          → Libraries → Crypto

          libsoil

          → Libraries → Graphics

          libsoundtouch

          → Libraries → Audio/Sound

          libsoup

          → Libraries → Networking

          libsoxr

          → Libraries → Audio/Sound

          libsquish

          → Libraries → Compression and decompression

          libsrtp

          → Libraries → Networking

          libssh

          → Libraries → Crypto

          libssh2

          → Libraries → Crypto

          libstrophe

          → Libraries → Networking

          libsvg

          → Libraries → Graphics

          libsvg-cairo

          → Libraries → Graphics

          libsvgtiny

          → Libraries → Graphics

          libsysfs

          → Libraries → Filesystem

          libtasn1

          → Libraries → Other

          libtheora

          → Libraries → Multimedia

          libtirpc

          → Libraries → Networking

          libtomcrypt

          → Libraries → Crypto

          libtommath

          → Libraries → Other

          libtool

          → Development tools

          libtorrent

          → Libraries → Networking

          libtpl

          → Libraries → Other

          libubox

          → Libraries → Other

          libuci

          → Libraries → Other

          libucl

          → Libraries → JSON/XML

          libuecc

          → Libraries → Crypto

          libuio

          → Hardware handling

          libump

          → Hardware handling

          libunistring

          → Libraries → Text and terminal handling

          libunwind

          → Libraries → Other

          libupnp

          → Libraries → Networking

          libupnpp

          → Libraries → Networking

          liburcu

          → Libraries → Other

          liburiparser

          → Libraries → Networking

          libusb

          → Libraries → Hardware handling

          libusb-compat

          → Libraries → Hardware handling

          libusbgx

          → Libraries → Hardware handling

          libuv

          → Libraries → Other

          libv4l

          → Libraries → Hardware handling

          libva

          → Libraries → Graphics

          libva-intel-driver

          → Libraries → Graphics

          libvdpau

          → Libraries → Graphics

          libvips

          → Libraries → Graphics

          libvncserver

          → Libraries → Networking

          libvorbis

          → Libraries → Audio/Sound

          libvpx

          → Libraries → Multimedia

          libwebsock

          → Libraries → Networking

          libwebsockets

          → Libraries → Networking

          libX11

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXau

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXaw

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libxcb

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXcomposite

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXcursor

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXdamage

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXdmcp

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXext

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXfixes

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXfont

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXft

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXi

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXinerama

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libxkbcommon

          → Libraries → Hardware handling

          libxkbfile

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libxml++

          → Libraries → JSON/XML

          libxml2

          → Libraries → JSON/XML

          libxmlrpc

          → Libraries → JSON/XML

          libXmu

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXpm

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXrandr

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXrender

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXres

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXScrnSaver

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libxshmfence

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libxslt

          → Libraries → JSON/XML

          libXt

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXtst

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXv

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXvMC

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXxf86dga

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libXxf86vm

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          libyaml

          → Libraries → JSON/XML

          libyuv

          → Libraries → Multimedia

          libz160

          → Hardware handling

          libzip

          → Libraries → Compression and decompression

          lightning

          → Libraries → Other

          lighttpd

          → Networking applications

          linenoise

          → Libraries → Text and terminal handling

          linknx

          → Networking applications

          links

          → Networking applications

          linphone

          → Networking applications

          linux-backports

          → Hardware handling

          linux-firmware

          → Hardware handling → Firmware

          linux-fusion communication layer for DirectFB multi

          → Graphic libraries and applications (graphic/text)

          linux-pam

          → Libraries → Other

          linux-zigbee

          → Networking applications

          liquid-dsp

          → Libraries → Other

          lirc-tools

          → Hardware handling

          listres

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          LiTE (toolbox engine)

          → Graphic libraries and applications (graphic/text)

          live555

          → Libraries → Multimedia

          ljlinenoise

          → Interpreter languages and scripting → Lua libraries/modules

          ljsyscall

          → Interpreter languages and scripting → Lua libraries/modules

          lksctp-tools

          → Libraries → Networking

          lldpd

          → Networking applications

          lm-sensors

          → Hardware handling

          lmbench

          → Debugging, profiling and benchmark

          lockdev

          → Libraries → Filesystem

          lockfile programs

          → Shell and utilities

          log4cplus

          → Libraries → Logging

          log4cpp

          → Libraries → Logging

          log4cxx

          → Libraries → Logging

          logrotate

          → Shell and utilities

          logsurfer

          → Shell and utilities

          lpeg

          → Interpreter languages and scripting → Lua libraries/modules

          lpty

          → Interpreter languages and scripting → Lua libraries/modules

          lrandom

          → Interpreter languages and scripting → Lua libraries/modules

          lrzsz

          → Networking applications

          lshw

          → Hardware handling

          lsof

          → Debugging, profiling and benchmark

          lsqlite3

          → Interpreter languages and scripting → Lua libraries/modules

          lsuio

          → Hardware handling

          ltp-testsuite

          → Debugging, profiling and benchmark

          ltrace

          → Debugging, profiling and benchmark

          LTris

          → Games

          lttng-babeltrace

          → Debugging, profiling and benchmark

          lttng-libust

          → Libraries → Other

          lttng-modules

          → Debugging, profiling and benchmark

          lttng-tools

          → Debugging, profiling and benchmark

          lua

          → Interpreter languages and scripting

          lua-cjson

          → Interpreter languages and scripting → Lua libraries/modules

          lua-coat

          → Interpreter languages and scripting → Lua libraries/modules

          lua-coatpersistent

          → Interpreter languages and scripting → Lua libraries/modules

          lua-csnappy

          → Interpreter languages and scripting → Lua libraries/modules

          lua-ev

          → Interpreter languages and scripting → Lua libraries/modules

          lua-iconv

          → Interpreter languages and scripting → Lua libraries/modules

          lua-messagepack

          → Interpreter languages and scripting → Lua libraries/modules

          lua-msgpack-native

          → Interpreter languages and scripting → Lua libraries/modules

          lua-periphery

          → Interpreter languages and scripting → Lua libraries/modules

          lua-testmore

          → Interpreter languages and scripting → Lua libraries/modules

          luabitop

          → Interpreter languages and scripting → Lua libraries/modules

          luacrypto

          → Interpreter languages and scripting → Lua libraries/modules

          luaexpat

          → Interpreter languages and scripting → Lua libraries/modules

          luaexpatutils

          → Interpreter languages and scripting → Lua libraries/modules

          luafilesystem

          → Interpreter languages and scripting → Lua libraries/modules

          luajit

          → Interpreter languages and scripting

          luajson

          → Interpreter languages and scripting → Lua libraries/modules

          lualogging

          → Interpreter languages and scripting → Lua libraries/modules

          luaposix

          → Interpreter languages and scripting → Lua libraries/modules

          luasec

          → Interpreter languages and scripting → Lua libraries/modules

          luasocket

          → Interpreter languages and scripting → Lua libraries/modules

          luasql-sqlite3

          → Interpreter languages and scripting → Lua libraries/modules

          luit

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          lunit

          → Interpreter languages and scripting → Lua libraries/modules

          lutok

          → Interpreter languages and scripting

          luv

          → Interpreter languages and scripting → Lua libraries/modules

          luvi

          → Interpreter languages and scripting → Lua libraries/modules

          lvm2 & device mapper

          → Hardware handling

          lxc

          → System tools

          lz4

          → Compressors and decompressors

          lzip

          → Compressors and decompressors

          lzlib

          → Interpreter languages and scripting → Lua libraries/modules

          lzo

          → Libraries → Compression and decompression

          lzop

          → Compressors and decompressors

          macchanger

          → Networking applications

          madplay

          → Audio and video applications

          make

          → Development tools

          makedepend

          → Graphic libraries and applications (graphic/text) → X11R7 Utilities

          makedevs

          → Filesystem and flash utilities

          mali-t76x

          → Hardware handling

          matchbox

          → Graphic libraries and applications (graphic/text)

          matchbox-common

          → Graphic libraries and applications (graphic/text)

          matchbox-desktop

          → Graphic libraries and applications (graphic/text)

          matchbox-fakekey

          → Graphic libraries and applications (graphic/text)

          matchbox-keyboard

          → Graphic libraries and applications (graphic/text)

          matchbox-lib

          → Graphic libraries and applications (graphic/text)

          matchbox-panel

          → Graphic libraries and applications (graphic/text)

          matchbox-startup-monitor

          → Graphic libraries and applications (graphic/text)

          mbedtls

          → Libraries → Crypto

          mc

          → Text editors and viewers

          mcelog

          → Debugging, profiling and benchmark

          mcookie

          → Graphic libraries and applications (graphic/text) → X11R7 Utilities

          mcrypt

          → Miscellaneous

          mdadm

          → Hardware handling

          mediastreamer

          → Libraries → Multimedia

          memcached

          → Networking applications

          memstat

          → Debugging, profiling and benchmark

          memtest86

          → Hardware handling

          memtester

          → Hardware handling

          menu-cache

          → Libraries → Graphics

          mesa3d

          → Graphic libraries and applications (graphic/text)

          mesa3d-demos

          → Graphic libraries and applications (graphic/text)

          metacity

          → Graphic libraries and applications (graphic/text)

          micropython

          → Interpreter languages and scripting

          micropython-lib

          → Interpreter languages and scripting

          midori

          → Graphic libraries and applications (graphic/text)

          mii-diag

          → Networking applications

          Mini-XML

          → Libraries → JSON/XML

          minicom

          → Hardware handling

          minidlna

          → Networking applications

          minissdpd

          → Networking applications

          minizip

          → Libraries → Compression and decompression

          miraclecast

          → Audio and video applications

          mjpegtools

          → Audio and video applications

          mjpg-streamer

          → Networking applications

          mkfontdir

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          mkfontscale

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          mmc-utils

          → Filesystem and flash utilities

          moarvm

          → Interpreter languages and scripting

          mobile-broadband-provider-info

          → Miscellaneous

          modemmanager

          → Networking applications

          modplugtools

          → Audio and video applications

          mongodb

          → Libraries → Database

          mongoose

          → Libraries → Networking

          mongrel2

          → Networking applications

          monit

          → System tools

          monkey

          → Networking applications

          mono

          → Interpreter languages and scripting

          mosh

          → Networking applications

          mosquitto

          → Networking applications

          mp4v2

          → Libraries → Audio/Sound

          mpc

          → Libraries → Other

          mpd

          → Audio and video applications

          mpd-mpc

          → Audio and video applications

          mpdecimal

          → Libraries → Other

          mpfr

          → Libraries → Other

          mpg123

          → Audio and video applications

          mplayer

          → Audio and video applications

          mpv

          → Audio and video applications

          mraa

          → Libraries → Hardware handling

          mrouted

          → Networking applications

          msgpack

          → Libraries → Other

          msmtp

          → Mail

          msr-tools

          → Hardware handling

          mtd, jffs2 and ubi/ubifs tools

          → Filesystem and flash utilities

          mtdev

          → Libraries → Hardware handling

          mtdev2tuio

          → Libraries → Other

          mtools

          → Filesystem and flash utilities

          mtr

          → Networking applications

          multicat

          → Audio and video applications

          Multimedia Module

          → Graphic libraries and applications (graphic/text)

          musepack

          → Audio and video applications

          mutt

          → Mail

          MySQL

          → Libraries → Database

          nano

          → Text editors and viewers

          nanocom

          → Hardware handling

          nbd

          → Networking applications

          ncdu

          → System tools

          ncftp

          → Networking applications

          ncmpc

          → Audio and video applications

          ncurses

          → Libraries → Text and terminal handling

          ndisc6 tools

          → Networking applications

          ne10

          → Libraries → Hardware handling

          neard

          → Hardware handling

          neardal

          → Libraries → Hardware handling

          net-tools

          → Networking applications

          netatalk

          → Networking applications

          netcat

          → Networking applications

          netcat-openbsd

          → Networking applications

          netperf

          → Debugging, profiling and benchmark

          netplug

          → Networking applications

          netsniff-ng

          → Debugging, profiling and benchmark

          netsnmp

          → Networking applications

          netstat-nat

          → Networking applications

          nettle

          → Libraries → Crypto

          networkmanager

          → Networking applications

          newt

          → Libraries → Text and terminal handling

          nfacct

          → Networking applications

          nfs-utils

          → Filesystem and flash utilities

          nftables

          → Networking applications

          nginx

          → Networking applications

          nginx-naxsi

          → Networking applications → External nginx modules

          nginx-upload

          → Networking applications → External nginx modules

          ngircd

          → Networking applications

          ngrep

          → Networking applications

          nload

          → Networking applications

          nmap

          → Networking applications

          nodejs

          → Interpreter languages and scripting

          nodm

          → Graphic libraries and applications (graphic/text)

          noip

          → Networking applications

          norm

          → Libraries → Networking

          nss-mdns

          → Libraries → Networking

          nss-pam-ldapd

          → Libraries → Networking

          ntfs-3g

          → Filesystem and flash utilities

          ntp

          → Networking applications

          numactl

          → System tools

          nut

          → System tools

          nuttcp

          → Networking applications

          nvidia-driver

          → Hardware handling

          nvidia-tegra23

          → Hardware handling

          nvidia-tegra23 binaries

          → Hardware handling

          nvidia-tegra23 codecs

          → Hardware handling

          nvme

          → Hardware handling

          obsidian-cursors

          → Fonts, cursors, icons, sounds and themes

          ocf-linux

          → Libraries → Crypto → cryptodev variant

          oclock

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          ocrad

          → Graphic libraries and applications (graphic/text)

          odhcp6c

          → Networking applications

          odhcploc

          → Networking applications

          odroid-mali

          → Hardware handling

          odroid-scripts

          → Hardware handling

          ofono

          → Hardware handling

          ola (open lighting architecture)

          → Hardware handling

          olsrd

          → Networking applications

          omniorb

          → Libraries → Networking

          omxplayer

          → Audio and video applications

          on2-8170-libs

          → Audio and video applications

          on2-8170-modules

          → Hardware handling

          open-plc-utils

          → Networking applications

          open2300

          → Hardware handling

          openal

          → Libraries → Audio/Sound

          openblas

          → Libraries → Other

          openbox

          → Graphic libraries and applications (graphic/text)

          opencore-amr

          → Libraries → Audio/Sound

          opencv-2.4

          → Libraries → Graphics

          opencv3

          → Libraries → Graphics

          openipmi

          → Hardware handling

          openjpeg

          → Libraries → Graphics

          openldap

          → Libraries → Networking

          openmpi

          → Libraries → Networking

          openntpd

          → Networking applications

          openobex

          → Networking applications

          openocd

          → Hardware handling

          openpgm

          → Libraries → Networking

          openpowerlink

          → Hardware handling

          openssh

          → Networking applications

          openssl

          → Libraries → Crypto

          openswan

          → Networking applications

          OpenTyrian

          → Games

          OpenTyrian data

          → Games

          openvmtools

          → System tools

          openvpn

          → Networking applications

          openzwave

          → Libraries → Networking

          opkg

          → Package managers

          oprofile

          → Debugging, profiling and benchmark

          opus

          → Libraries → Audio/Sound

          opus-tools

          → Audio and video applications

          opusfile

          → Libraries → Audio/Sound

          orbit

          → Interpreter languages and scripting → Lua libraries/modules

          orc

          → Libraries → Other

          oRTP

          → Libraries → Networking

          owfs

          → Libraries → Hardware handling

          owl-linux

          → Hardware handling

          p11-kit

          → Libraries → Other

          p7zip

          → Compressors and decompressors

          p910nd

          → Networking applications

          pango

          → Libraries → Graphics

          pangomm

          → Libraries → Graphics

          parted

          → Hardware handling

          patch

          → Development tools

          pax-utils

          → Debugging, profiling and benchmark

          pciutils

          → Hardware handling

          pcmanfm

          → Graphic libraries and applications (graphic/text)

          pcre

          → Libraries → Text and terminal handling

          pcsc-lite

          → Libraries → Hardware handling

          pdbg

          → Hardware handling

          perl

          → Interpreter languages and scripting

          perl-crypt-openssl-random

          → Interpreter languages and scripting → Perl libraries/modules

          perl-crypt-openssl-rsa

          → Interpreter languages and scripting → Perl libraries/modules

          perl-datetime-tiny

          → Interpreter languages and scripting → Perl libraries/modules

          perl-db-file

          → Interpreter languages and scripting → Perl libraries/modules

          perl-digest-hmac

          → Interpreter languages and scripting → Perl libraries/modules

          perl-digest-sha1

          → Interpreter languages and scripting → Perl libraries/modules

          perl-encode-detect

          → Interpreter languages and scripting → Perl libraries/modules

          perl-encode-locale

          → Interpreter languages and scripting → Perl libraries/modules

          perl-file-listing

          → Interpreter languages and scripting → Perl libraries/modules

          perl-file-util

          → Interpreter languages and scripting → Perl libraries/modules

          perl-gd

          → Interpreter languages and scripting → Perl libraries/modules

          perl-gdgraph

          → Interpreter languages and scripting → Perl libraries/modules

          perl-gdtextutil

          → Interpreter languages and scripting → Perl libraries/modules

          perl-html-parser

          → Interpreter languages and scripting → Perl libraries/modules

          perl-html-tagset

          → Interpreter languages and scripting → Perl libraries/modules

          perl-http-cookies

          → Interpreter languages and scripting → Perl libraries/modules

          perl-http-daemon

          → Interpreter languages and scripting → Perl libraries/modules

          perl-http-date

          → Interpreter languages and scripting → Perl libraries/modules

          perl-http-message

          → Interpreter languages and scripting → Perl libraries/modules

          perl-http-negotiate

          → Interpreter languages and scripting → Perl libraries/modules

          perl-io-html

          → Interpreter languages and scripting → Perl libraries/modules

          perl-io-socket-ssl

          → Interpreter languages and scripting → Perl libraries/modules

          perl-json-tiny

          → Interpreter languages and scripting → Perl libraries/modules

          perl-libwww-perl

          → Interpreter languages and scripting → Perl libraries/modules

          perl-lwp-mediatypes

          → Interpreter languages and scripting → Perl libraries/modules

          perl-mail-dkim

          → Interpreter languages and scripting → Perl libraries/modules

          perl-mailtools

          → Interpreter languages and scripting → Perl libraries/modules

          perl-mime-base64

          → Interpreter languages and scripting → Perl libraries/modules

          perl-mojolicious

          → Interpreter languages and scripting → Perl libraries/modules

          perl-net-dns

          → Interpreter languages and scripting → Perl libraries/modules

          perl-net-http

          → Interpreter languages and scripting → Perl libraries/modules

          perl-net-ssleay

          → Interpreter languages and scripting → Perl libraries/modules

          perl-netaddr-ip

          → Interpreter languages and scripting → Perl libraries/modules

          perl-path-tiny

          → Interpreter languages and scripting → Perl libraries/modules

          perl-time-hires

          → Interpreter languages and scripting → Perl libraries/modules

          perl-timedate

          → Interpreter languages and scripting → Perl libraries/modules

          perl-try-tiny

          → Interpreter languages and scripting → Perl libraries/modules

          perl-uri

          → Interpreter languages and scripting → Perl libraries/modules

          perl-www-robotrules

          → Interpreter languages and scripting → Perl libraries/modules

          perl-xml-libxml

          → Interpreter languages and scripting → Perl libraries/modules

          perl-xml-namespacesupport

          → Interpreter languages and scripting → Perl libraries/modules

          perl-xml-sax

          → Interpreter languages and scripting → Perl libraries/modules

          perl-xml-sax-base

          → Interpreter languages and scripting → Perl libraries/modules

          phidgetwebservice

          → Networking applications

          php

          → Interpreter languages and scripting

          php-geoip

          → Interpreter languages and scripting → External php extensions

          php-gnupg

          → Interpreter languages and scripting → External php extensions

          php-imagick

          → Interpreter languages and scripting → External php extensions

          php-memcached

          → Interpreter languages and scripting → External php extensions

          php-ssh2

          → Interpreter languages and scripting → External php extensions

          php-yaml

          → Interpreter languages and scripting → External php extensions

          php-zmq

          → Interpreter languages and scripting → External php extensions

          picocom

          → Hardware handling

          pifmrds

          → Hardware handling

          pinentry

          → Shell and utilities

          pixman

          → Libraries → Graphics

          pkgconf

          → Development tools

          poco

          → Libraries → Other

          polarssl

          → Libraries → Crypto

          polkit

          → System tools

          poppler

          → Libraries → Graphics

          popt

          → Libraries → Text and terminal handling

          portaudio

          → Libraries → Audio/Sound

          portmap

          → Networking applications

          postgresql

          → Libraries → Database

          pound

          → Networking applications

          powerpc-utils

          → System tools

          powertop

          → Hardware handling

          pppd

          → Networking applications

          pps-tools

          → Hardware handling

          pptp-linux

          → Networking applications

          prboom

          → Games

          presentproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          privoxy

          → Networking applications

          procps-ng

          → System tools

          procrank_linux

          → System tools

          proftpd

          → Networking applications

          protobuf

          → Libraries → Other

          protobuf-c

          → Libraries → Other

          proxychains-ng

          → Networking applications

          psmisc

          → System tools

          psplash

          → Graphic libraries and applications (graphic/text)

          ptpd

          → Networking applications

          ptpd2

          → Networking applications

          pulseaudio

          → Audio and video applications

          pulseview

          → Hardware handling

          pure-ftpd

          → Networking applications

          putty

          → Networking applications

          pv

          → Debugging, profiling and benchmark

          pwgen

          → System tools

          python

          → Interpreter languages and scripting

          python-alsaaudio

          → Interpreter languages and scripting → External python modules

          python-argh

          → Interpreter languages and scripting → External python modules

          python-autobahn

          → Interpreter languages and scripting → External python modules

          python-backports-abc

          → Interpreter languages and scripting → External python modules

          python-beautifulsoup4

          → Interpreter languages and scripting → External python modules

          python-bottle

          → Interpreter languages and scripting → External python modules

          python-can

          → Interpreter languages and scripting → External python modules

          python-cbor

          → Interpreter languages and scripting → External python modules

          python-certifi

          → Interpreter languages and scripting → External python modules

          python-cffi

          → Interpreter languages and scripting → External python modules

          python-characteristic

          → Interpreter languages and scripting → External python modules

          python-cheetah

          → Interpreter languages and scripting → External python modules

          python-cherrypy

          → Interpreter languages and scripting → External python modules

          python-click

          → Interpreter languages and scripting → External python modules

          python-coherence

          → Interpreter languages and scripting → External python modules

          python-configobj

          → Interpreter languages and scripting → External python modules

          python-configshell-fb

          → Interpreter languages and scripting → External python modules

          python-crc16

          → Interpreter languages and scripting → External python modules

          python-crossbar

          → Interpreter languages and scripting → External python modules

          python-cryptography

          → Interpreter languages and scripting → External python modules

          python-cssselect

          → Interpreter languages and scripting → External python modules

          python-daemon

          → Interpreter languages and scripting → External python modules

          python-dataproperty

          → Interpreter languages and scripting → External python modules

          python-dateutil

          → Interpreter languages and scripting → External python modules

          python-dialog

          → Interpreter languages and scripting → External python modules

          python-dialog3

          → Interpreter languages and scripting → External python modules

          python-dicttoxml

          → Interpreter languages and scripting → External python modules

          python-django

          → Interpreter languages and scripting → External python modules

          python-docopt

          → Interpreter languages and scripting → External python modules

          python-dominate

          → Interpreter languages and scripting → External python modules

          python-dpkt

          → Interpreter languages and scripting → External python modules

          python-ecdsa

          → Interpreter languages and scripting → External python modules

          python-engineio

          → Interpreter languages and scripting → External python modules

          python-enum

          → Interpreter languages and scripting → External python modules

          python-enum34

          → Interpreter languages and scripting → External python modules

          python-flask

          → Interpreter languages and scripting → External python modules

          python-flask-jsonrpc

          → Interpreter languages and scripting → External python modules

          python-flask-login

          → Interpreter languages and scripting → External python modules

          python-flup

          → Interpreter languages and scripting → External python modules

          python-gobject

          → Interpreter languages and scripting → External python modules

          python-html5lib

          → Interpreter languages and scripting → External python modules

          python-httplib2

          → Interpreter languages and scripting → External python modules

          python-humanize

          → Interpreter languages and scripting → External python modules

          python-id3

          → Interpreter languages and scripting → External python modules

          python-idna

          → Interpreter languages and scripting → External python modules

          python-iniparse

          → Interpreter languages and scripting → External python modules

          python-iowait

          → Interpreter languages and scripting → External python modules

          python-ipaddr

          → Interpreter languages and scripting → External python modules

          python-ipaddress

          → Interpreter languages and scripting → External python modules

          python-ipy

          → Interpreter languages and scripting → External python modules

          python-ipython

          → Interpreter languages and scripting → External python modules

          python-itsdangerous

          → Interpreter languages and scripting → External python modules

          python-jinja2

          → Interpreter languages and scripting → External python modules

          python-json-schema-validator

          → Interpreter languages and scripting → External python modules

          python-keyring

          → Interpreter languages and scripting → External python modules

          python-libconfig

          → Interpreter languages and scripting → External python modules

          python-lmdb

          → Interpreter languages and scripting → External python modules

          python-lxml

          → Interpreter languages and scripting → External python modules

          python-mad

          → Interpreter languages and scripting → External python modules

          python-mako

          → Interpreter languages and scripting → External python modules

          python-markdown

          → Interpreter languages and scripting → External python modules

          python-markupsafe

          → Interpreter languages and scripting → External python modules

          python-meld3

          → Interpreter languages and scripting → External python modules

          python-mistune

          → Interpreter languages and scripting → External python modules

          python-msgpack

          → Interpreter languages and scripting → External python modules

          python-netaddr

          → Interpreter languages and scripting → External python modules

          python-netifaces

          → Interpreter languages and scripting → External python modules

          python-networkmanager

          → Interpreter languages and scripting → External python modules

          python-nfc

          → Interpreter languages and scripting → External python modules

          python-numpy

          → Interpreter languages and scripting → External python modules

          python-paho-mqtt

          → Interpreter languages and scripting → External python modules

          python-pam

          → Interpreter languages and scripting → External python modules

          python-paramiko

          → Interpreter languages and scripting → External python modules

          python-pathtools

          → Interpreter languages and scripting → External python modules

          python-pathvalidate

          → Interpreter languages and scripting → External python modules

          python-pexpect

          → Interpreter languages and scripting → External python modules

          python-pillow

          → Interpreter languages and scripting → External python modules

          python-posix-ipc

          → Interpreter languages and scripting → External python modules

          python-prompt-toolkit

          → Interpreter languages and scripting → External python modules

          python-protobuf

          → Interpreter languages and scripting → External python modules

          python-psutil

          → Interpreter languages and scripting → External python modules

          python-ptyprocess

          → Interpreter languages and scripting → External python modules

          python-pyasn

          → Interpreter languages and scripting → External python modules

          python-pyasn-modules

          → Interpreter languages and scripting → External python modules

          python-pycli

          → Interpreter languages and scripting → External python modules

          python-pycparser

          → Interpreter languages and scripting → External python modules

          python-pycrypto

          → Interpreter languages and scripting → External python modules

          python-pydal

          → Interpreter languages and scripting → External python modules

          python-pyftpdlib

          → Interpreter languages and scripting → External python modules

          python-pygame

          → Interpreter languages and scripting → External python modules

          python-pygments

          → Interpreter languages and scripting → External python modules

          python-pyinotify

          → Interpreter languages and scripting → External python modules

          python-pymysql

          → Interpreter languages and scripting → External python modules

          python-pynacl

          → Interpreter languages and scripting → External python modules

          python-pyopenssl

          → Interpreter languages and scripting → External python modules

          python-pyparsing

          → Interpreter languages and scripting → External python modules

          python-pyparted

          → Interpreter languages and scripting → External python modules

          python-pypcap

          → Interpreter languages and scripting → External python modules

          python-pyqt

          → Interpreter languages and scripting → External python modules

          python-pyratemp

          → Interpreter languages and scripting → External python modules

          python-pyro

          → Interpreter languages and scripting → External python modules

          python-pyroute2

          → Interpreter languages and scripting → External python modules

          python-pysendfile

          → Interpreter languages and scripting → External python modules

          python-pysmb

          → Interpreter languages and scripting → External python modules

          python-pysnmp

          → Interpreter languages and scripting → External python modules

          python-pysnmp-apps

          → Interpreter languages and scripting → External python modules

          python-pysnmp-mibs

          → Interpreter languages and scripting → External python modules

          python-pysocks

          → Interpreter languages and scripting → External python modules

          python-pytablewriter

          → Interpreter languages and scripting → External python modules

          python-pytrie

          → Interpreter languages and scripting → External python modules

          python-pytz

          → Interpreter languages and scripting → External python modules

          python-pyudev

          → Interpreter languages and scripting → External python modules

          python-pyusb

          → Interpreter languages and scripting → External python modules

          python-pyxb

          → Interpreter languages and scripting → External python modules

          python-pyyaml

          → Interpreter languages and scripting → External python modules

          python-pyzmq

          → Interpreter languages and scripting → External python modules

          python-requests

          → Interpreter languages and scripting → External python modules

          python-rpi-gpio

          → Interpreter languages and scripting → External python modules

          python-rtslib-fb

          → Interpreter languages and scripting → External python modules

          python-scapy3k

          → Interpreter languages and scripting → External python modules

          python-sdnotify

          → Interpreter languages and scripting → External python modules

          python-serial

          → Interpreter languages and scripting → External python modules

          python-service-identity

          → Interpreter languages and scripting → External python modules

          python-setproctitle

          → Interpreter languages and scripting → External python modules

          python-setuptools

          → Interpreter languages and scripting → External python modules

          python-shutilwhich

          → Interpreter languages and scripting → External python modules

          python-simplejson

          → Interpreter languages and scripting → External python modules

          python-singledispatch

          → Interpreter languages and scripting → External python modules

          python-sip

          → Interpreter languages and scripting → External python modules

          python-six

          → Interpreter languages and scripting → External python modules

          python-smbus-cffi

          → Interpreter languages and scripting → External python modules

          python-socketio

          → Interpreter languages and scripting → External python modules

          python-spidev

          → Interpreter languages and scripting → External python modules

          python-thrift

          → Interpreter languages and scripting → External python modules

          python-tomako

          → Interpreter languages and scripting → External python modules

          python-tornado

          → Interpreter languages and scripting → External python modules

          python-treq

          → Interpreter languages and scripting → External python modules

          python-twisted

          → Interpreter languages and scripting → External python modules

          python-txaio

          → Interpreter languages and scripting → External python modules

          python-u-msgpack

          → Interpreter languages and scripting → External python modules

          python-ubjson

          → Interpreter languages and scripting → External python modules

          python-ujson

          → Interpreter languages and scripting → External python modules

          python-urllib3

          → Interpreter languages and scripting → External python modules

          python-urwid

          → Interpreter languages and scripting → External python modules

          python-versiontools

          → Interpreter languages and scripting → External python modules

          python-watchdog

          → Interpreter languages and scripting → External python modules

          python-wcwidth

          → Interpreter languages and scripting → External python modules

          python-web2py

          → Interpreter languages and scripting → External python modules

          python-webpy

          → Interpreter languages and scripting → External python modules

          python-werkzeug

          → Interpreter languages and scripting → External python modules

          python-ws4py

          → Interpreter languages and scripting → External python modules

          python-wsaccel

          → Interpreter languages and scripting → External python modules

          python-xlrd

          → Interpreter languages and scripting → External python modules

          python-xlsxwriter

          → Interpreter languages and scripting → External python modules

          python-xlutils

          → Interpreter languages and scripting → External python modules

          python-xlwt

          → Interpreter languages and scripting → External python modules

          python-zope-interface

          → Interpreter languages and scripting → External python modules

          python3

          → Interpreter languages and scripting

          qdecoder

          → Libraries → Networking

          QEMU

          → Miscellaneous

          qextserialport

          → Graphic libraries and applications (graphic/text)

          qhull

          → Libraries → Other

          qjson

          → Graphic libraries and applications (graphic/text)

          qlibc

          → Libraries → Other

          qpdf

          → Miscellaneous

          qpid-proton

          → Libraries → Networking

          Qt

          → Graphic libraries and applications (graphic/text)

          qt-webkit-kiosk

          → Graphic libraries and applications (graphic/text)

          Qt5

          → Graphic libraries and applications (graphic/text)

          qt53d

          → Graphic libraries and applications (graphic/text)

          qt5base

          → Graphic libraries and applications (graphic/text)

          qt5canvas3d

          → Graphic libraries and applications (graphic/text)

          qt5cinex

          → Graphic libraries and applications (graphic/text)

          qt5connectivity

          → Graphic libraries and applications (graphic/text)

          qt5declarative

          → Graphic libraries and applications (graphic/text)

          qt5enginio

          → Graphic libraries and applications (graphic/text)

          qt5graphicaleffects

          → Graphic libraries and applications (graphic/text)

          qt5imageformats

          → Graphic libraries and applications (graphic/text)

          qt5location

          → Graphic libraries and applications (graphic/text)

          qt5multimedia

          → Graphic libraries and applications (graphic/text)

          qt5quickcontrols

          → Graphic libraries and applications (graphic/text)

          qt5quickcontrols2

          → Graphic libraries and applications (graphic/text)

          qt5script

          → Graphic libraries and applications (graphic/text)

          qt5sensors

          → Graphic libraries and applications (graphic/text)

          qt5serialbus

          → Graphic libraries and applications (graphic/text)

          qt5serialport

          → Graphic libraries and applications (graphic/text)

          qt5svg

          → Graphic libraries and applications (graphic/text)

          qt5tools

          → Graphic libraries and applications (graphic/text)

          qt5webchannel

          → Graphic libraries and applications (graphic/text)

          qt5webkit

          → Graphic libraries and applications (graphic/text)

          qt5websockets

          → Graphic libraries and applications (graphic/text)

          qt5x11extras

          → Graphic libraries and applications (graphic/text)

          qt5xmlpatterns

          → Graphic libraries and applications (graphic/text)

          qtuio

          → Graphic libraries and applications (graphic/text)

          quagga

          → Networking applications

          quazip

          → Graphic libraries and applications (graphic/text)

          quota

          → System tools

          qwt

          → Graphic libraries and applications (graphic/text)

          rabbitmq-c

          → Libraries → Networking

          racehound

          → Debugging, profiling and benchmark

          radvd

          → Networking applications

          ramspeed

          → Debugging, profiling and benchmark

          ramspeed/smp

          → Debugging, profiling and benchmark

          randrproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          ranger

          → Shell and utilities

          rapidjson

          → Libraries → JSON/XML

          rapidxml

          → Libraries → JSON/XML

          raptor

          → Libraries → JSON/XML

          rdesktop

          → Graphic libraries and applications (graphic/text)

          read-edid

          → Hardware handling

          readline

          → Libraries → Text and terminal handling

          recordproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          redis

          → Libraries → Database

          renderproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          resourceproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          rfkill

          → Hardware handling

          rgb

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          rings

          → Interpreter languages and scripting → Lua libraries/modules

          rng-tools

          → Hardware handling

          roxml

          → Libraries → JSON/XML

          rp-pppoe

          → Networking applications

          rpcbind

          → Networking applications

          rpi-firmware

          → Hardware handling → Firmware

          rpi-userland

          → Hardware handling

          rpm

          → Package managers

          rrdtool

          → Graphic libraries and applications (graphic/text)

          rs485conf

          → Hardware handling

          rsh-redone

          → Networking applications

          rstart

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          rsync

          → Networking applications

          rsyslog

          → System tools

          rt-tests

          → Debugging, profiling and benchmark

          rtai

          → Real-Time

          rtl8188eu

          → Hardware handling

          rtl8821au

          → Hardware handling

          rtorrent

          → Networking applications

          rtptools

          → Networking applications

          rubix

          → Games

          ruby

          → Interpreter languages and scripting

          runc

          → System tools

          samba4

          → Networking applications

          sane-backends

          → Hardware handling

          sbc

          → Libraries → Audio/Sound

          sconeserver

          → Networking applications

          screen

          → Shell and utilities

          Script Module

          → Graphic libraries and applications (graphic/text)

          scripts

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          scrnsaverproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          scrub

          → System tools

          scrypt

          → System tools

          SDL

          → Graphic libraries and applications (graphic/text)

          sdl2

          → Graphic libraries and applications (graphic/text)

          sdl2_gfx

          → Graphic libraries and applications (graphic/text)

          sdl2_image

          → Graphic libraries and applications (graphic/text)

          sdl2_ttf

          → Graphic libraries and applications (graphic/text)

          SDL_gfx

          → Graphic libraries and applications (graphic/text)

          SDL_image

          → Graphic libraries and applications (graphic/text)

          SDL_mixer

          → Graphic libraries and applications (graphic/text)

          SDL_net

          → Graphic libraries and applications (graphic/text)

          SDL_sound

          → Graphic libraries and applications (graphic/text)

          SDL_TTF

          → Graphic libraries and applications (graphic/text)

          sdparm

          → Hardware handling

          sed

          → Development tools

          ser2net

          → Networking applications

          sessreg

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          setools

          → Security

          setserial

          → Hardware handling

          setxkbmap

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          sg3-utils

          → Hardware handling

          shairport-sync

          → Networking applications

          shared-mime-info

          → Miscellaneous

          shareware Doom WAD file

          → Games

          shellinabox

          → Networking applications

          showfont

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          sigrok-cli

          → Hardware handling

          simicsfs

          → Filesystem and flash utilities

          sispmctl

          → Hardware handling

          sl

          → Games

          slang

          → Libraries → Text and terminal handling

          slirp

          → Libraries → Networking

          smack

          → System tools

          smartmontools

          → Hardware handling

          smcroute

          → Networking applications

          smproxy

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          smstools3

          → Hardware handling

          snappy

          → Libraries → Compression and decompression

          snmp++

          → Libraries → Networking

          snowball-hdmiservice

          → Hardware handling

          snowball-init

          → Miscellaneous

          socat

          → Networking applications

          socketcand

          → Networking applications

          sofia-sip

          → Libraries → Networking

          softether

          → Networking applications

          sound-theme-borealis

          → Fonts, cursors, icons, sounds and themes

          sound-theme-freedesktop

          → Fonts, cursors, icons, sounds and themes

          sox

          → Audio and video applications

          sp-oops-extract

          → Filesystem and flash utilities

          spawn-fcgi

          → Networking applications

          speex

          → Libraries → Audio/Sound

          sphinxbase

          → Libraries → Other

          spi-tools

          → Hardware handling

          spice protocol

          → Networking applications

          spice server

          → Networking applications

          spidev_test

          → Debugging, profiling and benchmark

          sqlcipher

          → Libraries → Database

          sqlite

          → Libraries → Database

          squashfs

          → Filesystem and flash utilities

          squeezelite

          → Audio and video applications

          squid

          → Networking applications

          sredird

          → Hardware handling

          sshfs (FUSE)

          → Filesystem and flash utilities

          sshpass

          → Networking applications

          sstrip (deprecated)

          → Development tools

          start-stop-daemon

          → System tools

          startup-notification

          → Libraries → Other

          statserial

          → Hardware handling

          stella

          → Games

          stm32flash

          → Hardware handling

          strace

          → Debugging, profiling and benchmark

          stress

          → Debugging, profiling and benchmark

          stress-ng

          → Debugging, profiling and benchmark

          strongswan

          → Networking applications

          stunnel

          → Networking applications

          subversion

          → Development tools

          sudo

          → Shell and utilities

          sunxi nand-part

          → Filesystem and flash utilities

          sunxi script.bin board file

          → Hardware handling → Firmware

          sunxi-cedarx

          → Hardware handling

          sunxi-mali

          → Hardware handling

          supertuxkart

          → Games

          supervisor

          → System tools

          SVG Module

          → Graphic libraries and applications (graphic/text)

          swupdate

          → System tools

          sylpheed

          → Mail

          synergy

          → Graphic libraries and applications (graphic/text)

          sysdig

          → Debugging, profiling and benchmark

          syslog-ng

          → System tools

          syslogd & klogd

          → System tools

          sysprof

          → Debugging, profiling and benchmark

          sysstat

          → Hardware handling

          systemd

          → System tools

          systemd-bootchart

          → System tools

          sysvinit

          → System tools

          szip

          → Libraries → Compression and decompression

          taglib

          → Libraries → Audio/Sound

          tar

          → System tools

          targetcli-fb

          → Hardware handling

          taskd

          → Miscellaneous

          tcl

          → Interpreter languages and scripting

          tclap

          → Libraries → Text and terminal handling

          tcllib

          → Interpreter languages and scripting → Tcl libraries/modules

          tcpdump

          → Networking applications

          tcping

          → Networking applications

          tcpreplay

          → Networking applications

          tekui

          → Graphic libraries and applications (graphic/text)

          terminology

          → Shell and utilities

          tftpd

          → Networking applications

          thrift

          → Libraries → Networking

          thttpd

          → Networking applications

          ti-gfx

          → Hardware handling

          ti-sgx-demos

          → Hardware handling

          ti-sgx-km

          → Hardware handling

          ti-sgx-um

          → Hardware handling

          ti-uim

          → Hardware handling

          ti-utils

          → Hardware handling

          tidsp-binaries

          → Audio and video applications

          tiff

          → Libraries → Graphics

          time

          → Shell and utilities

          tinc

          → Networking applications

          tinyalsa

          → Libraries → Audio/Sound

          tinycbor

          → Libraries → Other

          tinydtls

          → Libraries → Crypto

          tinyhttpd

          → Networking applications

          tinymembench

          → Debugging, profiling and benchmark

          tinyxml

          → Libraries → JSON/XML

          tinyxml2

          → Libraries → JSON/XML

          tmux

          → Shell and utilities

          tn5250

          → Networking applications

          tor

          → Networking applications

          torsmo (deprecated)

          → Graphic libraries and applications (graphic/text)

          tovid

          → Audio and video applications

          tpm-tools

          → System tools

          trace-cmd

          → Debugging, profiling and benchmark

          transmission

          → Networking applications

          tree

          → Development tools

          tremor (fixed point vorbis decoder)

          → Libraries → Audio/Sound

          triggerhappy

          → Hardware handling

          trinity

          → Debugging, profiling and benchmark

          trousers

          → Libraries → Crypto

          tslib

          → Libraries → Hardware handling

          tstools

          → Audio and video applications

          tunctl

          → Networking applications

          turbolua

          → Interpreter languages and scripting → Lua libraries/modules

          tvheadend

          → Networking applications

          twm

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          twolame

          → Audio and video applications

          u-boot tools

          → Hardware handling

          ubus

          → Hardware handling

          udisks

          → Hardware handling

          udpcast

          → Networking applications

          uemacs

          → Text editors and viewers

          ulogd

          → Networking applications

          unionfs (FUSE)

          → Filesystem and flash utilities

          unixodbc

          → Libraries → Database

          unrar

          → Compressors and decompressors

          unscd

          → System tools

          unzip

          → Compressors and decompressors

          upmpdcli

          → Audio and video applications

          urg

          → Libraries → Hardware handling

          usb_modeswitch

          → Hardware handling

          usb_modeswitch_data

          → Hardware handling

          usbmount

          → Hardware handling

          usbredir

          → Libraries → Networking

          usbutils

          → Hardware handling

          ushare

          → Networking applications

          ussp-push

          → Networking applications

          ustr

          → Libraries → Text and terminal handling

          util-linux

          → System tools

          util-macros

          → Miscellaneous

          ux500-firmware

          → Hardware handling → Firmware

          v4l2grab

          → Audio and video applications

          valgrind

          → Debugging, profiling and benchmark

          valijson

          → Libraries → JSON/XML

          vde2

          → Networking applications

          videoproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          viewres

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          vim

          → Text editors and viewers

          vlc

          → Audio and video applications

          vnstat

          → Networking applications

          vo-aacenc

          → Libraries → Audio/Sound

          vorbis-tools

          → Audio and video applications

          vpnc

          → Networking applications

          vsftpd

          → Networking applications

          vtun

          → Networking applications

          w_scan

          → Hardware handling

          wavemon

          → Networking applications

          wavpack

          → Audio and video applications

          wayland

          → Libraries → Graphics

          wayland-protocols

          → Libraries → Graphics

          webkit (deprecated)

          → Libraries → Graphics

          WebKit Module

          → Graphic libraries and applications (graphic/text)

          webkitgtk

          → Libraries → Graphics

          webkitgtk 2.4.x (deprecated)

          → Libraries → Graphics

          webp

          → Libraries → Graphics

          webrtc-audio-processing

          → Libraries → Audio/Sound

          weston

          → Graphic libraries and applications (graphic/text)

          wf111

          → Hardware handling

          wget

          → Networking applications

          whetstone

          → Debugging, profiling and benchmark

          which

          → Shell and utilities

          whois

          → Networking applications

          wilc1000-firmware

          → Hardware handling → Firmware

          windowswmproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          wine

          → Miscellaneous

          wipe

          → Hardware handling

          wireless tools

          → Networking applications

          wireless-regdb

          → Networking applications

          wireshark

          → Networking applications

          wiringpi

          → Libraries → Hardware handling

          wmctrl

          → Graphic libraries and applications (graphic/text)

          wpa_supplicant

          → Networking applications

          wpan-tools

          → Networking applications

          wsapi

          → Interpreter languages and scripting → Lua libraries/modules

          wvdial

          → Networking applications

          wvstreams

          → Libraries → Networking

          x11perf

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          x11vnc

          → Graphic libraries and applications (graphic/text)

          x264

          → Libraries → Multimedia

          x265

          → Libraries → Multimedia

          xauth

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xavante

          → Interpreter languages and scripting → Lua libraries/modules

          xbacklight

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xbiff

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xbitmaps

          → Graphic libraries and applications (graphic/text) → X11R7 Other data

          xcalc

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xcb-proto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xcb-util

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          xcb-util-cursor

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          xcb-util-image

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          xcb-util-keysyms

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          xcb-util-renderutil

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          xcb-util-wm

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          xclipboard

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xclock

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xcmiscproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xcmsdb

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xcompmgr

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xconsole

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xcursor-transparent-theme

          → Graphic libraries and applications (graphic/text) → X11R7 Other data

          xcursorgen

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xdata_xcursor-themes

          → Graphic libraries and applications (graphic/text) → X11R7 Other data

          xdbedizzy

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xditview

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xdm

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xdotool

          → Graphic libraries and applications (graphic/text)

          xdpyinfo

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xdriinfo

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xedit

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xen

          → System tools

          Xenomai Userspace

          → Real-Time

          xerces-c++

          → Libraries → JSON/XML

          xev

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xextproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xeyes

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xf86-input-evdev

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-input-joystick

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-input-keyboard

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-input-libinput

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-input-mouse

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-input-synaptics

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-input-tslib

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-input-vmmouse

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-amdgpu

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-ark

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-ast

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-ati

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-cirrus

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-dummy

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-fbdev

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-fbturbo

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-geode

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-glide

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-glint

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-i128

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-imx

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-imx-viv

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-intel

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-mach64

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-mga

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-neomagic

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-nouveau

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-nv

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-openchrome

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-qxl

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-r128

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-savage

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-siliconmotion

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-sis

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-tdfx

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-tga

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-trident

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-v4l

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-vesa

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-vmware

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-voodoo

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86-video-wsfb

          → Graphic libraries and applications (graphic/text) → X11R7 Drivers

          xf86bigfontproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xf86dga

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xf86dgaproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xf86driproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xf86vidmodeproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xfd

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xfindproxy

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xfontsel

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xfs

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xfsinfo

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xfsprogs

          → Filesystem and flash utilities

          xgamma

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xgc

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xhost

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xineramaproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xinetd

          → Networking applications

          xinit

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xinput

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xinput-calibrator

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xkbcomp

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xkbevd

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xkbprint

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xkbutils

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xkeyboard-config

          → Graphic libraries and applications (graphic/text)

          xkill

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xl2tp

          → Networking applications

          xload

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xlogo

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xlsatoms

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xlsclients

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xlsfonts

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xmag

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xman

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xmessage

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xmh

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          XML Patterns Module

          → Graphic libraries and applications (graphic/text)

          xmlstarlet

          → Shell and utilities

          xmodmap

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xmore

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xorg-server

          → Graphic libraries and applications (graphic/text) → X11R7 Servers

          xorriso

          → Hardware handling

          xpr

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xprop

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xproto

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xproxymanagementprotocol

          → Graphic libraries and applications (graphic/text) → X11R7 X protocols

          xrandr

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xrdb

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xrefresh

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xscreensaver

          → Graphic libraries and applications (graphic/text)

          xset

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xsetmode

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xsetpointer

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xsetroot

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xsm

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xstdcmap

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xtables-addons

          → Networking applications

          xterm

          → Graphic libraries and applications (graphic/text)

          xtrans

          → Graphic libraries and applications (graphic/text) → X11R7 Libraries

          xvidtune

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xvinfo

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xvkbd

          → Graphic libraries and applications (graphic/text)

          xwd

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xwininfo

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xwud

          → Graphic libraries and applications (graphic/text) → X11R7 Applications

          xxhash

          → Shell and utilities

          xz-utils

          → Compressors and decompressors

          yad

          → Graphic libraries and applications (graphic/text)

          yajl

          → Libraries → JSON/XML

          yaml-cpp

          → Libraries → JSON/XML

          yasm

          → Development tools

          yavta

          → Audio and video applications

          ympd

          → Audio and video applications

          zbar

          → Libraries → Graphics

          zd1211-firmware

          → Hardware handling → Firmware

          zeromq

          → Libraries → Networking

          zip

          → Compressors and decompressors

          zlib

          → Libraries → Compression and decompression

          zlog

          → Libraries → Logging

          zmqpp

          → Libraries → Networking

          znc

          → Networking applications

          zsh

          → Shell and utilities

          zxing-cpp

          → Libraries → Graphics

          zyre

          → Libraries → Networking

          Chapter 25. List of virtual packages

          These are the virtual packages known to Buildroot, with the -corresponding symbols and providers.

          Virtual packages Symbols Providers

          cryptodev

          BR2_PACKAGE_HAS_CRYPTODEV

          cryptodev-linux, ocf-linux

          jpeg

          BR2_PACKAGE_HAS_JPEG

          jpeg, jpeg-turbo

          libegl

          BR2_PACKAGE_HAS_LIBEGL

          mesa3d (w/ OpenGL EGL), gpu-amd-bin-mx51 (also imx53), imx-gpu-viv, mali-t76x, nvidia-driver (w/ X.org drivers), nvidia-tegra23 binaries, odroid-mali, rpi-userland, sunxi-mali, ti-gfx, ti-sgx-um

          libgl

          BR2_PACKAGE_HAS_LIBGL

          mesa3d (w/ DRI swrast driver), mesa3d (w/ DRI i915 driver), mesa3d (w/ DRI i965 driver), mesa3d (w/ DRI nouveau driver), mesa3d (w/ DRI radeon driver), xf86-video-imx-viv, nvidia-driver (w/ X.org drivers)

          libgles

          BR2_PACKAGE_HAS_LIBGLES

          mesa3d (w/ OpenGL ES), gpu-amd-bin-mx51 (also imx53), imx-gpu-viv, mali-t76x, nvidia-driver (w/ X.org drivers), nvidia-tegra23 binaries, odroid-mali, rpi-userland, sunxi-mali, ti-gfx, ti-sgx-um

          libopenmax

          BR2_PACKAGE_HAS_LIBOPENMAX

          bellagio, nvidia-tegra23 binaries, rpi-userland

          libopenvg

          BR2_PACKAGE_HAS_LIBOPENVG

          gpu-amd-bin-mx51 (also imx53), imx-gpu-viv, rpi-userland

          luainterpreter

          BR2_PACKAGE_HAS_LUAINTERPRETER

          lua, luajit

          powervr

          BR2_PACKAGE_HAS_POWERVR

          ti-gfx, ti-sgx-um

          udev

          BR2_PACKAGE_HAS_UDEV

          eudev, systemd

          Chapter 26. List of host utilities available in Buildroot

          The following packages are all available in the menu Host utilities.

          Packages

          host aespipe

          host android-tools

          host cbootimage

          host checkpolicy

          host cramfs

          host dfu-util

          host dos2unix

          host dosfstools

          host dtc

          host e2fsprogs

          host e2tools

          host faketime

          host fwup

          host genext2fs

          host genimage

          host genpart

          host gptfdisk

          host imx-usb-loader

          host jq

          host jsmin

          host lpc3250loader

          host mke2img

          host mtd, jffs2 and ubi/ubifs tools

          host mtools

          host mxsldr

          host omap-u-boot-utils

          host openocd

          host parted

          host patchelf

          host pwgen

          host qemu

          host sam-ba

          host squashfs

          host sunxi-tools

          host tegrarcm

          host u-boot tools

          host util-linux

          host vboot utils

          host xorriso

          host zip

          Chapter 27. Deprecated features

          The following features are marked as deprecated in Buildroot due to -them being either too old or unmaintained. They will be removed at -some point, so stop using them. -Each deprecated symbol in kconfig depends on a symbol -BR2_DEPRECATED_SINCE_xxxx_xx, which provides an indication of when -the feature can be removed: features will not be removed within the -year following deprecation. For example, a symbol depending on -BR2_DEPRECATED_SINCE_2013_05 can be removed from 2014.05 onwards.

          Features Location

          SuperH64

          Target options → Target Architecture

          Linux 3.19.x kernel headers

          Toolchain → Kernel Headers

          Linux 4.0.x kernel headers

          Toolchain → Kernel Headers

          Linux 4.2.x kernel headers

          Toolchain → Kernel Headers

          Linux 4.3.x kernel headers

          Toolchain → Kernel Headers

          gcc 4.7.x

          Toolchain → GCC compiler Version

          kodi-addon-xvdr

          Target packages → Audio and video applications → PVR addons

          sstrip

          Target packages → Development tools

          torsmo

          Target packages → Graphic libraries and applications (graphic/text)

          libgail

          Target packages → Libraries → Graphics

          webkit

          Target packages → Libraries → Graphics

          webkitgtk 2.4.x

          Target packages → Libraries → Graphics

          ipkg

          Target packages → Package managers

        \ No newline at end of file + +

    Chapter 25. Converting old br2-external trees

    Before Buildroot 2016.11, it was possible to use only one br2-external +tree at once. With Buildroot 2016.11 came the possibility to use more +than one simultaneously (for details, see Section 9.2, “Keeping customizations outside of Buildrootâ€).

    This however means that older br2-external trees are not usable as-is. +A minor change has to be made: adding a name to your br2-external tree.

    This can be done very easily in just a few steps:

    • +First, create a new file named external.desc, at the root of your + br2-external tree, with a single line defining the name of your + br2-external tree: +

      $ echo 'name: NAME_OF_YOUR_TREE' >external.desc

      Note. Be careful when choosing a name: It has to be unique and be made +with only ASCII characters from the set [A-Za-z0-9_].

    • +Then, change every occurence of BR2_EXTERNAL in your br2-external + tree with the new variable: +

      $ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g'

    Now, your br2-external tree can be used with Buildroot 2016.11 onward.

    Note: This change makes your br2-external tree incompatible with Buildroot +before 2016.11.

    \ No newline at end of file diff --git a/bsp/buildroot/docs/manual/manual.mk b/bsp/buildroot/docs/manual/manual.mk index caf080a8..1d03b213 100644 --- a/bsp/buildroot/docs/manual/manual.mk +++ b/bsp/buildroot/docs/manual/manual.mk @@ -7,25 +7,4 @@ MANUAL_SOURCES = $(sort $(wildcard docs/manual/*.txt) $(wildcard docs/images/*)) MANUAL_RESOURCES = $(TOPDIR)/docs/images -# Our manual needs to generate lists -define MANUAL_GEN_LISTS - $(Q)$(call MESSAGE,"Updating the manual lists...") - $(Q)$(COMMON_CONFIG_ENV) \ - BR2_DEFCONFIG="" \ - TOPDIR=$(TOPDIR) \ - O=$(@D) \ - python -B $(TOPDIR)/support/scripts/gen-manual-lists.py -endef -MANUAL_POST_RSYNC_HOOKS += MANUAL_GEN_LISTS - -# Our list-generating script requires argparse -define MANUAL_CHECK_LISTS_DEPS - $(Q)if ! python -c "import argparse" >/dev/null 2>&1 ; then \ - echo "You need python with argparse on your host to generate" \ - "the list of packages in the manual"; \ - exit 1; \ - fi -endef -MANUAL_CHECK_DEPENDENCIES_HOOKS += MANUAL_CHECK_LISTS_DEPS - $(eval $(call asciidoc-document)) diff --git a/bsp/buildroot/docs/manual/manual.pdf b/bsp/buildroot/docs/manual/manual.pdf index 008e5609d18204904cad6fc910037e5507fb5e1a..3c63d0a0e9c00ce3da1f36080c482fe72df2dd1f 100644 GIT binary patch delta 389364 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 z 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

    wwJw-TfU79Bp0bxm`>*E#`L%FbF(8ZkTOjl&eg z5AX>#^<}$TVI?juSo z*JpbFBbz>AA?HweN~jOO`X}bqOf7^@4dam%xPH#3@D(CvGrkXzNN|(ZWZY?dWra68 z=HfE){Fbmv2j-EH_*#C;V>6+u&>HHb;#BNrcP3$vhhx3Hn|b>d;e@d32RH-!7y9Td z0pUmM9ZIxehg>rw0%B(`esQ_>kLMcHaH)>zn|I`h*irOjw@N^4ggW-aukGSVfJ848 zZZ!s*4zO<_*1?)#T^p3ZHzD#se@WQd#eU`Gm?0drkgT{RwkRs-cf*(QYav3gIDq|X z`x)uy_y5pJVDKn+qH`MaRJ)?Gk+`I-pwNv@(a+$pekS$=zX#oCjVgd~Z@57w=bbqV z0aNn#9Muh*&{|K-=VzQ9kVd@z0--{4NA!t%p7t_PjcfnvuE(8^eyj9suJ-}oQ_!>i zKYa?$|DH&S#Kj56ByVbG?qWg0@|A-AUzs`8+T(UQTnOt^S{5se72mqWVVS}9KwBVx zkc2l{SetC~1}$1Jqd$Qb0hKkU*94LClo!P*g1^hKjF^nKCg5Oq zSKvHHoH2+RJ**|Dwq+!WcSj|p2Gk8aY=-5{IetQa2x9>cC#Zcsm4rRESg|VR7t~a6-byDC#eK_(@aqHYI%P_t2%TPAl zY*0|la-_CRPNAk6^rLlE^;~}`(7D5K;(0oawJ++n5yrc~=~3exh!m6Xd&AM52Mg0> z#8$^3Q%AzJja~+cvFTX|iO5XWXnKKIk+8635cI+WR+ecPr2!B}_u_s8Q+*#ELJ&I%ja2xtBqV-dj%caNv+ z>jbA3>B_>c!kvSLB80NVN-#jfM+soL3>JYX7-+BxCdMID79T;w66uw%hXDh2XaoZN z5e?Am*6PKjM@R{;VMIq<@<4(la0}Q+(8!CR&{@T-k;d5u58~~9!HoBkaKiL_#f=F+ z4UsX~VK}kwamQ>6;9&%@LR2*5V{9uGEsVFQ!7Y(wDm*PP<$}9?g17pjk?C2)DB|mX zlR$1aVigI?OOg!r6{o7>8Cpm@jFbOZ>j*)fjyiF`*w4Zr@(78|tb#wTmPvy0yPx5~0i z9)I%yiF)3_QpKn=)lw>TI_{*CTB?LJe&h3g(9o%W_1sgt^t8QKdv67JMh`7zjYq8? z2OL-Kue=y}yZW_vFI)OO*6J@YO(_!DZYJ-B0?SQfC?MJu#@)SE)Q8L}?U(!=sDam{ z5JJkefyP!(Wr(9sj-A5-+^azxts(rvLh?$-vpStO%FxiQ}GsPLnvz;>q_bn3zg_*%__y5 z)wfWpjQ7ff!Ih~W2^KpiP5#Ogma4_VCF%W~)ouP~77IsStwN=`OqIef6{1*E_Q7+O z9|@N?;8n@*tX?)jmpD$6JRbRyJrJoi5hCBFbwpskv3K!e-zP&g^Dk3f(vne3&LP-HpHLQ`ZtWKYA6nlVtj?BT^G zzH;zzWoDcbPHAy*+MT-@qx+s=vvZCQOqjt(jdW}X=|nCH<+kuIZ)=XvEaatiJnBz! zepaPQt=^`c-mU|(=R-GhH@7!W>26HhtF)X$7706=Ml^ba?@aI-kq_9eQ~d>D9VkR8 z`y=PKwjysm9le8%=OvS}n^M8u5yY*j^8sqw)4%d(Vpla|IQdnvNBZ@o6h8$$ecJ@3 zDs&#f;UeJYep8{Cf1}@AfY<=(u?NF-p{NfHRdH6fbwvWk42u_91B>c{Uxm{Mnq%^GwJBd!j1rb+c|d8$IT5<77{j7L{Y*$38~y^US0bECn( zwdV;?AL=e=M1x0>cJrL0yq$9bC`r${3&Kb0MCcCH>I{tQ9$x@A zB|9Ml<7F$P*QZGWb&u{|*v79v`p|%4-)o(_&oSdlRM)QDlpwv=3Lf!+^YZum7t;$N zF$J}t|7pg#Sy|EoRKPJn*^^k(zaEBkb?xzFuzVkDk0vgH2qT<)-L$INzoA0&$>Z?B z%d`I)4Y$l{7U|o9B;ey~{PeA)l~$dWsA#Q;W{AOnTuY8ae$4LnwRd;rP^>}A&OYlp zx*#Mnr&EzGW>;uWi;z~S&`zX%&rB#1df-3898(lgzc zo}W003E%#`e_Uzrh+DNLr#SGB$D62s)R%&(Qh(9 z7kX$DqfWc@{f1=pfd}6}R4vxFpV6I)|EVHU?;)nl=>jgd_gng%d zOSnJ`uJ$)aWn&!U_a9@1;43@yVt-iQH9R{}{yp`gh>o_4{kfNxp)+nJVd;|noAof7 zOXS2eW*)RZ0`iYa6sEGW}~>dMaPF$Xoo`g?;Z9H@A`H^{4>}$Aggk%3P9$L_E1XaQarE zjju1~O23IZ?8_hrG1kDIYx=dRX@SXlDka?Zje+&g=HX($YDi0E%WD_tFfOIjbF*J_ z-YYiH?d@YYuNF}%K$vk^46{_C$+eBiF1RfO^+ zT^coUljg`@=4TBOql64DSp3XRUzzy5reG>`X#vjEsS@2l>nPKP76D2#fw0|%zU@5e zDiXI;()Ioo-Bx&`TkkcB0EdDo`@$DiXJ3?BSBtf%==3g*QZUTsq?J42y8pFwpCoxX zahgN~n=-+@K&MVZ*s>>QNwkBs>o=2 z@eT$HY8kMQkFy?pfjgfZGShFn3qF8Id5XkE9!~pt3s$uT$(v+7^1hEdc1!8;st2N(FN;oE;=pxiWg-&peViGV;=(s()r9t#@e)b=Ek)`y|TkSI@6b$4BFDLB`;cWqJ9~ukRDX&|ZkLi?+?`Bw1}i@rr5R!MwZNlFazJe=%eb;=e^N{8+%_8P{}jHtyfxERbAVMv#@^FNk8UWfJ_ z&Q_2!b$@yOJ6`#}3V$-@ zcU6t~u2O}l$Bbm4tj?Kkaj^ne^Pge*1LriD>?`?s*h}a~raB_>rKl5UoPyK;VR@rk zAcfh68MP6#z02u&lB9cBtsk$YnClt85Te#xrSzb3n{|rSa8+Jd=dD80NDB%AbjZyOR^Wb zLf1K7I$sp>GtHPz#+#d9h7#4U@4`QvvmL)Rdi4Iq(```xgcm(d7L{#xq?`Zv%Q-`-AGO zGr?a1*Z(DOA*Bcj(E=LVLA8}mHjy_L4XaPWD_XrJ|( ztk(}fsBH6K_Q?z8NOW~oEHN=wQnmT%DqC9ZSp@!j5(Y#HOmYHQi#=&SCA+dId}evQ zRqRt*RtdW*c!B5jMri9h;v>$UEFV7>8qS;}KK)eFs0!XpEqaf94S)4@#Ze3+dUz+< z*Rv|`wd0&F+oqrQdBi8COUmNZB*qircqe1@{Mv&-`%Gy27Mk)sIHtN7fsmptcRB~wp; z-1Qu4$${(h_hFB7XI1zt+aA-WArfNf6xpa+R1dpI*|`Ss#;6$NCivv4IYxEVb*!Sz zHO9N`Gu8~`$m3s)TFqr|zuLwFp)=v77tR?XT75+*`kT_l%MGF1Rr?l~cjb8wlGS-tU(mG04yCdyG>Z9r-e!?>mCMjX}@%H1qX; z??h$@tarf);VDnu=;adr9_hzI^19tt+R4?QexvkTuby|womsQm1z(5z`U3cdDUJF7 zu@0w?zcfHGc$YOJZ?p@p07iMr3A^pJcZ0BGuQW$=QnLPntG2KizN|(5@F#SVbX8XPX@AA-;bZTd*%<8%z_*ELW}A>~$aK z$TD##(KPfBw(Ik9jbH1b2(ZpYO5Xa%Am4!`SFM64l4bkmPX2B+1Xj@&qNr2P+@{tq zJF1;NdIrvI7|lUPy}MO9q4230vgSOx>$d`$K~-HlsK~=njxRGK=cs`S`;S$ha11i} zIqV6zFDT)^sK!==gIe%5F`btuL`2>DO=a&>!Tkz{tNI6f+{zOm9QSn=2@GQvejsJ7 zP1@TL<kJP#_`aG0#;?+(vu>2KxmVwLIC_Xocl{-l8bZjJAGun+$eiAp*ygr}9JP zt)qi@%b5oU=TbeCSYG8reyi7F}>^u3vQb0qgM5- zrNJMCjX1u7A0`Vfi|goagodpU$S)Y1tw(Z-eOuzvgt{5?OUin7VAZS5w+?1xwK>=C zM*dI<7uS*A2!$4WfR=Vu17FWpDdaMs*uNpUe|vV;GI1+~fXyk3*B0n0aLm)+jON#B zoU}N*a-dk-!QR`+-X=8!m0=h=fwJ~7U)23* znowP1aJ@c3wDw?*H;42269oAQA<_u`#!s~qO?r1-BKRrD7K3Hj6g z@ij!|-1mZ}08IFy>Rvxjrs~V^^?WSj+Nkjdxi@ zIN82}VrqJl{j{A4S;N;Km0BsS^!`XmeZs^HSvdyQ{3LzeyV9nuEGQ~fTuSUv7Tyj;oDP3MG2B-snl1jQHb2dHmnsgu0Y{`U&T6WsDA z{4yzeA80>?4=?)hY@P*KQicGT!XWC+l^zcdrPwXGE(U)}mG@ogs26MFuZtro(0Rk{ zYutZzSRY2^D%txBIW(~WQRSoas4EFmrjB_$lnReSMQ(wFztv^gYeaf2VW!SwmqSd^5 z*Kp$N73w1m%s0R$;~8=k5E7?{Ax!g^Qr)~@pbbE#d!|o}u|gjpIKN0oI>(`6y5+ey zf6T~rYMh%At#bC{e%HOkIY6YhLpq$7bHs^RrZ({(fr6IV^Yj7Z_9h-)dwePslC zh)aJ49MnMX%)A6<#CO}y@z_Z9aPn#3C5YCSt_7q@lEvL+a7FD0RX882AJs@?ml#RQ zfl3fXWrCkO{+5Q0ER_6KGu77Z>2H6W1^pD?P7vNG+ap4wK48kP#RnOI7dmeW7Cq0O z#a*VyY1ygVf)pV1b8Tp)`a14}Gp`nhi>aJoND3F*)Is692Iy+s-+vpGRgnZPb{d?~uQG#w6DDIBwu zTR*EmShhEL_w!Fgpd}N@j*%)D(P~dM6nQc!>6gLDY}|Er`k`=>u#4nuXw%%LHz+@g zm=-kDkIkvScA8DFuKd$I!}|;CEB(?{(_fsLcUiFIkGe*!xrrq|S5!49hAlE^u6&1d z^rl#pMVc3UG-REpo@PEk!-xPJjkGv}WDO!+-Zd_pWk9rphLR*gc=#6tx$eAfu^DcT zPad?3+Wy z1;5UCc{bse-zjyUK_CqislI z!7E&m{S3-1>H=jH1n21y+n?jnqSm#!=J|2-qodNb)q{lS$4>Gv9(Ixu$REr@G3OP7 zr|d#lQHd+{*)V|77(`{RLf9lHFT3u>vgY_dXFvA)2KrDI1gD|AlPa?G{fkf%=iN9j+o(oQSnYwna=zcqm^Xyo83y3 z8HM)y+efp5$XUtl`6Bw_ntiU3Ezf6&4%TG)&|IoJzj5zbxB#u1WD zb@W6oBS;}xBoocs>cs4!Om6VXmt{pN$B4w;#WIr~g4%CFvi)seK7Ow_+VxSU+>rTX zph4!@AfFC!D@iyt@6`UY>k-q*yC1xvsrt8&vtQDmDk2sgb-t|d?*~=af={WWyFfR3 z%J(7_;hGwrnSHawiW}C;Q26*V+Ugmh%z^TmvOd$cC+CrLzkS@qZMG}2>kXmAS zefKZv;*d{LS3i5gTjjSZyEo+y)E5U)kR}QqwPfG*nwL-+r0BPd6W8rh^GzQ6dTG~&~r6@U#R^K~)I=cC*d z)@%v_kcs5cgJInDW>r3(Pws1LH?sBfd|#ekSN0FBcd4_n~Wv^ zsGI**fVI8)l`Tm##UZf{ZLjTZ$3Vo;|E7>tK8Fjgo$KtUO2Hb|nX6;%%Uk_(L zSKo(|f#;QCnK@?3;QOtQ+W<_8@TEr@DG<{mpp=9!j``L8!}UZ6#J#@m|Km2Wq=Dvu zQzLV8vHjn0CmUxHs1hwut*slU!-3$Nr=K9@(Tl!XzbjoS`#ueZCXIOxUUwp9DOFbZ zPo(2#`I~oa>1spB&pQ9GnTa(X$1~^bWn4|$t_e!p=waR;5Z$z)fz)~mBXgP3g`E+| z{N{5+z1nJWI_$dLS=N2B_A}o2plUf;GF!A0C0peaE7t@Q0*;FS)rQ0fp79QkVbt{? z!EfEW1*4sTE(XxpHU{X}V#kp*1MYtl%>Jc>b`U>}iL~KQnV}J&naSz`VYJ2ENz(w9EioT5Ku7FX$Q8p z{r5p5jCvdTB>m-B1_{Aab;$g@t88`VDw&gZrH5Jz&gCO%;3X zzoQfVpksm!-CIZR%w&atgQ+k;2Ol<=&~0VM6i2DSq1c82ggJgYn8Z#(c+VvSi)j(c zv<@^-Zs#j8z~EQ^SS`s@nAqk0L9ByvzoE7hi=PJV8S%FWFu^0o9{Ow8M#GK|1&}kZtC`ku@@q)q z#bwYPPG%YdXOoj|uTtkmM*4RTx~stFK-@$&fupCE>XYm9!TqUuhxg+LlC^W9$RZrp zBpObY;l!VOQ^-o|#5$~c5u`TR<#hH+x6(QK;m|em5k^|Wf)J?*{cDLpM791&#YXJ< zW}2x1G&hKevi+c=BK|H}ZO6z$c$+2%ytF#s=>|NYt224Aq8NPA@Z^UabgroH;wpGI-6-(^k>SI~F51$#tZka<1GePnPQHb&U#xIcBd&4m+yUS?9=l9*p-6-m?EVr45 zIN}_j<$Z2oHS3|Tv9#yis~33+5IlQ8-rnE7Ilwc0ZThhLT;G0qIyf2HesMX;)ARNA zcs_X!+Ff-^(8De4V(7*=#ntrogGBeALVrW9XefRXUcg2WY-FAiru)$N7uVa;sfbOl zGKe>a$8mJj#5rq#UYYYEiDzTvsp4L3=#2tAX7V^@JhP5tR8rB>r)XQ2ZVxG5Nt}$Hy6UFz( zCSPwUU(8Zg0Zxt7W)e@+LGdmVV>qY5xz=FhNAkKkEWU`G6`w_Zh>pZ$sM1Ln732@V z@I=BrOhuoAHWX=W)dKdLEWfoX0+vg?1TAlpHUsAxhqR^wTuzh&a)qJoY}rhHq**t1 zJ*z`OnMz5OiOMg8C2^;66{@JwE=k;r3X3A^WYZu)DTX=6uO@1`<1V-sMNyC-EpCzD z=R_&^jx({ObzNpT7>dlPb?3-BE^0Uc2JVKW8p}Sm|16%Z$SgH&1;}Y5MnvljH6rA| z^KRf_1tWeScU^yO9Cur937xozeJGT6^Z=fo!9!7Vo1|YZmZso)_o|TR?cBuiD_1Qe zuyRgJP^(8&qxkL4{I&K$|B_hm>R9gO4y=#aYvm1FW%`@>v5C8mqmy&(n)X`ny3ovH z(RmNQpa7@x=L&~eH?JNVqhcO4hr2jz*J|i)+2rT6;6msooI-vT; zsqW;ua4bk0>tlrOL+fC6xwgakL7D`hSdp%E1wO;;?U0PWAuj{l3?@ z9lVJ`Zrrp_+$d9AD9We5 zmh*o5cURYQ>Vh$z>^h=YKLw5+-EMLJR2;EnupilYMNUqLz?s=@5Dm4i=tZ7B1QZU^$l zBmQ)f{D$4513|L2L{m6>lJ=uSflOt~RjnBM9gOe3f#!IBau0d{9C7l6yfP~@*P7^7 zy_w&G1URwu_|wjxEoc8c*u}ToeoS%%o5j;ZT0E7<%Q|wiC`jXYGzI*5wMvo3cwRqw zILWzyto1EOiiafr(1$>#qQzE?5FY~>c{t2BF5p*iMssvQm<@9FSXoqPoBBw?j5BGX zz_sXQ`!kLKr9N*(*e(AJgQ3T&EGbx1Xdz~0>gs|)*f4~+K3YDRJlrA>jxY#XUHEw$Q&Ik>&CSaTM}|BGmz9pzu#isU=mzkDnZH(G-Q6L;mxTJ zD@(Nz&TM}X5qApQJtIL8VqC$EQAI5?I|5m&i0GlTPx(8;K5a+uOtWJnD^Zi2=K{1b zoZa;{7g)6L^Z0`2U)j?jC0SypmJK9sw-dqm#l<3pp8&49GNfaF19?zEM;b|6&^;3y z;}G}}Y0x2(XEa2oxVV?cA3e?K3Ywe@3q;w1CVXIoO!Q9V<4;>pMsYGk{@f6F-DWBS zEcUloiF3vk8p=H1PdaYZ9OnEjuzGT7VMywPlSAi-njm8aZ-}-g#kevIf;7|`o4liY zqMVh!5MW_6anI60vYiwAH%}4g+E)2Md=^8((avkQgRF1LsED!v@_f{Cgk@6Z=zb~v zRQX|_^3|`}zjA;iuSSaBbAsjUFF|Q{d5!! zk3OSvSX5DH8d0?ro)|Ln2C%3*)+s^lG>%ejQlRh^DJ5#8Dno^=SfW;x$?Ok=0hqu+ znGlw~k_i`lL0^HD08B%xz+4q1m$wq6sJ0jpSsG7k$?k75=6_{uKMWtj4lEhVM#zrd zxQ24-#8`^n1qaiZ)prL%Xk=($3&l7OIoLsB^H_MODQuuPYI9r8RQ@}~j&6du?!;qF|8)G|tqEs$jyuNf zZKV<}Cfw63Ojln5Nl~ZpbF`ilQuzd-^nu9bN2UH_75dOOMaZP0141b3URvx%lzm(f z)PhtBwu1fj)sBVt`>zSzJv}|%p5C{19AOmw(nlLjc@k*psKcxT@CWP3_a=YZgMK$- zC)Q@aynu%5kg}Y}D=W@!w;skBy+^OcizN|zDQF*W>rnOLWKCJ`tKwE7G4b$5w$$zHu#nIap#N31r)w1U49sm(uRAKv?w4uYr6G<*OJy~&Ut zVJqyy4)Px^I@m0~Z8De3FI_?Jf^A{wqa-q&C}j}sR4n!~hfxuGf2m4mn4g_-%?ArB z-T6Zg9MJoMrVkerVcDQn{~A!3KD*e4!g&!Kcz4tkO|OHATa(AAO+{EstW-N3iCsp~i5UDM zd85Wph4}pz8jtxJL_hS4d3(5PICcx#9O&shxBIcv+6$RLFvZ-;5nyQe7vIsW|9A3RiNtvPkDz^z*~ zDXQEif3T%VxP$tjU<6s&=?CIUP2r@6Uz4u~H+7XLy0Kh1BK~2Xl%@gheB`XfLsL$F5)xqg#MSeW4My z#CGr+$WJStSl!)E`Ne|!c(~}`Ov5C*B;T$07@Lk;yzA8&hYetevE`;ZR{IA-5E`Jn zh8kE;K3;dx+=wxRn;k_ohc4i~r#a$m4sDY2co9-+=1rbYcy{4Gv>cly75uyUO=pZ; z)gy52-^tjqql5jTJBNXDE@*}#^g!51JXM`y4#RY6Kdd+7U82dR_6?tsQN1aBW{w0^ zW&XL`o{A&{(H9^oQhSm>7-zeYruvFW# z!9YFr{F2S%$;Cn*OTw`tvFc&gSTj%4#9g?pNo29YGt@$+byAv+G`UlX+PUv>^Jqv# zJ+WR~MFt?IIP4nH#;Q!+8zZ9hZotVDDm#A%!BdJmNt-=_*E`muS@0s*h>+>J>(*Wm z`T6@**nn}pvExSZ?1b%6H2&p9ZJMX-&xl+)K=Vy=z@k4orp^#M&qxb4{AG{HA;iQc z+x;r?DLSs`@?y|gFAk9#$}tu#BGyX$YXXs&wHB}%O8~q5=%QN=kef-AnpLuEm=&u@BfbAt6e~Vc788!7?9)Dq4lh^5uv`v41l+6Fw-S z=?VbjflnWMkmEE=xx#kTL2}Meek!X$@(oRIFN2mV!PVGB2yTnNX3{^^V*kZdlyN{% zaHsO4HvRApVMQMlgAG49G7g5nATB4Y=5{u?+ZWYGov9zVi9eT6WyMT2Q(d-4zX*LKc$)I+4_R3uNNW`A|aajTY5{oV;W zQB(AJI1XQD!Y@MD%y&?PFA!ka3uC>}JGS7?)IP-n1y(iQxvwPt7S0Lz`2ZeM9fR?t zjdi412bu4=dN5ydpMUM0RV{QSuErIdK&>?lciLCcVW#uT;0nP8GFD4se+a;bt5X45 z7Dmo~9eeB;`6Gov(f^*7B?kOCm19t;x4hIp`v`~e?ot{hYNVmT^U%GVo}0DV_!bfB zSY8Yw(T9W~oNlf`pNIKZuPB{STyyD&JSzqzLdtsL`g`M@ekX1;r8qCYZHutORjH(r zN{)jsidjD#uD5`rkR3RkLO7jj`)cxJ=Jm~V2Bb1cos(gNaFa%ufsHk_4r#H@TvPK> z@;%($ajcL?oShk8oXY4&4Bqza?T&tePVnvL{I@g5nq~;|HH3_d`M;A*e|!xg8%FIu z)w;r}kPW=TK>%6ZuUL;+Owj*F-!|IkSWaR*1PFb1Aq zw9m)BI@Q1MyHymo`04?~x9iWfr}V_dklKG7{bYc_%~iVTz{cyu_+(?8$rf zp#!|y=XrGxAj`EW9JfpZrM;ZbUd)t6j&2|LuhNhsk(Yf3m3{+izG`aYJ#WjU#!v<6 z^aM}+@Ne_kxA(7C7w_liFXtzA_XGEFOQ)-Omm5CX)%Ji9kwOIA&N8})(Lp~}z(FL> zu)JuRVREnD$_}f)+TgXi2{|yU$GkOEcS~$N zOcW7){gA%pLc;>L5MCwxZQMQ4Zw}=d;JUuf`IZx*ctkB4^~EJVEx($@^n4)bJYFj< zyek{rFSqH(I5U{uJXj`AdEP6c^9i(@b& zmxWoxrac~#rmO!xod`~RjgY7iH-kvb2ym%HbRrkZq|wbTdF8a;q8dWH>$*)AeOFGbqPuI=i7ZKU}Tr{x}bZV}Igtl;fj0i7^kZu&zka>AU&If68BBkE;H@GmhhLdAdIN}-o{AyB%W zTbK!1XE+@-UkHEn*DuH18(|*iV?DILI*sEh`&R8_l(6FzR!$a~OTN zvVU9Z57JEgC0txBg+|~b-K!f6-t~=>_1GG@r5x(>z`z5BUj~Y~Uh6*L?m$&~Q_jbD z$Z6+OctpBDWd*6Cj8iG~ATXrY?bp4^H`epObymLp5!tZa2&|4$D^Pjkp>X)Di7M+* z0RL5U0zm`^MUCb1v0{^x@-}1j&(BC47`jXWhhla99X(8*HbH`oxki2>w=I0{p*d&; z(l8OZiD?8*-048x1;saw^{kMaxIJuTDcRYm_EHa|TbXyN*8*R^S-C4Ph0{SsZ}jl{ zWdZx}K#Q#1fo34|vboZQx1@qoq@61q@TEeFuOH(>szcw)`1c1rTbd-`>~9np)hi($ zG*qa9;;R(`E4|Io)8Vu;RzQ$rz@d9f<^B4qmXOZw%1ZfJLwD$bi10@{^5uSa`> zhL8ONtD(ZR@SdRanRmq`XHcjC$ExemY2|Adqaw3Jz2+kp>SD$TjrWqa$Ot(c#Tby+ z-VhhX3qwg>52tBoQ-=k9&xbDdlq3`hoge~kMYDpM$_FX-k+w^U7iQ)FhI%1!_ycp> zVO-(aGh~A!@Uhm*mkOcGOND_&#m;5KE0bQ1Ru*UwFt@I*yo#CoznaDXg6oL{yOFDC zw);OZ3!x#sz*eLR0grGRS(<~B#p-@;7uNhGZ{u6$rs);bsl!PYDrhxC>~3gDGYAOO zK}=t@DPmhl+a>xkcL(B~I><}U?PXT*d9sl23UX;?M|)QUSn7-taGk*$`+03cKLd{D?G;t$q?P z2}prtv)mt+Xz91{ciz3JRNEPBlZ-d1LVULxpgR*bx+*WgjGb0DgqLYLp`kDw*TalA z)>zNQW^-ndnPwU^I%yJxax3)PNvcp`hq*$Q1S^@rTqF}7@NezLSTwT#D}@r^5~)-l zXfXiu7Ht)G4vtL@4f>Yo){D29k7FLp`t6fu?rq>b@|9ec{ z$^90Bll>0qi+UHgGFAuK0!9AYJ#B8?IH`4r${0rsf>ZN1@I8r;+PN=rdpvt3t?lEU zO-Cuz=`t*Kdx0N-m?jNM3qZ<10x!=@znW1K*Lv%`%p@cQe`<&a^HH-=N}^TuX9~hl z4OGsJQZ&fQ8x@i-bBp#uucQ*6mv5aq+&-~oeL^Msx?|H(OaB37wTw!bp0Da%79yM< zgu*=m$HS)sRKr8v6t1t)TEVQ`U~8&5MpH#Ls9`wr@4?_I2JA*EI=#xqYN2~J%D<~? z1VeCBqsoii z|H)5>$lk{yWiaU}S@2J=RwwE-k+j<)d#4xH#T!+H1LkroX?s|!Y)61O62+s;SGv9t$^%u zyN;%^z#1^(CFSWrH!M+}7{s^g&aZPp_F!Z?l3cYmnaPzMSdPw#02zszMWu&v({-qT zD9p#y1|c-zYQo&Z5isAyM}(v>zP_itU2M$=@VsPGL5omzQQ-A{m4)c6N$DIlqz^s@ zI;4j(>xI`x@^63#mjp*c#88@WM>pfxym&l- zpYF0$ZR_WMnnTypLHln#Y^Hceasyz2ir2TfHBjTJEL*>$W2@t5jsXj#>(;yRwFXR# zws@R58TnB>y}t{P%`?AFNo{G5)+>l9SsY{9naMPXBwJ_@SMU)|c?x@&y4dmVz)(DT zglu$pzo9W9QZE$G{WfAE*zWr%=AcstybfJ+vaPU*NkkCy(M*4hB6x|)@CwZzg!d6$(+O|L(6m!(c?NA zAkHi6#Duvi=})#Y1~l-?*vXCKw?M6Q&i#+X#WDnJ%L~}dV~~ZNZ_}M!%>_FD#$Qe zykg*EX(p^7$)!C|g810ZHHPeBt3DH=oQh{)lozT_tXCE~r-}Ym4I(JUWN&Z(znD6w z=*+qB=s6v0>;I9!4mPM!M48( zC#gSjpeSb&Szv9^aD=|r0wBxKz`!-82a~aav2cu~qsZDs>DndAPa;=M#TU{syWeF| z1_6$Ps-;vJr26CSsA>QBWeypAVNobpLS`*tk%!#=$hwI^r3mD&%**1R$DT?<2;#Hz zVlv+8pIZ{M%PvM;09t=<<2G9V7~}U^gvK!9(AwPF4&-i6V_-czD^R`ec;JrLddD4e zUwT7-#Ud=>Msp@8!GopCHwSPa;i#WF5kHb6ut#%<#}d%f>5@E-aJbWHy19>b0lA?8 zRL5N?4MO#m8x6D)T?$M;1-K%3TXGM))f-kaA;M6yDlB^o09JSolF0dmaa=a`H%H!e zk?&hBh~6GV$4_hvLu|_)mhC*2tapUz)C$>xsE#+A26}x=%ThsEe;cn2E4@SpEjxBB zuDooz&re3HKceKm;yRIJwZxH(F6n3}^wYutW zmu&_yfic(wOtN=EL_kfif=EofP|r8zH{X}NehNCze^Qm@KdH*b`5!T>`2RB=&oZHi zp>ADP&Z4p@YP{OXe)BkUEV?o$iE7zUE0dSE_4I!K^Br%ECZskLK<+dRb60nSzxV$E zY-?udZ)Ws+!WYG87O287+&09p!l~3EIfHjJ>95%%3A;P>e0$)8cRG17j!MceV)$ci zw-v2()kdoTygzT(p{e#LfOw#GNn$SiQ4%F!8*{31q~p=>mjvG;!h?*)6}R8L*-~kT z45okpAoY;{`HrKxU&9b1zM8MXrQ`ekQ=1IJXOV(pbM%<4zkm22(rE!>dL)?4Naaa; zaeUb@dA2i2Fx)|U&99EsK07b^_!~9bm_L&p1vP*$Hf%5vV`fF+;&tX!Tb?+`al@u^ z5cz>6`HLu4{}1EbY?+--fzYq6uHqT|$KdVXISmsJ5!x3NvmM?dhY~nC(uOop%f{Gb z!h>;ZM*^J%U?dZ^ zi9fD%IMyGgpmV#<1-PtF3`h|{I=qZkoex7VQPg1i`ewAuX+U6#O-t(mbg|;nSRmdQ zN6+!%(Z1x5W*6RT$Dvi@n&ti)7`77Co-)0m@z{_eEC{QnMXfcoNhf>^e2)M(F&wxo zd9nDg4+kd?RPPRtpYQAGt5U=p`x}0}pNswTr_v3LLsi#%Ne7MX4uxupfsKEtYXQOZs4j0? zKIDCK7)s077^Sj4u9IT+_ph7K!ul9Sa2{ex|JpHtQ}aGt3#ut~h9+`VpHkf{sP4Ny zWOPc$^ig=_-90NGqF8Goy)p3s-6R!eM@Tpp+-|!ik%{Mp$>Je;?iv6rw&QJiGk3Kf z7*p5H<-wgGn7~4@e2K!Nd>%5f`U8}gtvLMm1Ni-tgDQ!zHQQ4?58ibC(=O62w&zH2 z{zqIh+Dkse0e_01WPhC*2o?hB&37B6xX~&emiWC*cOeEfs1_U>_F3F!pI81z(@Ve# zSZVjmGdlN4Y2-=Q%Q?Vx#)H@g9#!Tqlpu92v$k5_@b?@xd_FaG;!_hBJiOM4*(J-I z_8l3e)NpHbLzM_5^a#RVDq?|0dOG-=P!KTEW`D$<-nwY=+0^$8Ez8F4Eshhp=s3Qoe(r#l)(7(q7l&i#BqlYM>TG#1!q?E zipK`?TZVaib6mF&#C^NPc|;dDk3gYjLrGs`Q#Q+oYB*JRi22X?S0~4c21^MZNJPZe z5+=(MNj@;jeGuSg-oB@^Cq2K2m>%+;OL}rHR;;S9-e+@LPgk$EllvbkPzWy+9MY=<*7fyTeB!l z-NcYoQp#JABo&abc0W4|!Ihr@ieZQVFRlwJp8_CNj4{z_9a-yK0~_N=#ztTCU7^rW z%DSNfed3XYe&KrYJFBB;7IopATCai=2EK24PCLK`hA-r8XpbWG>pSbhiS2Ie zT+ar=`y=<#rfN8R^ust%AX1Z>H8m$CcheTO;}8UKyejq1=T{dGm4X zH34{}{Q;q3J}1m7<0C-wb>6NKa-+#f(x7`5m9-?w`(=iv+cGA8dOr;2iy)1}YbrtD z+H%VzRp65#rO?5g@@lvk{#0{nNXa?QX>eM2ENcTndu9T=-Kt@~W1!#l^|-fxz5GJC z&$`e2OHZ_wx*FUGLc`JAIx823QEFgrA{n4%7`Cg*JY)xL)S4#9f`}OBoS=CK=S+n{ z#{Nup`B~pui+f!!1rW*!cz@huho^k6szgYjrnG92`Y@_;Wrz0)j9~2)FG`b)p|yyY z%gAu$UkT+AeD-_C-F{=4{&5xmrZxm!2F{76VoJhoRl~JaQYN$cAXJ!-~%;K7X37=VmYgvC)(^(&o zU+s)CxnT?YLipQaTkMs3<4QBZPZ1B9l^UDjt%w1J;wOqe5Y+#b`lRSVcXFn_9rsje zXtlH6>kPbeh07RjD`bVGh-N3C907!(+Jt3xhO->S{Gq%K-nAi9sZC)5qgLl;k6)EZ z&K_K>MW!%+J6KW`SnS(TY9a_;^=za*1PQ@=CAy{gsJ3Lhpj(+IOacW_d%WZZ5M}AE zn#=<2#%29oo{X>U%JRINY>xmtHQ;)}+>r8RqLYnc<*AntoQmVc8igVTBL`5f8g=@_ z7B7SrOrJD-D#9-B>>C(6%}4@O4%fe5@Cqd%A^Slo$5S}pl3|ML?a;RawRx#x#NA5a?(e{6i}uw%b=!arVN5d$J5aegdK`xq77 z#j#6&jP;sShNP|!HiLcf^(S24FcD~AHWAkj2MUZ1%1V8x=}o7?ieQz;2(%MA{JjcN zmizdU=CLQM#vsoNg6@;o$a~qKW~X0T23d5;XjtWQ(_(H{#$VXgWd(>8O{8%K`-ZFk z-D<1`Yz^HLrZC_!DAgSE3if|XAV~FP))UK z5pMF1DQwx_M;`x`sVpY*4BTTYQ37hmVuah>WwZAFc;kp8Gpi0C;yRH#9+}MBkx|x{ zb-<@@#d(;d+5}l1_6y)T*`5%^ko4y_=oA9xIJHFlfr~GIX22Rlx@>i0ihtzX0_#Pr zR@HL*0dib1cP#_RUtyTNUm{h1SweiM)6-9+hXjWcDJj}`8dit;h|S;=03;6rgc{ZD z@gCp?^Agmb>&ItwSx_U!Ik7U*c9;4?o(KGtk1<_I>I<^Hy$skaiLm)m90M@TQNe%K zk1fRQVI9V9(?h5>fzH0tU_e4#kU9?OM!7ORWECyY(of3zYx05_KXON-6T0%9V(XvZ zwl_OiD~d-zx9!(pFP^7dt6aA#arH z@fI>d9%r!JYvNB5zkNjdWM@VHLxnmyN4cLAU~!ov92X_WdA!xVMSJ(@yAZu~=v+K5%RXD5^<`;)@_Rp{c}uyDuQfk*;UB#SshqU-Fy&+~faH%NAT`wJXI9b(4V z=k`wHn9k@DGPJ!XDtp%RcpaM4IT&-m>$pqc_012vMl-cDjYqdF;URA_he5Be+7e`& z4cRsM!EplHBr)-b_;;dN#tu?_<~=~MPU_CSxvX?q{MUj)RCqA93TV*Lz+wL(Lg=Sd4T2cso9u&O=EkA;yks*? zhK&@cGpJ08jG5qM6PPqhAO#!GvO`h^9W}S9Kaw6bh?lf$=Evg)0g`>`JOV(>L!vCv z+Y-w9_@b%i7qN@buC_HYP=_|yt+~o_vGm`NVP%=s;b|q!sc5rZSuQs-LxfAhVC3-8 zpph7bT|5JAY_+ewnVi?~{l0PS+fbtWs2-I@**$3QHB+gKN;9|cG+mDL^e$DG1oN-? zMzw}=U~+1-3TF?K$9LsQ40*u*yy6}!Wc%K(a|U)*dokuLW^VC%Sy2mFwQBk1U^$_< zI)%2Duf)DTM6O&+6PA{NubWt)Ij$6~&ATS0ThUbef&^qx3S5cX}dw=KZr0kQ^g&lbFCCxk*yaAKtOdPoeCe!@cCyy~fC^YTZJgBaa= zsKjT;x2b*v^%*3Vc1#NGE|_5d)GM2&q)JAt0-YgxG?*FlS^88w`m7bVpv+ z8O6RY=wh_LOa*9|Af7=`si#o8XYrxWLxRtM0n~c$R$Ly$+us!h<*0AIuRlhL97t7n z5iQ~0VHGe2+5sqL6~pkTSHyVn4Qw7IG%Sy61&ZXFLmB*0fIuTCLh2e>I1jaIcJz03 z0Wuy4O#!N?R{$nH7;ldRlAqK|fFFhyks`4}SM<}XP}+wPT;D^HG^SLD5P<-un0~RE z-aMu>Vs0~rl@Qe2wGh<~=x<~@wggzo*(0UQ`u2+r`&lp`t@

    GQ6h|@K zwUe>pIfHDE-(oF5oUt)qSb>=gQin5I^o8w;ZvdXM+dSSud*!CoW=1AKuMWLo0b6gN z+qq3X?)8YF_OmoaZ=C6|!yF6_2aKmMC|B|Y>Zhj@k_kZN3s2%Z!Mi@mc^AaN><_S> z=Q3dQxXx_4uQjHhN|q43Z8v&F;V%@`Nu5?!I3%Q*F403%rS5 zV(W!K=~KjWCw)VdF+7(8kpE7Nn*Ie6fhC_@MTJ)DK~mVjq#!Mj@}ahgp;kO@+<2t) z;LdZ}Y0J5gF~&rX<~2T}spf{>mmiEQ!|k1?qUl}Vls6@k z|0LI6O(eWq#maC8@}V+iu9d9ZGjg1cSN?8hN|kE<#f`Xn7!Ez&(_<+pC_pkPbrISj_Bi8)H{N&E>}q(14;g zvoAR$k&FgivLh#f!)%M4t^L>GYxt-M#MC(G(*(7lJCp;6{7Xn923KxH+=gz+Yo?7Y zIi$COytt211vg5d zsp%v+t=)hf6}^x?m;2S}i^6Owj>2hF2V1P^zTy4q) zo8AzKF@b;Uv$APhgD1Na8-+NkEm(k}{Kq4Y0eD1hCMi#_tE@oDa!sT~A zG#h77kZ^9+e1K3tj?cSWr`}QS)ivSfk$&)_Ke_4kAUGoD7b~Isx1GUP@J1@3H_z31 zKA^;jFLkMQ?iYg-DOCFpC7^@+Tf+r*--YTsK^6p!_|~>}K{Yq1hX0IN1JBJfsY9@l zba!x?A7gJ3vk*I+gWs_8-CM8Eq&_gX;yXUHhnIT z>M!5A9ZT>zCUTbl%~Rlx_E9u7JVuLwofY|GFyEN_f@|JXFotzRG{Dkq)4nHD+pGDP zU`3HMuu5GaesQEshxLv+N8%{Wx5Q(`(frBooj#0g$BxXIhIFf5H-dS!pjI!YMs0+& zO9)f^ISE0_8@75vU-KG*!0*Ce-?^Dd@6StOU6#t#o2zqlr&>nIli#4b2<2?ki=jV= zb$&rLnxz0TRl@Br2>?)HelDe1iWTx`i89(`jQ=lL5&w4@VQH1r5UI&WobrGNr4D(h zyk-!`U(?D7Y{H2;#$+i6)q;MAV}GI6JHiB*LIgA>6fG)_I%+Q>$DUp4g*TsFOcq!0 zrC=VOUk9NYl*Sk*9}&fJlQcu)lR>(sT@2_hO}mGX=xdhExdD*QRW68}L-f{asnY|@ z0bwvaD+HEUYb_dWg?uo#{<3Y?rXk)=Db$>-TVKO0_2G@hCFe|d&-66@SB~HmxRkh! z$t17&8TO-8Em!Tfvjm+eQg$-Zk5zVy(-5JRhft*%$&I`&AqY=$XF3(6aQh=hmq3kiJ#C&2cKXYR_EHksPnkOwzKIMFSon`J;7{q(T@(8w;(ld%hzhIu#e>3?)yW~ zPtZ3ceR_4=eH1 z$=S$q3J0fEfNE)7C~SgL}vKkkuf-%vq^%VT4$wzkbqy>9CKKDrMmUGoYD zg+3%H8FwU(Get|omX_`FC8lKAK%#r(pnMn}|B;8X8310B5!{<(lx(FW{OJ>duoeKv zy3>Tnou08pLW!dK*Ln_Zr||6)kgfh&=BgA06$^rlg62%C92Nz&#nC@%8FqIlptj9f zoGJg&MCUu2w%w|>aA;;k`7{L(U;e>DAx684gH(a>4r_|?EoH^K%;=6i^S42{lXMMP zr^xlQ21~HHFZg1%b<SzU)tpp9cA4x=exs%%P(6|J@nX7FlIfl7 zD=>35bI(V+VZOp{Z%&JU(O48d4g=C-S7AC@lA$YT?C&>_MAVO8NjL=nsl#CAOv@pr zY-=`8S6#c5J(=K^%4|_y&Rk1R|CLbfX_AI5tP+7O+M*5#LKQ{V+>LkI2_d9h9!T^$ zL%eEL{ex#8p(K08_(o!%VxS5$roD;-HOQ2p`DdZ)loLMu!c&{S!YYw>ny%kpQFSCN zqOLFv4Z9CAlFr-4M!+6m^TB0LV8bxpperKRz_nU!#p6z+vq7EYv;>qS`^re7DB5`o z{YzoBc3yh~mG*ka2x&50_+`w*U-E*R&OF^7gd;DHgMnCb>l&Q=_n%dgDoQM|1` zD#CgXst0MrX%;|andGNXrXtLXSv3+E{*0eH+K zR2|L$4^!~oUz)x<7YnJMH0!Pu7mwRq%dfk`ZEqYvG7}Qks+qH+r{Ar!t-q=3tLbhU zhfG4^xt9O?$b)`M3l_W!L5`OezDyp1Jg0mZH}2JP*4>R1ODbA z1P@?EGoH>Zq%Q=}1Cy}Buo>XQdOKW|+f?`DrWCvkHNa8$^Bpg)A);A7n0q_HFR z>hMjgM8qo3rV#tF5|xZZviq?vCJ@rrGhs_siZcOfQtxxsxF%~ZCPH$f>@J-X_tM33 zT6}Bp+I2B29ZE47-BtY!q#=JQZpT0Uq)a+@qeC0EIJdGfK$kVPx*67NRF4CNJ>1{3 zxKc)p7aI$<1{ij0xnha;c8Df75?P~&g$oOrXo>yPv4-jHMlP@9i`(f@o97IvF`TTe zFhT%-IX#c1cc^V&7ODGD)zGa99Ys;P%bhk7lo`U9TMV9&-rH>REU_aEPWoy;)luk;>X~*~vMjr(Y@&x=GESmemu(l`JqI ziWD)Y4RW%ex7aNf)!~;CKQ<^YzU$gdkSzjOAonU#SCZvDAHr>~?P}t#unkY9{vO06 zSw=3@H-dLuvmtUB`j2Wmf|W}c00TQNfl6GPZmC&SS4f)?8A74&Z7n5hA_*|ZgbMj0 zfLDoA3Q?Rq7o3O(W-`c%#mihv!mXrbvXm@sh!;atEnB6kwzvn!M`H(ugVdy!c-sOl zQHIp6T+L!K>I-sK)ru+J(tg`Paw3l?$hQbFYVwE(Kd{|7`^ev62elAK%jGv2w5xYcm`*)uhDg$rN3wk^h{K-hwtc zk$ZNwYg}JWCl2tmIGy>jL=JwpLlIis%4?E_0M6rsL-CWn>4vt8ZW9m>oyfnU%=P3H z^;_Sfd|tPE<6;cZ*DuQayL3VqAqV7MLF5m1b@rOB)W&&*xceR6N7d>&alQ&z(#=vb zs$i*Lf)`+vtCBOhnxINRvH@lES<{D;-mgnN8R%Nc>$;UBfT=_In2`2KALG>hEwsOM zdeAUrLI#mGYcM$%&t3xJ`&X55Pu7fPxx3tfx4p^tf(&HoX-IYmA+m7=yFZKTx|~!z zAU22lee|_Ad!YU_F#wio>Cg)|N#DCHDp4r-6 zOA$3KEI+c>TY{D>)vO5ahAWPmw_;dAX|iU zh<{q$n_}D_2bWtpG*;{*X(}|6DLwu)Mwrgr(?mzWtP6{BxI7Z~tevj$#`Au=TCI1q zx)$xRp5}OFGbdX81^_lc|9rI^DnTFKqm7%1^-r(@o5v_?54;yd)s`c7_3>%!?C5@Z zkQ*Y$4)FzmxlUND>G`|{O0ao{7Lxk{#4i(Yns_diFNBE0;xq|Gn?J=uFe%RLlIvTGAKAG5!IafOJ5r>xc z8{zL-nmM4$#;lZQ<3?VV*O$+kaIr%2vov($AUBrFTRpac*~~KDhmVPH5s;r|0QZb- zOrJmf)%ZdhR-I=NMXR!L-Oy})j&YbS(Cbkyy#aDrD_uDqwx9&{X zJ`o*yGU(G&+e!8(So_|%Zgws~cmSOI<>uJEJ_N9v2s3+D==9m8=+w{buGN#F7<1OE zNW}p00hfP>P22Ez0|hR;ekEK98|{e2{v^WiRfO*O(Y+Z9cis@(>iJ@mdaKL$v;y{! z`&&S-!Bk7Xiwun0l5pC;L6#91F?NwE?4EI3CbA8?{Hn<*p8wBiv{Ry4SEGu8^PnA; z%L$QRSZ=rSi(_k0M(m56 zjHqQ9siKrOR3ggU*1$S;3Ve0W4h`fr$iJ4qK!d;^03ziti9o6^m3m~KUxmjQHLio> zX+xjqnku$PDLJt~39Q!D!fGd*cDLv1kpzfBIg8DrynuGuz?m&zN~-W1ZA-OR7FLFl zMr9@hXf8?QHCTZ}vuMR2p(iQ_Rp-e3zA$g*8Ke$Yl}s{v>KsSHWP3>AjIq;Too$E` z%5(OPPU~%Q-FnrFV|3X-egIbpULd*bs5*z!hK@CEIYFF`Y` zi5BLru5Z__-DsDMzr24j52ZNmLGkhS_?5MfJ+BF5uK>5`NGA~*({s^^612cA7A%^B zn9UH~bgku)6Yq4E*nUkH8}9H5^l-67w}4{Pt6ki4jkS)9ztW6&R3#ho{sP&t=A*A= zawS~ehZ`d?k!ldYJlDGj4>h%iV*{Yx*y%+BE%q2{t+pCf-=m`+3Alp}(rf1`U}vup zF6giKgpx6nC2d0*RzNS9D5zr+>4oZ|Z0~twG_sCAi-jE8#P9XuHYpn1TX@?7J3RJ0 z8`3q)D9)F_i=jiNVZ0;oHW(hp3BeLv+!_3?Ny$Y+QiOG`f`D7nviLJ(nFA2w?-AVr z!K7vM8AXs^wB27YTK8m|sW+TcInn>zS5zZ5rB3KB$5PBu$Y9^hg_iicnMmyGKye#% zk*zFULW4dSR5Yb%c;NSdh4 z>J{9F<1YYrf!TR)eGRZTHeA}XdG@z zvX**p14uy$d>O8NE&9M0@`y5~&>Da7z7blei9WaP(Cjkj9l<{Z^0CgWalA$-_2Ltx zt6O>;&j=3AX6;+K>NEfVjxZ|_yvVKQ7^nJiJe&W%uC`n5ksT!ICM7tI&Bx+>ZYBe*&p* z{CB+Gwg;l;>YwZ3^EVm90l^bpvH8!KLh(~(8o+zywUO86?M1@<<)wWQb}(7Gw<#1{ zX}zfI+9+(0-zefU1_R6y(2mEF=?7O~T%qH?6IF8+RNb2OStq<5o9tcSea|Bk zhjD#>K0a=wV(hoSK4c8WGWpw@3~*S!T!?dL-8nv;B?(wVWoEtxQ-xS38halgcYc7y zrVg0@+c_{M&Y@Bva5DWrju|r}TPiW^zgF08Eg^ec4%F^{dCXOUiK93cyaq;?wqN%? z|B9O=mGi3O1C9SZ4>y%`O8orj(W+J%R=1hZe>F_({E$QlWqB|!Q%;1fQFWcN7)lPH z;E_hI=3aL2Un^GBh3_X1cUMof%2^gn18+mY#~gXtFM?V>WJT7diwB@r zbHcc5fntzA1Oyan-ZG%;tZ&Cvt1wXq8G>NhOMxx!`zO`&3#BO2aPJ$3VP{{GnBmsY zQ;exVH?V+Jf$fPg!SIAjr*S1jiUGyU4{MWhuR@W_=F)J3wzZ+%W!KfBv805(vR?8t zbFcc!?W52Rg^d^EF|s73CIPcgqXEi5c>E$5n~Vd?X;KWSs0F7YnmJ9wBFNM73Sk&g zHz@I7)jo=1P|>Hd@{ETI*m*@blJCUtYWIQK1w+wcl7Zw@Yvd(us)G>Z>!lq~n3`bn zRs8xPz&_H|cEN-X;CYOg8ISjDyhd@MA!beuV`w7e*%)IuDM3xDqXKKOWdLQ_M9&OX zlxd0Sz>J(&^*89AQ^4wqM(|vMQyH+_b;B8zlje$QpxoeI8ctm6L94DYuXg8?oTXa9 zZCv60!)6HVER1j-v`IPS>kd`Pu;%JjYIz3{&eP57W#>sYJaZWoS^C4Cb#&=!W#Z1v zi>QBW48*c&Y@+HI)S8usEdj(jun%y!RcWJLdHYjKGyPT4@S63lD9Ty*_|qMPTT;}= zZnL^C8#e$!NB#q^l*4I7j8yxbo-Ci2t!mAf93pj8_W0OUJydoGd;aYp_+`p0V_0>o zJLnAS0gNZ;bGrfQTjJ(%+M%3g+ile$iB$>I6xctmw%e4G!z1|k?SN}&bLtHyg(;p< zdbmI;{cef6!b(JkZ{9~Hm6t!wygu9Zo8cEZ->*Y14DX1zFP8C`gbbeEX+O)e9fWm; zy{lEoYN2fATaCWmUAo!N&(f{6zGt&DCp!!RZHa!E%C?D6x3WD;shYMu186mKPy+gN zDQS16P!!MC=wCV)=#rwq}-Hm#S>`(<Fx|^S?g5y4g>aMn|^|AAlE?mqBRw ze}x^?>{41j!RlZsf_LL2SUZOdM~|4k;Q}l-pwO@4@UzU3I>@YCGjGl zRm%ZweI2q0&oB(^m1UpqPJYlnVBJHqb*!X13XHCEsSFh#M}RhO7jl^L(c7~kqb%_t zNB;&s$O``9j^&=_~D37hiUelPKS`(%+WEjg`|t8V@adxqb*Ta>Vzq5wmLW) zoW%#Qr*IH6;DF0OT?yuosK7&*HQLe6x6JRVpOeg|(P8s%BW@+I0<<>;jPP+xu%8W6 zE+4+$)kj*|B0~nrZxUWz6h3`ZbHFMXi6|Mc5HWcudsSap9opU~ z!W5I~&;WPPKI5&(T}puph#vV@LB4Ly$MRuHz|ba3Lo2OO)L_~{^?-K+TF$mI712Ww zo<@lK zs}4meSkY#P1tQdK6?8RzhJK;^$GLwUN$ zzoKNEGZcLnb&#L-OtZOAYKxs*oW3`1{=|iqCCw7G4`%~UqA{0&g4EvcW?kv!xiH9{ z#ax6+sd6+N-kr7(6ZrLN*dJPV2n0Tk`cVdmo$3gme@(0vBRR3wK+152u5afs z&UN1lmSKo)iW$a^il21`1#}G&m;&Vui*>=OK@3X-ujSv@ zNx`D8D45cs^!qu(rXxIs5dJ*&+_5rCz~Sa<0F!P-?_x^bl$HZauLONWg$^F&o3cas z=Bf4DD_cq)y#m!T8R7xC5e5A-TUwoJ8_ueL^pQKm>+1DP^(`+pY=*_xvNF9ND8sjb zNsr@U_2m&Q@b5BwxoaJj-U3e^uVdI&onhqF2BhyWX{pMA^lb)sg6kACqw8v@ZEBw_ zz-n{1?M2Du{8({g_)n@MK(Y8TJK@15gqg7_`l^EENy1jkxC0rrgk;>WcoauxvZBN3 zPgaPOvO5i93T>1q7CElMy;`&P=dTn?oDs+Kv)>9ZoiPnt@s3U2BJ8@SY8`*GSrDezI~%eskA&iT^Mz`SeiB<*|G! zQ4yX!ElD}adAQtKf`Z;H5y39J9ohL@|3->)x%4fO<7$esH%YSC8OT_(G!I7D%t6gw zrcAoDIIN>mQ8s33<6JtJ$CA84Z(PI}p^AGAQogY~442z003l3ivUmFXVdKde0Pb99 zOb9GJ6vW-arSBuiYx?6M2dz@2dKCTGi6{M-rPb3pDnvM5HGnWiQ zCzHOtQ$Ps6)w?K;E|;YKU2IEw*UG}%6L(o5y=m}!Ani?}_d#L5*>8_>gyPc|%$?_}@+_+oH?GHURIT z&o#w?C2u`Zc3GLscyQ1WyNy50J>#6$-}QoN?l+Buku4 zfm>+#yqYSV2O`EP#R*dIOA7X?+CuVVyA5o&{5F=F?y03YZ;psF04&b@G5%Bc-Z2k6 z&r;ZVd)Ut=enR?(N3Fq8Xsw3;Hs>VwVx_Rp?;;Czd*&Ax^|Ij>egy4^P%HD8@wPDzeM;YqJb`zr0PH$9SZk*Cg*+yA_?GV844H6G zvD4q`vP|K5TW8KL3<4fggmU@sx;7uxxkr}6sj~9(jYDUr{}2b;-JmnWarA6* z=OdQQ^M2Q!g~&^2r%XyR=hk;Y?TB!lxmK&d-~aE?UPlM~M0qX9Lcj(5%P;T}{LKM6 zJ(j04N$n|nAXweJ+6i(r83Mk=L~sl24xNQwr2)HfxCRtUx6G|2`nW9 zX^LcP|Jrsz2>{wEqEbq%x8UqZlnB4y?wWkT(54smXwx@rck~!o6D=f9=aY5YQ|f@*UuN22_f(A1TmjI)P3Al8t)XI6T@%~dF9mH2 ziZUrc*_I)QhsiCNU1`d7wyM0=@*R(%^Y3mZcFKkcD}scy`!~BWmPyfX%vI|IK>5qP zTz)%#i}b?-GGGWqwd4vjlbmlrk*oS>UrwX2S;xC5tBVIfWc=HX!tO_?cXa6x8kc=y zRXb#zYXFVre|$kS1aWl{w!}%xl2v zcWSGVxggV!`|>=fMHi;lw@4`eSRKUXfd~%SgF6KxBjuuPt$yjn{DP6UL}p5jLNra) z)8qIOHiklYL)dv--g{Y4jYq*wmYdW{x>?Mhb3UFEqopSo41)b%Pzvc~absjRF74>9 z^z!iQSLeL#`?yN+>SQX{^1HN(OzT#XJF(xg;oD7yx+U}b`+>bLejP7BOc_4F8+N%$n+V z4m=OdbqYDaKP(^)+Nym4oB;;LwSBbq-yoL%4MIyLx&`h5P_O2if2+KQF%GkEFx=Sr zb|cqOKMu+I2PM|KwQY9&kUvUme*A?Eq?+yWYJAuqCV?xGHq`aHvHNyG?a(zFK-EGz z33pfpNddv8CONKjcEpE+l#DPv52iHB8<5?vpX-c1Aez=f+POe=uzcpYQp9JCjw~q> zg3l|d%}Cq>OeBajjS*pzm={T5lu?ls)sbL)bicHcz=`}+K08&rkvtP36}Ip8;LNaE z)pq17?Zj-!hx8POgw65YH7e3?(g|^t7iH$Ij77!ydKKLmqQQgOat8D_TTk9GK2G}7 z;P*YAFd~GuR3n}gtV8#DfEW^uZ6Qr)zaW0)F|<(uoPGx7gLu-wi~WzL$n(keVIObR_;=efJvkv;migh9jflZ_vXV0;X^#m#jr9KjP%zpcGxh$ z+1}9tKKW?Sf@ODWxU(#a7`*gSGWN*k30Bn|=Jz&RSmH-#NPe9<8zg(1X|Pff6o}t> z{X!s&NQ6+W$wM*DE)&u#DK}X1i7XtdrC-6gn)3U2E`Z*=zBq3J9Y;{xxIK5EhtOsN z5u7u-#D2`TRFZ#*$|X?Q&)tCd#S`-dWHBWI_}Th1Y`T9eS_;6gl&`%-{N+ znGA=Q7v-OiqxQ(dVlfr{Vy7v$Mlccy(J1=tS0@>VL|V8RL-c9mcgu#wwJ+qP|IrES~BskPU=C-!-nk27M97&FG`y|?x?A)MA` zq6Yt+N#L(HP^>jRZt44@@+FvSC$V6FdG68o7Ck85!hJDeuN7U>J_XQqO@U;}>u5`6 z4oC!<$}d245NdRBSR7=e|jq8 zL%~0;sp%A*u(}{2pWLP0=}N*7Lkzj}0oHHE2?2~(Ve>#WOln2A(t4I{CT&MRvGVCJ6tU0gIK(z7V*D%S#Z7F1tO;lQ z28vy)KT1(XgsVU5kspqkRG#6a@MWolLxgCY5Hc&0Lx2GX`z$3KFlt)(?#U80n~D&& zc+NxvVLY-5OVB7WbWs@Zm}3KA^PgoONe1v4*A%KHx(u_W2wQ|rW5dY6C35@3Q{ zU=APK)U=;f@_8tjkW&|1<0ro+b|p`YZ{62 z)F5dc)@j_q$!=0OJJ1mjP@y|+4aos*zXCx>i_a=qy_cxeM0<(W@uSg|ohf$F+T%pD zvAxo!0>?I$I`mmnE5S=74HNGWNMKEP3bc;|>4IdxCj_`#mSjV*g`mJ%(rgNZf3pzo zA<^WM1=WF@8gd{N-;OgtM)9CHk;V7p{%z&Qx4l1RB7pH<*lGo|?0xQ99t}}80RzU^ z_>WBjkChCv6%A4%RNs^m>J;VWWV!xsV-_e|912U(YOA=P@*4&t7-YD!rK8;hA)d|1 zjwYrG3awbsura<&9J?dkfdpxLf6HKWM zRD$rqRI5l;cZe-+`q}R<-`pap0p|8&k^^R)ot13zvUYM&ih@nT&Jf;`^8^)S@$@XP zH8Kq@>S?Cqw7L$!Kz{rmg7UJ}V?HxsMiq|E?gI__HyOH0k5JH~jyxH}bXrdMTG;-U z@0=4SQQ)O(+ZUL4m{htdj(x@amoUg}Mx;Fj^G^|EiloXs(2Zeius%Z9T*JAczmafS z1}Z+iqjk!<_Ymof7M>J$C5coOH}Z^&(=M@`Enm>+V;vd5h>@Gk>8+Jxr~7>ru-)_d z{?ysoT5Is>`jPMo1!;Fu?_t<0dLb zw;4Zk1Yt5D8&()cWHk)3-G+nZOR>fzJ4}Sy%0GtY!6EOMs;$z_VxT72XwsG{B1ufB z7Pr$7W=s<+oyKC7s0}vQAMOGRV-2|?t*7nwT(@IC{dc{>>NW?(SXbY_Po? zUc3uXBIH?KcDLZNBuXA&G|E1#QG+A2+3Yq5ADI{%=KxoR_HvWmH?nETbAiBKqvgt8 zG>t`X)YI1Od4crftmqRXC+5FeQ8=QGH&e2LK$}q_RcPg(MGYH8!a;I>#i;23lWHUw zG2T{o7m4@?yf~56QcpJAG2$W5Poy_E69Ek%f^+4goTNQ|;1NS6KhHy?gm5;=L5np3 zPRsPbD0EpyXeBbS?ux&(yWhJsH&ZQrsB4JhBVcHj8miW=G=EAwl4*&#>swYaYV%Bd z(g=hfcl}xHzNDF|cx9FJR;}<(lHo`OU46c*xl-?R)Vg5r+qwDAjWKz;yN04Q8QIkS z9M*KB%9o;2u{ul@d({M|%4)H$j__^#lV;zmcOzV6M}Laq3%~cClhY5kg{yC;hZ3nCn66vHA*EQSP#Vl&h8Cti|W+A7y2MnrZhP4ae0A0I690&c{ zUBm@O{P7$>ok4@mK6>uBfNK3MFOj#v_)hav@&j4O#l`sF%O>0ZxB@|$IJr{y!ojEj zOIkAjY=MY99~!rkawI`uueJ*EC_HxA5-1+r=|zxXL9|g+%147W-+maHe~8gKqRA-S z7><#_>OTBdF=%Jooq10_5C18R7aBR;loP~Ro#|8MG2hF5Bk*raXr-MiAhoZcP)3yniA$gA|m)}4egQUjEf3q0V!Q?V#7RQ$dS z>NfKFx;dX-`-7yjcOK}9npoUx?}rBjIf;XsVg=0~kf&8>l%bD&bTILM&E3rLXe0 zt(Bm*DN*0MCO7e48((Hmg1d46Z#g#ZK+IxmVaL!tAOs^aEoz}4wbP69+=_JHm!@{D z4m3O&GGcSa;zAZS=;O$_5Yf%va^8kaQdlB}wY!(p!wb>xpyH4@-0Cor2h1%KP z5w>a*vhfOEK#o;rlR8?-(OOK8-f6iS8F+EhJf>lzsU_MtRwo?RCWBCbC=wFF&4~g* zsfF59+v)9HK5@W;8O>$@&hWb>l8Blq&FyCS!c{uR?QxONzF7>2{lGj@PhY1=x-E_p ztkI0<4T_0c zl9!j{w4v%VGkmv;nxP~>(!3D8A#lEsEz5j{LE!foC?vW@SK6er)?R@Uh?H^xbB0#Y zKKv>H;wUdWjKKMJ#pWGi#Qh=xiAb?Canpxi0fz}dQ`!OZ}h$Vr%Kkb}90fU?v zr)CDBkUkf7nnmlrK%psVnBE+zUdaJ?go}4YnTPrUR6+(MxWa}b8w<=-#a5hD_S$QV zicm(RQ_=_jvX>EBv7EW(h?vF`P6{Ml)$mRPG+m@hY>nN7F~BBP!Ukz#%EM@EG}#uD z=C&Cu9|MRcRgo!e$}q?|lMCzpJ&}@5_W6Jf+1Jt!qg3>p-7wnO@V34(6}Fj|;`X zcSltcU2E`It?J&tK330AJ}{XdRT!uqhn1}}>=Zjo3#T`L#?={O96P)*if1IJSOiYq z2W$$<3ru#17;}Rd3S`B4ccDSW$=`%e>s+Lq#o{u3zIR`bMb)(KciNkydPh@V=EUEn zw9+z#SnE#8?F-&TNqY7!`{Z`&*^IXPP@)0JRf(~Pov?7m0{*ol4ZUB67G>~jY!R5l zgpW#9hvk$2`TX9(e!s#rWN{xH4CC?-&f-FwI(>i2Xl*^Ey>=3Cz7kgTm+Z8oQcOgH z3)+&i(rX_g*`^XE=t9@atj;U}(*=aQipP?k-+^3@FItD~r8nEzJw2a{{tVL4zf?M* zHsRMD7i!8y2;g3Oth%KaOx{!pF3Sr4k!kDWNQG(vC!-t=0-ulXz5_Xggi+uh;8Her z9x!!{7q#%*aPR_GdUVg3z}e6r5CrsCJqIcY@4w4r|1|m+Tn{T2@16_&MShi+sLYCW z*#W(2?~_NXCG@Q?bHm(}w0$Q>6b4dSUC|HKhuIjD7GY_nb9BMr-N3uy81+-=s<~X( zf!1#UTsdeS@1k#%e{bR&&2FP~N_4I_<{jG9_nysxUh>J)2RDPwHoX0wDljG?Ew?y- zqmUl#9>jW65)LS17%Dw+V6b0R)c~DAf6|Ly3ey;{8I|rWV=;|8nlbnZA;ccAIddn|sU(n& zf5j6-Bz@y3LlHqVgT#x65`SF-BfRD38Cx!Q>T@4 zGZ< zNVH82>v=sYrnbjLW~^+~W~s)?!(e!rFZG4;NAn@??vOhQ$1?tSG7x{GW;02Z0f4d# z&VKNIGiF-;72s0FM9L_VIE4M>H<2tXzR&7KyV@JgAm%6+R$$_HM&z>|YMAJk88n2? zO5_K=`BUi2x^&0nHrx#$>qSUJP+GzQkkRs!QkdaF#*JpCMfOHiW*aD8i- zy8i1rAr%PLLjo-g8vbCxzQ-}1{$+%Bs@D+E!{4E)lv6&R$#mD*oc%7u*;#;_RX3Io z=TK`?K^`^ujoP+?kz#g}n=kj}PN10J-A^R2^#fPYg7EbJr1_<8bAv!8!V{o_{0jg# zV*Ym^V@}3wu;2C=5FILGg`r6o(3X#a$*mVb&6`K!&*NH#cap24>nTl`|MakA<+fuLdFw1IWiMvhqHJx84U?}edZ{iurdYXdh#Ty0Wb0Qq z3J=v%EHno;llaNYBY<7036$GEJw1O_wkC%Gs1aMom9l6jizZkUkIBYCPA92qK1hk;nR)%X$;Hwnog}Hwg!ITM-H#5JpHS3T}X^3mEr(&T`iDJw~pNyHRE|jSqs}3y{cw_f*OtV~yOt@ZD9Y%Re#}p-hLAP=m=OQhJUh z+-&awm665fO=7mf)<6>Fg~3WyeBWvjirM3o&gveAEj@gh98IEclX5bDq+S^QgxI8Qm{(~_xxk-uvn z#{U=}@IFg!3jG5{UFg_18cK}@K&SZ4sA|5LwmfVHv3cZ`#)Gbi0Fd?Ir)<8uBsFYE zp}qE%IDvRK?-uTjqC3##9DMJsyJ7S)o=RpR7<;+%cQfj2YA%gCGKcQX60;5 zP_~hMa}VqdW>j9jGcmMbxW9e?k7jrHK=+Q5k)ulB879`2M#@WziEeB6l9%H?4Fc|5 zFY!NCuN%?se;TCCRVIpNT$qmz8Vm(Nh8Eu-(LSp$Uio#5m($)P=I3q)hE3|l-i4wFnH zEQcj&?x!l2kc+}xR?{B=z&(7->Cfa>NSby)6YC@1WCN=Df>Ud9m4V9@Y-{5zvgba=%U2MXY%u;);HsVNo`|3O91|yP{+k zzLy&2Hb(pZ{rk?XYk{netmOR3VVZts)U-+EFk+4}Z{+FN2ge}*P*sV@gSZ|?0n%kj z8yss*tfh@@buGwd#4`kO+cO3*GX6D(tFS=7H3uujp!_*ZonVzuxN%XZ|JU6}PTEg1 zqCD>^lh0wYHg@?^ZJ%>ZpK(L=Gr{f(ansFTK3d$k7dx3_k$ay?uCfAF?2{1Z>$1qE+NAGLNMY>fJGq!VDg z{&gr`!@+(^YOa%mk~iGu#Mp!_7_Fa;Nl;g46TP4%jm__P9ql1KF*nb5xD|H^pY@xN zSstaX3WTZ_Hi{ta$jh%pvUN-49$sRR=WaPEuHZUF3q(PSj(HBgWs zSRQwOCxuX|&pvT>!hz3p6UiEK)r6OrC@<3sB&v+=rrH0%Th9LG^r0|c`SDY#2ERWF z(TQgl-1efwZA5D{fsblz1hI#In6vh3mf#Q(87)v*-^wL}h$gt>ZuIroNx2u(O@T4z z=RrvKrw&>?>qVBd{JtB`Ex&RTnsLjvJ5h;WsZ$ zs*&1oYE1d=a7Y#KXibfYz7KuGTWiA4?STO;45}Pu+fr1{V-7}ys1kUy1-w`CA8 zQ|VXjR2my=7SpN@?&p65&Q729o>?~^0KmUrZV8c@R0>!s3y%%2j4>+7Z z-;U)ok^7qgtYft0!Jh&@7O#*ICn?qcEgU)iJEcg61nC9bA)Xd`y4&D`Nm$QJx4v)y zwh;*jfX`U-7*)V3x28*XoZ|XhZ$P3vks%c_oH3vRkj#j>90FrG1a@}6D~yrjFvCen zyUl`;L`coW(_1rLcTUm%0pXT%z>?nWqbx z6P_@4TNSIe({dXmQ+2Ff$%{r)`}B>FxCN|~FEjy5S&``;Z99x5I$FJp(VKFVkeQjJ z+bj12vdZGTsFGaLb*V4%;p2QZe6t%XnI5$AgvjDC!}92K%BqG$j(WmUb%eq+MZG^R zTWyw7(|2YOpH%dDJ}w?Lb`@&VEi z7y5+o?Q*gBFi_z8eUmVZQQ-wWNxl7lkN}XxrIM!)FiOISy@FcPb>2`@lMLwHeKxFN z_xPT7jN(eDSRNG{Rk)(JL?mHnh{D>#^OS(arP~2`{Fw~C(%6e~s@Boc%LQ|mjC*V^ zl^h}6mgye5Zy*IelZ5+QH@=)d`buZEEZtubwyISZ0*eUt!>ik+29$zovwU>V=dHjb7E+D|Ozw7%I(?8=(Oa zm`+3JwNk>0u>H2T8E*xpb&8+LE$F5ykwYEup37eLOWa@zp;WWNZfe)O7_FL)Y#>s4 z?5B}hnS{6!-A!^73(qfah1ICr-xtYMbmCe(u$@gNze|qmry;|6Q6p-m-{28Vrhl#A!*7wvB&o8$SycY27LMMcbl+Nae4wyKOY*|<<-Wj-@X7zoluXE zKqy?En){zV@`eS-!;~ET1BT;#7%B(lUa)$y(Uce}kL$xzaq(5#q+L{XiZ=x3_a9xB zxkk-VjcXqjdKu}(WR4`h;?+~@h?;BEysc&#z#=ggDbY%eOsM7;RdvkjA;1E%Cedr& zXy0>^fweuydp&Ugygn^btDl8vxpq^h7=atzEmf={{Y+M@PA2npN0u#h-8PK z;sS)fq6crSC7JdCSjqt1n#(gu;9_*+06?>3{rLP3M;78ZdeRP3I@xnwf> zG-8E%X3f6=GXt$J-{bXf-MxpAf3)onV2`eslh5X!1h0F!=54DTeI(n7WxVf{oRo8xyRWU*EHd}#yr5;a6I$%PH3c- z;!?ssE_@@>YmTSi-yW^}OtJZ{MQ0ifZ^);*8{mo^-?_&t+dwcj*v_g#!_n=(#=Ov*!rbG`ylU?;8p-Wt%ox)xbv;?`G!XY#KIFI zE~X;xs39z>lTO~3-9QaA4D^tSMAKAclQ$Ew8jr{ebXyowa2t+muew<=eTlAftr<(z zO)?t1!z;uYj*4ixu%elFgP+>9+0vo2YvQrUpoimT>fi-exAbg(b8nVN z>QY$O4Ge&LF~W&r$hNlKGW3cLzAMpj%=MD>1Xpk0qFANLQKS;x*1&TkPzn{F_js)+ z9hgn)G*F_v!*TfC$VvjZg|2w(hp7{>j)U7}L41a}q3tHqi{kuB$U2n&B&I_5L*%TE zPvD6Gyi6Ho>L*oz>JuY5epKy$m5r&skRVVXTx^MdQOFUv*ctzqb%HC=$&d;#t-WE7 z%Yp2-qH)XQg_v1oj5aO^wJXzQLx=;Gg0ZUCuQ@h9gibsQRfv@I`IWOTyU`IL)E!!Ek{qL@vBo=7nX<6t!6L53x&inzvelN>Wed950d?pwB*x*3p*nELkFc zMI_1wjLpp0yPZTr(u_iW%_|9h)()N~jJo#*Py0U z<8*P@0xM6jsQeT&W<82Xh?4WXU@)n?C>(GQS!=dGy>cNI3`JpnQz=?iolE014SI`` zYlpD3ybJp@CwjFzJFq)o66rWXylA!01b{VajDSWGttq@_wp>Er-o@*Qq*#lMipZF1 zD+6R=#S5eoA!R777alzV9JpA*EI!H6uWek9b_>EGAAm^K--Bv9w+NzvWD;4g+a%X7 z#JYHlCx(MWsJ%#u&1`tMcwFZ_qJ=`M2-8YcrJwP(_p4YrbMPFXW(WUV6WyCH8dWqM zUs<1yXs1 z>M#NG0n5Ib;K!CpzuE79p^r6p#8V4vB>?8MZ;dPDCDk4GhVSe41nRoL9c*5YAdysH{_+YNA|@4*mb{9y#pRH%~)VpcH3*SwxSONWAh z3@!J}A~?)pLm}w6c4%y62?c$>Ms~=VF5!nz*vb4WE`tZcT3vBo7}X-wL8#})iY~U^eyuf zip>+}7x9kS0HW58SF&BlNA(DzUhg9Q$(f$Me#}L{^wOa^{RVG~kGtcX`e_au!3BIL zpvTMZ$M40dzU?*t!W<*<>~P^@{Os&-arT&?=Cy3bLil zkcW7D-gpiQZ7oVzX6&a*vxWv_h;is3R-b`1D-(qPl<$+yyzHOu47zTwu;iLsA)2X( zb{`$m`YhQMzOa+@yAE5Egf^m=mdCUliFO=dla(`Zol=##sK!xD&|->bKJFA05AS4# zOFl&za@D}4**4Pqd|SLJ;QO~4{>Oamgn!=U8q&{gz>Q7PPg}B{Kv7`#cig-GW1zmv zIa}#}9x}CB-qZ6o=-buoFaZOgsRYv7-q2u$jO;X&g6q|ejq|7P@9Tgx{pS0FPr#)q zb9a`m`zQhZ%*z_2K>B-Zq{7KYstn~O^(yfgXi_8z9DXYq1=CxR6>d}G!@}3B04&$} zHJ;InxP04NMkey6T3?WAVrqTWCsdopafp>)fWqUkJeSrw9wd8QjM>&uS&F@;22kT- zDM;h)O!#h6)jWnxK2hLmF+p(8Js`2s%+P>~=wHO=pX%(3U#Sv?=Wmkq=yc`f2MJwU z7+6Fgt-2whz&|P@(er3){(B~5qN9_F$C&);lO))@*D#x&vOuRzr}* z6tKQxPU0h#R~zB2MKiSg&iIfoZ%{d_DA=OMKyARmny83iYBEI>fsM{K6abXZm|x8~ z>O#rJ=EVgHqgjXXW zXs)8%lEbSr^W4AUjPsX~cmXmIQ4r4yYXu1UJfrI{4FN!o4Ybd}s~v&MW2m*6EPJo} zuZIVCbppM=?-m$B1*#`4uUaU)64?jj&U!LqBZO6O$!%Y>CU~0Q9oRZO97xVHwxi}} zQl-xr0_P1NQm03%9b9lLFee@JuZTJ-|-Yy zn&0A%!XaQ-h>VVydUWls`n=?16g?cEt+z<2&&lcf*#;7veq!!12eRT}2*fy%r=$jh zP-G>z5YWVxP4Osks|C8%LZDe-z&6JrVI;n#Iozsm8@RDaW!pg3dlNA!qkxbgjawS3 zNU^D-oT*^ZM(B#i1Z_k`-!jd=2?jiYAOBnMbN**ij0(cWns`S|4Tuv^7-U2o_5eiS zB<80!ntWU~2Nbx1>{Xv5BDJbYLxF)95S%E0gQ6^CAHC%4%z{}EwxMhgM&S9}o>n&? z${W&Z8-RSUY6)BJ#s#0GIV9!V^60OdpMJz1arTTFt#!PcRc(A?J`c|zwV_%}QpvLv z(x`dc%Fky#UN#tG0TMj#!!`)FgJg+8-WCMOO8raaabv*bIyOM_pW%DV%^<~*E9OhO zgC*_=PdSnw@}R2K%+K?c5zHAU@?B|`{phJGL(xhqDw+Yz)}|bPa}7;MQ`C#C;=azi z!rNKbP7Y)3e!RbeA3Ux0VO{O+G1AmerG7#$a6&|lR{mYRQWv>FkWv%0z)?Y&ng0=W z|M^o>4Uj;R0Av3AlLtN@gO(va_S^iMpD!W6NYSgbz@gd9)UzBnKY2>vHof9WVZ^aH zut!`8QOG$(jP?aP|MZ$7sjU-QL(asJNpv;f8pO&_G*g+09Z|;+lo5{ejbSbcb6E%M z*jGiQ#0-})y>6|tBMR=JY9n-|^=eSEeCf5{PIX=CfCzAPDvC{l?*kwm7^GY`o@KpC znve45<1mC*iJh%$WNHm<$b|K)&B}awwFO^So~zkBJS~s9-XF!-)~Jzp4{5K$t?j!a zT&<-o=QiaH*9zy8WWC6tQJWhw#cGt=%bC=Uzt?5gjQm6nOP%SZ-n?(1O*?;II&hVU z%0NaW0Yt@WLLU8@2#4+zV%R?*AY@%(YAmjt69*l1nKr@12cKfmN8`T_@A5CME+Lcj zpWHm$Ol|Vxo(m=<+#YS+pHHgJ(b+=5#MQIFSU4*>y3tV61G#W)q9%TsQI*Jb&c<1Wad!u+Uy5*0 z&G_SNHL&biaSr<44~)9evFfYz#fixxYlNgU28@p=RGrV6Y7_9nBUKLlGK_zHMBc zLz=?z-ob|-bumK1b9#rVH4#t zun~QDkwtXi1e`3Yfwqt87v1DRp*wo^q?Jcy>|oh!8a-yVGg;L#{4aJcY_LlY98P^- zzU!(+a3Oio41hqY6=B~O)?<1WDf1U|u2;;TWd2mBI2kZnKO5s`kEAJhI)DbOj*eYX zz#;3$@AK6_vR)0ax0-dq{<@ygxUZ{zk~eL+J1Pdvs8CljFx6rrwQ%2Z>i9RFRWct7 zOjyM&tm9{t3QCn=JfFnno69P436+?3YWz}ledrw-1J@I+KvwS|WCAN)|MY2H2u=Dc z93X*d6xe08i{f$#49Q)xG{C!H0)6s*#^mqn3-yrzD6?VZtIa@|l3bD` zpP+$rnEc!Bf`(<|jZy3wS+@+X%ErWJ*)+~`^_T1T;9uhXG6Bh0@!4=SjX=wJEeSJ{ z>P0p z=z%xYo~7E*bi4ZcOE_4M1vx(#!yINTN1P%-Jd&crt9W|0;2cdhvsqYAHfy!b<;OcS zgH~pn@NTM;RP%~XHK0R3f`*Em0tSt6a=nkVU)J0PNdAleGNB6=wT!(laaKnOUT;Bj zH}A@}2kXh~wl$&2M&^ra;;y4Q@3_Ba;FrBh7e4yVBX$$8wQLX_l9S;E2jgkY!BIqY zDQS9EhdX|UU#p-q^C_7i5^KhX(@clfMm-RL7;#5MT% zgRgm`Oi|R6rttxtSxX_Bdbs8Y*Qam3(=g{NNw&Q$7T7{3sY|HMO`7_

    PW;Oeiu4aV<6RnE1{jNZVmM6*h(}bj%DddebU^0S@DH=nJ z&{(+~^%)?>S0kJ2Y=2W%zp6ULvS#3?=_7)|YBNJCS@p zPaKW%vg#}j0*gOV*Y*pzWQFLui1uS?1R!~p9(iy-B{;9nCi*YJZw~QwMdRxKxxWJ$=u?ReR%gC~sp!M3i^~k%nfRHRn2k zQG`#z>B;GIv_SW??WP0M5H-l54P=v4ZM-Y=&MSU3CWcAm$1ywRVKQe$_h4@mt zn^g$DC$ii$-K9&R-!4SCU%NrP1jzc_0enqgF!c_teEv66rOqLOpr^jzfb{^#83h>j zPhJY7Y*#kB*S9`>B@C2N=9EAoXvCa3cYI#x!l|*|nWQDPFy=5h9`K+ukVaU{Ip*Fw zzc!VFDgFlh@(;pGe*Ge4=;rZPExuh}2xA&Z3|KRfYC;cyx>oPnx+P8d zG!RLA`Q0kgj~Y@5Z_R&dlsRP z+tES%L`N^u6-sludi-Jb#K}1g)+Ab2lFRZe{S-Y{T^1IcoRNXY$;6p98Fw$y>cf8+ zFt;AbCvTE4!%REUg^U1;`;Hd2fiL}EL=un3ndwJh1l{up6gGt>#nh}R+NG0?YnZ+o zJ{jDySz7L#1Cnl>-w|QrgvNxVK}(MNM1s>T%Dv>!R)bAOh0nY6;s&c#=koZT@NE;K zm$t5XtoP~h3Ceq#L;hO>sHkc3W)FpkeZ8dNI~||RKHfEz{tbXsK|{{r0~?ftz#XU! z#e_!d&0_}kj+GRPz&&-38D(KA5hc4z^aT_t^BssCmFxb}!CzhYDBh@RxU>2c*@war z&X6sNaW21}5n5(HceB7*OBn07{dlBXeH~Qg@P#|A$Oz9lu)yr?`bWr$c~haNdG>4+qL_~%gh-1?=^HWNY2 zoeHm=1XCu9+X{ryZlx*EdTLU6^bL_VFC(t&_MX>1{%Z^OB3lqq)=Q@GYmQ zFuW7lRiMrCWK9=)o)h0cyQ-g3koUo;TlD>Q9w-nKV8MV7rKx%SXG^__A1E@k{7?{* zbuv;fm>Gz(Na$r+*?X=1;NKyDg%Mqj3914pA$>&K_H;Zv)RjC0U*O63{oMP8_Gq`l zxc8)R{$9bJ(Jj|^U84%m#7llTzEDloOpo5dMn{uCT{!SX-VA1*w%*0^&DP>O==5#Q z_gcmR!U~|k;DMg=7$|T(?E(ejC@vNI5sE{t+SLA*!pEk9%aV?z5}iavH{rK2X#B>7 zM{Nh@h8>Lwf{su9iKmc#DZ02B*WPQ~S^fa~Dk|`Uspq$sMouEL!k++$K{EJA0EC!k z*M>Cc85#g+eCrI_s~;U9sVPru%Bxh|Mx>O& z87dhguND38{ThNGHAu@)jJ%L(!FphZgrcADmK=IhE4x`qpa@sVnVtZvL|=vJ)%ily zZ2+B}?@@}FusQvJXelk?;{L0?TCe5-hwa?=0GONBf%=&PTZO2Z`6M*1>;2t~JY81ieMt-=)CKne##b-e=<^Aw;P|LfHho*>}x3~8^wQ)LxGxy=@~bmzJj z5Tm=tz%{NREGquZG1_zWr~9FOS$(0+c~-}CPZ?z-cqVlVy}0EqX#MYTv@P5q9%kZc ze{e6SzwRu8D-3?ykx_5}??F3MD>cL^Olp!s$b6qw?b?2VDYi1in0yXB3+ZhY3nt)# zuY@x1WAYezU+PBNJ^`KO5cb^Zg+PE&s;N4Tq6w!LcZ-1OdNvMTY1Adku}uH2GT*le zbYTVA5=o};HpLUzkwh3f~ zQ;WdgfvF*yxi(jJR=CAM55Nq)oz(Al{8gl4@d}D2Zk+nJjRht~O*^8mITbMP%XB^U z)FC4;8zB4`&D-pBjW1JmAQ#xjil?nQ4E!46Qp7_$4QaJB5ecNcnLMY8wfuk@mfikOj!r(E zUzcioK$@o9CGiY9^|7^pw^zWCn}7lS+uhexXY*vTP#DG_wd7$HaLfw*A6wzS))4af z3`PPeL9?sxLV7l@dQwj|^yi8KoAw$Z{AVcq&on0_Jl~LH_4V6J{9hDtUabZ@2t3mr z4_1M5yvM+UaRU@onLOPl=wTYu3{*@^sac^T3u1x zBaV`1q^G6*5u(#UEw6g*#wDT0#&%w=-t}@fPm})70+WL&bx;3i=JxmnMgy?2+u%m| z%+Vu8gRSzxttWlFe!}38TVVGg%QUWco5Kh(oNKYQ8KW6SpLD=`t5p80jSX$M)p)G+xmrQy19*W;~~yYiBnb*2CC`@jLGs!w0htr zPk$}{$-(!RCs3qSuzqs-^pOw&lajdM>M>&`qdCSrZ-e2B?$J( z(b>m|se`|h2f*R!=JL3wc3o4s$2HpecU08cw%(U?k~@pSQTFVkjRofl1;mv zLA(b&ILLL-y{&DH22BydQe=a^x7Mb9!PPV4q`c)dGQu&rti=FT!dy!;2Xzpc)a)^V zy2a1ba1qg{4r$A3stCv9Y{nOf(Zh8d5?gioSHfxM=b{Bz*J?*}Q$MS?HApCqbQG%D zr5w2A&zf06Ih*n(>TdV2F!UG&zZjG0REF=om?w9k^G!j58B|2Pcb+?5<_B-6C$(2Y z<=k0K6W=$a!)Wj}R`03KOAH;6Dn}xm^=E$F35{V+(=U1Di;xEzEQPxN-tZC`6 zyWEcxr)vc?`?Yw-vh(eR)xNi$8(y>yB z`?nmcOJ~bNwX-y}*GA+0QARTM!@Asz2t9Il;l)v^N~f?u5;Ivw$T+osC_$`5JaEVm zBg;oSqxWsD3*>d{ooIiYVEZ*PLLczQ1O;+VzqK7u>t0rMkk$WbjWenZFGo{HEztsk z+dwO@#iC+gqf8La5nMI98x)(%trv*FP)ap_GDc&QB;NxmCGM8PcqiK5|T*C=vm!&+|fPc+#eCddTx{EMgC$B&{_K2NEK zp17~!B!2X1n~xYQQD$Wss3on{WCpXJRK3FD{6G+rz&x|J>T!n zm)0ayk-K}kELiB1SivA4tIpXPDr&>WXxb@FEswZ!W?o0}H!I2Dtfw04;w}%U93PtC zu8NMb=xuqYbhnB08XP9s^pS%SObm1YUSwNi_H|GVjMYY4{r)E1eLB~=3U(|Emw=M4 z4{3Ev3EjFQ4CSs2n*j4OH_;bUi)@HR%UVQ6vr&iZ2kKHq+RHG4V=s&e;|-pZzc1#c z>M=qV8aP0)>>BdOXKGjbxl}6c{CWH?lCRuLGv!n#yna=UV){R3E*~iyHv&fO;Q0_9 z(FJnKk28-vG#SRuEx8a6ikuH0X=z(5Y10?ngZwgc&uwYuc|wl54V%?D@S%;A)*KES zor}BAb+zduxUo$~22g<0{qqs$+KuK*j6aWIZoc85f#Pe7@pY+zjX3|nYeD@59VnyD z+Hi;I(l1F2_xPUOH;QYk|AP*$7n@K#&9_IX zcj`$hbooH_EDw30nI`Mf_=`Ac-z3AHa*?n_8a1NkFD=b}_|tOs zb-sasEm1H$g?5orI;i$-Zx%1Lip=`#Kgd{kaxJPWf2sK5hXq%O+7&<;u0i*>=E2Jn zGXpb51^xTehsuduGL)oKf$V9E*L1{k-i|c}W&Q_(5mJ(*fktclYRw-M@?Xb_1Xo{s&x?%L@JXu;1;s}bmP4ID!)XK|7yoy7cuec{MMKZZuHuBtNu=Miam2s@( z32k_yx=@k_p&$V`wF!WvF2RTaNp7>cn4x$kMo3l)cE25C%aOreW>0gtSz-k_W$i(N&x zU}q+!b|GjWqv41SR_<%vztF~RQbYH$;20QuWhhPBfEpk2vpnUQKe}G0YErgnyk=az1eTQVF zsCmYgaMvrWt%Y9@hTPjl@AZDzMWn|Uv}Xo7v*8cg>@FrH4Oj&;!~?TYayA*>v(vlkgbumF3nQQEcsLLx~_NnF!R$KW6xPp<=sE2*(4T+(@kVQz z&DIO?Q`hzZ70-T4%+Gj8-Zu-H4SL>P@|m2ystc@ckTbPX zu{_;8IRqJrv=LRm8tmn~6|lT2)}srKh*s{%A`}QKQG9_Ty!wQp8=$!e=zp%!|E&5F zcrAYYmhbls?e|L|-EbN^e{qAC4~&Sg+rb)A10?$oZAxOWgua)8T|z|-ClCy{0rbLr z#C-I|Eb42VV7DxdWJW!8mKF>HpqCOP!Q!antMKbtwPm4*lxTEC0G@ZN(fSv`_t_#> z&ei$7*LqED!&b`!)4fimX=jTpc#fy9>({j**!Q$R(}%Htud|)*3>F}=-3*k^NaFn9 z@0lU?%=3~_w&~8pG4hW5vkQZ|nxBMI?a%FBFR8EDK0AV<>1%hUV&Cck5Zv6QTL_{7 zQ7M|-_|bqbyvL!w_{WVo#1zu>~3F-l?<>5Es#tN#P{!P3=<$B@-cUxcop1q!*AeRGa%d2E!|2O#1 ze}iKm0X*4p%9Wl3mu3jNhmcTk&p#$5x&@kB?zys0Q}&fhS}S_6Rw8#eiI z^nacf@I|FHhyJSg5OJuBbq_6BtVu`5i*L$BrDf?J2&{IzAOCi>4^Fn8kFU>m;`jptm*J+i!h{@_@{~`Sz&7rlQc%`th;BkM<@?@cDkLw?B~jh@-fRB{@W5#$iK6h|jefrOhWIlKMW?vw2q;Fp>%@_h z*E`zLj;|=r3)dezmoJ$AA4{k#IVCYiq9WxmDV{W2IM_IOx&II;o&7#I2L5@6beb$kK%%|*8Yzkvn-n}>dQmVvc!mVxTX3F_{T#(FxXVn50WK7D zo&J|a*^t`yG`Mp|Hf&k?HRFKfw5t6!smDsO;$sE4YQ6HJk2TY zu<@JT0*50!+1kox9Wx!L=Gb|5JfvFHO-j%bBRKXoSt5E>$JnkTfSNpTrhLo#Hx>-k z4Q37bfN8=cS{drxPyVSgHakK<6%}S+omk`4Zt=VnqSWfZD1m-w8Ff|NusJzsJyj+g zy#ia{3D~^KFou3&Lm3pn0}IBrpF0c&Lq`mbH=deCQE19oY)T#55Fx&BPsG3Co(oG! z)k`~WSCfSw+Yf>tAaz@Xo2?(#F&ADK@4&W;j8h;V8lS~V0AVd6S`p<^T+f&Hqt)aD znKW*AkP_=#H*jY9%>)uSEF0iJi(y2Ru+eNN>dxV&N{M}(fk8^vhh;1++=im4KeAm! zq=^_K8gE?#?4c}(C{&4N)C$uex)#h&Y}C3;WPN#_S$E0}7yVs3bG zN%Q?am?2_QEBc*?C-iiF{-f*KKU=sl;u`j+y!EFV21D`Q~al9-s7A%1v#C@LNs&~O6! zj3JhlC0U6KSkK<2u1`orU7XP9jz~A8k(UpWwq6>8hB3O-1)2LOAT2$a?Jit4rfB;+ zF5faIzsE(fft_2;xxm)g=duloBJtCP+ZC>V;K+CA($xtmEM&wl%zwUci(!I}&OEB4 z+ETb1v}#Y& z)qglT|FK%MUe%}RGB7NwXCh8SUZmJI?4%IR$miAygrcJBmve~66b&vr z$uxzYT07f{5C48~dIma?)58LL%;#fN{%XS_M%anj!mF?>cDH4^P!##3y$mR<^+P{Hmzf)@D{8DDsEklB%M zz=6)T0VLQI-fV6g-U-j`RG`YxwIpTl20V@E(kNPMQBZK^ccVY~o8)z?It1L61D>S_ z+u(}Q5|KBT4bSB>T{6xtNx@TR%UUTgu^yRFmOvYhWmLX9*36KUx$sjI+H!6VQBMLN z!Y6z(mf7EGR(IJcbs0y@GNuv&`@t>va79^mqg?04%DD<@8Zk3@*7GqVBZ!Bg#YtO* z_!(brhGLb!2u+mH*Wh*X11VIg0I^(ou0!69dQk;mbt$t?D$rQ!`#s^erg*emZ+?wP*ZdF1Vk)9RApKzdvmzpiN&m(HS&6v$_rOB8sDW*e(Z^X_%(A zuFd*o9VRh$vF*vj+qtpl0^-WH7>0W)3Lnm%cAG3&EL0H{Dm#+ZzJcMS=S5PH8^KYr z7#UfK7>Vo*En#?h|L=#LlaVFyj`}CpLQN)iff1?aS^XtVvTDWEkV2Ojfkp$2BX6ES z4R3SA0>q+=lz!>UYb3p>X^SLTM=Wl@qJ5zalC+sv<nAQZur>)vLQg&IN^_cn1 z0*f6Uq2D)HMSZ`m`rP88-$wk**1N{llTv^$Z|!B=#bLYvQ$ji!+U=D>$w!#n16G+xH(<`ey*=ot30a93T$-A z(iMG+g6xN<>0e}d#Y=j!2=Vi@V_&+Cc>4k@Kjr169Vuj!Ao+-vn~})f7sI{b0-FMY zYrjRxSEjjH)G>+3({^-r4}n*`#aq44bIa9**aMH84=z7f4Gno!@J7^a2|QsCICj7*9B5NN42Twq-QgntHyI%$w(`TPr=Isf>dDUpyxpK%yD zsb;Mgyq^8@xIUh7kS7nIw$zhwNh$j$5%s&p54Lmp=9{Ps!o)R(fNj#i$qhz)3MVI2 z8|Y|Y1<}Q;p3s;=d{CHtqVoKaIHTy0Y7d)c`mRlKQS8!9Wt^7#3clxNe_Ly%fu#BY z4EjL_O*HyXyvpYlu5Fx(=g+hTjSG<>8Hr-6_On*qmt6tiWKSV%4W-o zE^p2ii3JDEHkGEG%A=y*lP9B)j413G#RmWz#!pn5(!uYbxk`Tfe8jYg_(xyYEPG^P z8RlLHF2+H-j1{VQ^|6DUcgFvoo-aB9V@Jj>;)Ft=@>mF*IEoQQ#Bf(zfA1#dZezz@ z+PDH%{?Gso_GKPvrWd7qFu@EMW+u@zj$=Nhul3#!@N#$*1cJnZ=h2TZaQhQz=bYYdZ2F6Q9P&A2l+cBzT-6_8ku)MjeIQRQ(7S# zVH9&IQZ^7$9I(NKg0X&Ji2{8Jz-uswQ-8YCCy8@+NX1c5WED4#j9t56H= zrSU42G{1-09oVN(Y%$cJjn|B_?hekY9Ot)7(ngR+LD7C*IxA-V| zPFh71I>dl7e3dQTFGc8%;1GJ#y78s@V_;MN+0vNRN7feb8k!aWKX0AbxJT4Q1ocxi z`I&|aLd@93(*ea6%g383@9T>tXGKQP-%B&vK4bt4Sl&9r5fdBmI!mcnS1jfh;QZG6%-cJ^5ca7=r41Brkp?92sgG0A|gmw zGr0pS^U>_PlJ-FWAh(Y#4Xo>Nw(+3qVox+gbNK<+v_J4S^b&&?4ybV=wYN-JHfER8 z`bLAC4xrQ4ng2{O&|?O?2)-F;`7 zSDe&W{H8H+;L86L_Woq?n|(l$!1cR?(6oEI4j~Zihp{OGF88LKPC+aK#G&vEFre^Y ze3=`49J$c-k4#tVvyv@xmhh2X@R6H!D##0nG16SPwIHdZ^V>xK!Tqk?MgVv{#y!ny z49|&NGbzB%3NZ963u!l*RbQ9ckylnYIcQdXMeOo}CF|50q=ENipS59c@6b*|BG<{A z-uLm2a;lw4vC3q6<)V@67?p-Q z4nEXuc7*!^Cgi|le58(MEktm?@ClW_f&B?(82&fgfH3}#x`LKyzeAIlp$`Mt%@O_) z&5`z(+R5X2{V*t(c~r~kC?F#ONEa1@2L8rS^!mPoM-*B7?WFLB&zrmX0t((9gYABH z+Y#92>za_Mg&U`x?)qDpYAU2g&A_n75!>}Q@Ocivd$Hw{74r35Xn~O33<`+pzIJym zU$3`x?G^a?cUuG14YFzivqlE+AV8xI84OcNA9(A!C48ZPaoTixJ~-GSbVH_v={_YF zg5y!C?b-DC;QNQb_?(CdA*Ja)({#UItb{d09q4fId2yZVw)dx!Kk)>H|ET7@^uK&SfB+D*4 zK?n1UK}M3_bZ>9bywt2$c)TVq2@mcv2DzQQ6{riHicKLMwsdJyQEOdTHE>a3J|OkUS2H_~Yml z=>n&^ya85{)T`jG(JJ2pA-*{#{NQ&XZ<8lvzO@_vW8P}}+MHER14y9G5w@3)t^}_m zt_ln3EjrMa5I)GsQIl)+2kn1#e!ui~eVR;=M4u_;43sOyg+T(C+J#HqWLt_^QVh+&-_?RK_-ry5Y%3-4|{Y{jJ^JRx(-<*cb;t4p6 zyPE<27Q}1B(v*OP(@elcbWuu?|Js=O=`%0p^D*8nz6XpNyxAHjPn*C-eS9Orz|_A6 z-JW-cofZ2w-Grk!^F8L5uDmHlM=n?q@T_7-@M(~3y%=)U`?cGNNpuWcX5grz*}77qnfa*b!*i8S>eSWQpArAQ@^XQcSW~^kbirh+0XG9#mrMS;$adO z8tv>Sdz0W zPsD$g5LG$CK*j}JpGZor-$abMym1)UIeGH?1d}VNVA0M-fA4nG;?OEqgnc|iBpB>s zPge~U#{^i;<8Dn{()Br!X{J;eC5O{e(;vhQyFdV{I9MCBK`>91!wj4+C|I5nNzmj6B z|EdOH)#*`_bO|XIn4;tI+afDDS|8kq(@+vO6$zxwOB?L953s4Uf=UkyL^mr4#|3i2 z-NsegdXOft$V@iIXt7PEJ+*|}jFi2MIThxP4Hs*1nvbEjh>-K;2dLa~F1)X9Mvr zU4;w+he?8x6T?c~qETg>L?w&1^*C%|jyiJ^6s z)G$Mqk}LOfbtfEa!1D!C18q&&^m*yrn4r)#W5@=Z3i02?ZEdzzZO56I&72gd;%(E6&m8Np?w=}bm&p`pRsIVO(MQfHN_K1GK6e+@#aNN5`()8MlE3qq7 zV!Mg9f|kLas_a6&P=@dzHRo`YliCngnQw6TLBh(#2k*D9;*s-bs2^R0iJwqW*Xc7Q@tO;)tcN2PY@F>wLFi5-6J z#sA6|lCwy_X_5nixg^|Hsr>Ujg|a)LDCAejp>CfSZe;}#5!MK70g4V&qvgG0SaK2w3=ils zO$$U!^zEYY;Ct^9lD8PK=Hvn(UZ`Sl{>|CQZqF|`F{6y+0BWm>fV5>hm+i$Jhh1Ks zT$y`00{pXnB) zj+olGNPJH#{E4m68{FESLkCUYl;NV>aN)xr^LGP!206$BYxpPNhQu3y-(M5Va)C>r z5x{7fm2s~`^z8y1oZcGXAc_E#s)_)oei3J#3^8CaN-m2=}5+s`%+`*;1*`}8C;0>xP zJ4+ywYSueLqc1n0Z7N~p8W^{~4@QX$T+orjG;Uhgwb3`=4RYNf%JTy{v=B(JG}_MoA%byqa&kWBolnon?Y!wuG{T^WvHYJ zxvNAU&(_@-9k~W{-#2b=BfhQID&tYxl%pMT0j(D1c zw9lTXz8kgUzgezlJ>&P4_?r$DpwRmAE_L-j?Df5GBJ2+UJvFeFFe)En^kh$RXDW2@ zF1Am`Bfk)5q?3r#;+Lm<=FA^>%}h2gLn+5I&O7@v6}r?iSc>189&d;kl3WexVPI$7 z{CWbePH}!aSW)kG?Cfe|dd8Z%v7qZst$o##pA!t<`b8nLD~v(@J+ou{4Q?13a06pv zYwYCgXkw6x(+Ca&%E-#{AKxPtO&Y8hCVt?9_BrQ80vx+_OB&1<4$J~wQ1SmS9@$dw z0zgnxao@pcQybO6G6Cp#U4V z2jnnfssQC0Q#*Df+p32*HBlUbYQ{^3UYdAn0mjn%jPORkLbKam zAK7CHC|};ZZCf2Mcq_gnQF=E@loS=-ZScS;%F7=ZZ4)W6IsoVikSxsGiIx}{G3>43 zPz$^d$ytT;sSHr;c;Lpw>e=|e0ENVC~Y1jsOpa*ToUyu z7?p)U{q~%hFi*jB1v0x6Vr$qN{{P52ryxzDZCjUZv&*h7tGjI5wr$s6wr$(CZQHi( zzP0x`aU*Wr$d`P{6`3(J*UGu(81pNp$t&5D;vUAT4G^&dG>Br`*e;MFbb}MezRgW5 zSAsMUpWm{Tl`}+_7iC`*V;3zSPB`z#8FoG{rdIwV2yP}*ZYVC$<8{jI5cwB}2j!NJ zxOWgj(;_oKjFQng+D}|FTUEy!@xTx^L=Ih1zaHt}c>CqnXWjL32GR!Acap|?7Zvxz z##200t8YODoH}CMsvqemDe2Oc@3H@4Uwlm?`L$XC-P;fA=B^Wr94O@vg(y|8dY878#g&VePzByUcY8L!kczDF3tSdog(%P`v;cFSKg?mV#}Iyix>ZwER3- z6Q_49YS*0i4&D>iPovO9kzJ8nz#*SRJw=Ix?zx5(gC!}(7ZX4EDf%^|j$f>*gSrv# z25!-j9K_BqhRp)+ycAR-m#3PuGz#uIon>GsY9=T4t*m@Ws<3uh)Z(F>)z)7-l~bJi z;L&vgoTeNIM)n*`>Ve^At*`U9$Qh8U`x0rm^-p;i!@Av5%2vl1sthPhtFMIZ|l=p@PKG#oNfKOs6hk3jII*9FBmr$fB7= z4ynLu2e)7c&#QJ*tgmI-;exZXeVaO#K7ekz;jWvBVYYoIX&=YCmnv-_3{e_|72N8uhBnN_+*#ZEoAoxHb8g!iFpXjuweJ(mwO!N^IB5i zOdxQ*h89x)1vncv&La*dpzVmI{|MiflOb7@p_msW@i{e}FJDr$ONz&|pJ%oK!hp1{ zv$oL@cZ_f;E1~2-GSZ2Pdg1e=-$KeD;%DO+%~Fi2(zNu*eOpWvW&hZu@bV4!RMo1d zFSKbaf6s;J%#o-2Wp^=Z{!9!?pmZ*rPR5a8R8(AeO(Q~*KJdr=^U zH5BUXG($uT;;o6Tk0?A<;OfEvK9A7&6dGsvAwF`1ibcel?kfif*5lQ+L;LcNf<;OC zR_dTO$%X@=Vt{$uPDJ3Z6bk!{d$pFr^z5>ptdTuk2i`6RTTd$YHVxgKRaI>xy2!kU z-YP;_Qv&y5N*B|a55A_V>SwKCA!n9)8pL;}uZt9G@pJKo-qo8M(^XtR*UZmLU5M^> zo%+g0oSHRIQTAL2A-XRJiW$`BD0`FnyE#@4DOni%Qk2p3>UirV1boe9 zasnsk{p1dE=NeTn7SI6TARbLwj4d0y!vk=WvRv=3JxiAIs`q%9D`Zj!!tzUIgVwF_ z-v7ufdmMNtzxfC4!YCjp1C~b{6JyN>R%=)#S48tR`Hr@%qFV0mjx~fZjzhLzWmUqm zzORTooxm^#D{1R)__pw1GVN9HmwMV`ps$$YqK(j6RC!u6R8|}yZ(o&gu=o=0&=Znz z-ptx7Hrt#RQr;pC)J*dso(5A1toGFCtHG#F@|0zft-Nr+0T(rts4ZG~kShqtr7jq? zE?cJ%r-h!oKo#YI#ln^;KWkKzo^a%juhzpbLOesRUiFgxZop0Al2gYDdVB-9xG)Mm&r1&>_svvwNr)VKn=mioit`Jw>>?K=f6V76k9AwpI`z4i z%pYEJsS0%Jg@v9|T`Mu-tyu(H@~D~|Xj9&ghmJlXiEJX=w)lWIbUZ*??ca&l)KuPF zv>ci`5?dYyZ`bXbC)^~GX1)j3CsV+&@R_q1*QM6xo2u z+Z6=oxjq2!$o5TXxo+qeit_QHPC{dk;qCs^Fy#rIJA$QcP*?DKK@SzRBH7Fm(!+T= zjx^A?u5}?}5RzMP2F^rQRzh}en{?<#5BWqzrap_G56-o1UVtsX{jtER4I+Rhdhv_! z!n5PqUk@UTVSmDF4ijoA#_})I83Bl!U78FejnvPZ=6wPr6?~|FnoRN{ng?#v4;zGp*88Mz#ncTPkBauU48abOSc4-t&O`qIa zzt2dT0xbhcOy+Ra?k#onH1CXwvlBhhHV()p2$dC^OAt1~{Z%PhQk9bqK?Vdh+OsG? z3ziPx;$p3OKT9g{hs|Nowhk|9yM|8TokKVgZviG?cd|rPzP(G!Pc&dnWzncmW?}Rk zI^%)Z94AA#c7@L0TG3Wo8W^5<`7m{{*QgMRlP&#NGu34HOrHdzS(|GZGkQcF0}}8f zro{zM?$XJd%VjY07|pJl9rd20y@*cJ#54wE+q$XUIk+WhgF-%+3kE5gz6TAJ%nHZx zH%ajaEx`2EjgfR2S9LywDfSJL<9j9$;~tH85w6)J`)(zTGh()8PXI z;?WfhL&2-^$kj5Td+AFo=vv=7GWW29E^P!+(L`^yed+`AF5=3(Ejeq=e>N?Cmb;z)l zv#pK5(SbA!6gr#q~WAwI;KQuw$29y0P zWe@!uA<6r{>{9GGV#4EzoMwk725mB3e&;8m{FR)8OU`3rzpXb21oP%jlClFNmYHCN z*YE^QjxKp^GydDUqa-KvPybywkd5GWa&c&0s>d&GBIb9--Z5 zK)FLN1c5R^Q{~81JNEmiZ`En0TN{*!(9S#9;*dLl9FlSgMO6)7flimDpjeW>>Q5|m z*Ounu(lpr9(x7RZmsfDc-3J3W*WY_L_+z%l`fX(|^9UZft4-$QZ8mu&4*O1)Y-_@& z#jZOo_)H;(ozStYE#b`EBoIwwJORZj{0^VkNzBiH{W^3~CTetDsgNEtM-ON6tPg89 zcY{4o01wvJGQD4^dWH@6E>or>#S$sGt%*Bv=gDO<0l`W~fJ&E2gq zo+w{W-sE!Uz%Zp1kz6(yox-uv%m$t5$SxLVlSTD#yizP+kUYT2XLaYgGO(?0hW z_dx<}X6osHdu3WH020VWzkHTl514Qvy&GaV%s??nMD^iNAXEW3=54CK2aqf@9Vjfl z(NPBwv^q7SfrN5Dg`B+mA^e}^pgnY$?)_ay19aS7r|EJlF*zw17huT+la^OO3-(HZ z;5u7ZF{WX<7vdj{GZhj2|q69T!jYN|v z9MqWw=b-fBDx`9xTWTgsKUXOQJ{}1Xxfl}s*STqBpkOX630zPvDu1q>GPFFYg}%V5 z1Y8n2Kbi3!fU^vzPk^Rv3vJLPq9TvHVu;lh{r(T}`bbVMob!hik4g-bv>WAJhFTb)* zDOK!T65KTH=GS`%mjwk#IMi%Z21GNEyQTH0<}ifpaXI!-{pP@;)2u9({)o7dvirA% z9?hDW9^zam6l4ifHSdH+wY`0Wj(zaCNDb#7dbzMk7RYuIMr##J^O$J1&QWA1EXfqW zOO07{S%O0He_K6a;^TA*8vW(vysf|#>+JV?w}3?oO+6CDR@XkVZ9D-ayZqZdaI?wRdy0>M zuI(Hk(LRbH?cZ%3cjJL~^D@I5EIu@&H3h!q&VujLS$U4hPH;ks^0U=)Vr-|rWJZkG z(yqZ51r^6gWb?teSNix`%^ce+b1$46Eq`9=7(xu@G}!&e^1>qi-4GSpaYm1Fb3_YF zU1lKP`o~HVYoolyQ^sIBVXgcQw9o&sq3h*}2I}FAojT!34{zRu3_R57uDfwB|0))y z!w6vU!poInG)qJ!mJua|`^r)Fzg9AkC})NW1t8+JO9bOZexL3u>j+)MxZ^#5n4G?- z;+B1!X5ZYXLT^2I?6$XT$=Y_W{FCL0Ja{{wsOHqjslJ^1kx19$1m!0rc?{K zd9ncB-FPy~BL}Lgp(UIZ*YcP73(x4}{jHVKU82)alc&MW3wYrK)gyTpPi4;?7oz^J z`hX%`xM_&4KkiCj?MrSP)t7G}4_mBLW(0ellYcyV$i%ulWFZ`b`!z4z{}R}~{o6OU zy;L=1r~ByEjCp8Kc5U3$e9njkoW4+Bo<%K6`(&(p;d|SjXa7XQJa!ghSraxpb(_2| zF%GoA7Odd>>`M%lLl12pwu`)0G|1`C=gAbLtdmWr@<}l9nJqeeJ1vwF9h6IqI`*Ri ze@!?laSh@9C}srz7%2y(=fAZGYP2NLN`&n`zf)AK1K(3BGHD-51@Ihz)C;SK9EAAk z-Qr&9kw7_4kfJipVd={%&hbWtB53jen>UW_La3}CV@%0DZlBZ2TNaR{!>NiQi5f$& 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ⅆ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

    d%HDW%N3X^j()JCgniIA2tVC%y^(n)~$E9 z@!qIicpa*fALjOKj6Wi|@uXzTv9WVB6*e)n8i$7ywyru9e*9CD^P=X zE!3D=n#i&u$W$NHrOfWi%st=t`;y_f6k)3EBmItqu+|u$4V(6C%*;PM?e_n+agSRg zM~Tpsm;F^UlgDOF&tT?)^me*M!^m;%DLn@)n!hWbX()^igS zMPi)lilrw*mF7-fpCOZ^GOcqjb^J4?1x%hJ&c1VLLS#`l4A--)E%-O*?&;pC+q~EK z0_G*!4)|EQpwRsDL!q05n)7K&a_vrres6wwf7I=cguhFi_wxw`gn#{_nm?JycVHMr zi>QiS#>~E7dMn8Oorn9|Rs(F;g`VQ@2B1q}xQRZ?ir{^@#|~VrGt`#*U|&46`920E zlkKY}<3mzsnR$*UfUdP=&8XZs__eZBI*G1b?)u&HUad(I9e*W$8i8}rJZ_HG=&P?< zOgXtDT#6p9O0<;z_4TC)nHQj|&ZI7fpq=1P%jCmf@1m<+m$_iB?Svj+rNS|DrgSHxtuWG-~* z8sw5WeGLXz6ECS5Rme7Gm! zdp^2;=!sFO#ux7*=EHUwb4yp4$w^F>5h|tZXuT{Kh!_LOf6*Vbe`CQ$UUeRnnO;}- z(wIPm1+(E!o`1zeDqtX({f)!Q(?nSNK#RzW>o|f&{e1z+ng#}4D*9`2jVqHWs(jEVE8r&SR-`2xx0KRF)KVk`&C(ZqV`$P3!C zDx?Y~JZd_dS?I}gnlmws)^koXIdg5BxukQhSj4Z?yn80g3rlXiJ3E4`m|&ks{cQ=X zL>w6(_}-|(?$m_GwQ21YSdX; zL!C~%-*egjqBvLId3+_PTrU4Ib~m`>I$>FCN!w8tUIg{8|k!ns0XLnGBx za!@|bTk9oWnuqTdSneON8NY{$W_(GMn$-T!^BR!`Fti0*kHPMxihJJ!3xK&#TDhIz>IlbhnZ`25g|ST?SF*N zmS{0fT@`VaV7jqLT5Y|0bqvh}TR!+gAU=Ss?>Q^RhPn|0voU#EF+MT^oIS?SAU~Nv^Gjv7($1|cIyW3#{bb4v)wb93mGER>I?`F z*}bu_@@wcT63$4@Cc8R;mep=+e-*&EpcB1@PGM)O zaMT=0rZ4hI+AqzOw1272JlSdh`_#3)T%l|VGclk1NvI}mi^tWeOgUfM7}G;)9D&*` z-;+q}XAAoztmJQg44ve614qKipGFN3oOLh3W{$~XXgXKQCX7zz={&$Z)||(`3NW(j z_GErO_d<;he~9pHjK!8G&iNNz9*~A9jdA3nW)L(5fiBUe;eV%x7EYV(PfQWmzltfJ z$b2OtMQrvC>SfD37lOVz1PGqJVUBrsjhlsLw&4*P?xGn5EVu*;Na^XnjJW;sB&&kT zndd4wM(dyV87VF}^1b16M<49r?2%bZfNR{f(){xh(Z(Ew%@d0JYIt$zII<5Bv9>wR z6P=}qQP|Xuzklmw8d8_4b{BbUU=g>FnFQ8EE$F$Ft zU$K-dLH7rrU~rzQ>-jV<`437p9hNaz)mtfhnZU?b?UtM=q)X^8mDo3k^F31#dhT%L zE2o4m9DY%hxCI3MgqyHo4OjTMWi<_`u?+k;Xnf9qVSmS_k>&NJ_Hsxp(yoEM*$t{V zhNbOb)?`d;d1YtF(XSaN7-=7g>5I_QVc@97PdXGpY%;JDEP1yASFX?BCRJ zy@6Gdy4@p{F05pIRrZSIlL2awU}g^6ZTk^8YKkh-4oU72((Msm6)hnsC+$;+2iSKm z9pUKGDSr}KP71xf0$V@Bv**dWX?YjJc`rttD}G_675h?Dz<90Zw27+fBC`KHrAZ!? z1pCA9;O>Qxlv;=!cSe8~olrlT>hl7^ZUP{SY-)j3Qdbjf&J@-&4RPGRY3gDpr}+V) zDhRvt=ms@+HK!7tGFvzF3P(|aio4xoBPxwffPZJ@?%`6Pi8M;2X7Y`t!Mr#&&1+MI z0LJrvbZGA6CAhl%e5h8$D8>%-NU%oMkVL8&fMDi2x9$!TV&T%ksr&cMkT}6V2+d97 zHF16bEPg3NEl}ZH!NUzHihKkH6z;C6E3gv)wmj-rM_MSloFa#+O;Z-5eqeZcLJ#ija^pKP}IY&vKDk!s7*-opnsKRv8|q zuv0R7MJ!Hg_etwXCp_c`sOE2Ai-EVBB7Z{CzZ7XT_$0~#-(W{OFWhcC%3YLn5cYF& ztF+>#$W42I%nOd3*y+CISrmez>c9o^4b()shz%W2mXMaM!EMuTUg=L%j#~R&Z6HhA z0oCM3p(t3WqSE%^lU=v&bMvvUQvBv@MjKiWn)A0-N#c}ux2(|CJWFXdn@Jd<*f zU#~3pnqS(b-l_pQeDj9IA^OMIfaa|-aS4TvEVC8p5doYv+C<;EKzYr?=-OgWzdu$) z*0*Wm6|xn-9gD{r#A(G!njUPwYm9S|;ca52;T=N(NU7C#=i!KCk4rn)Hgz7lO8kp|3C;Wc%nK zxO7&B=Oq50BRsDyY@&x>+kcRl+1O)E9OSjb0rSpf;2Yi;JF)(4@sOJX5jUUsWvTcH zw0i8dO_CspV;iVmw3t9EjrSVc@%41&aZSoLsA8pO|MBfWX-%RZDt?4eWcBS%Q;pk} zZHEPJLSR;E+4KWBLevXmSGF=?{DElUsSvNjkc=R^YrXh0UQAlpoPX(m;IR&K15N*U zD{li-4qtBkn>%b=P!GI8MuPw;?}Q~F3GYgFu|rRerSZ{V*9;HRZeNx=(7^gA;{d** zc4}c+JnGA4L6Dj07u%+r!I4zwiJK2OEo#c6hd||Hz&>BO#PG7FN|Z)mQ1&pe47J&g z#6ou9d z=GEG)6UqB?+Jrwbu~Lcm@=pam6yu8zjbAG1Km;a1S?4pNJl}$#e-ex);UmsFD8bTx z53LB4yy|Oh|9^;2JE_^vssmtI36=MiLa>5zIRZqc-;{Ys-jZ=S$Hli}(L^@?$G@Dj zsy1M`EQTEl3Yq1B;ArQkAvvIv5u1y?<%C3XWsP^m*HOr7FSe$(qk0~u?xj*6?U`Km z=-3VyA}dP7&(Mn#7F990->T`tF{ght9y1la4gaZb@PBYTMrpnADl;e}`^9Y~?B2Y1 zlm`So)xHJ8fGNLv&PGb5i|0T66m9j7^_xl)J2=KMLQB{s1pDco%C>#t}^OQ7mkn&c568>IY#(%N(_`DR%XkwWPBKss4-{JJvmyMb6 zwGRKT*rIF;xW0?8%q)U?)YJuTi(}<3@@Ao>c90sU{DWnW2>vkh*+JtJne&+E96n0- zhvJl!RC>xD=`;_KPDnCRWq1jEvfo#^n?uy+PwLaMiQiobvj@7M(kzM^Aoxhz2E;Ry zm4A()_ezwf_uu4J>l%P~*J3!O1u@a_Oii`2ZRtS&}a-6^>{wDAx&jZ)r z4PkQmj0`nb->&Y><8Q-8>D?xok)p)(LlfyDO`Oz5oz>Je9 z*yr)KZX)3DXEWak^NP-2lq65(Qe>>*o^P+ zm-N)8%tPHiSu*A_(E5Dmje2r0TSYBPLxkY=niv#y&o_ezx$tI!cS|I6>hgTn3gN_Q zkZ=$)cu}CPOP219gA|Hb!RUXq3~hV`lQ8jirHpPVHsoURaKvrk?+&le#0my||ElaE@On3qemX0M z{mO=$RLD@RHP~>NWo7|wX5!*WjoTnN7%q7Pk(D7%( z@H_E~l(-v1jCv}8$?6M8NAPFv(0^?fYofm11|4J4Maz)e+C)6kJ7UsaQ(xYm{0f2g zP3`ewbVW?1fi-|gnlpyaWtQ^4lIG?5E>yxcMNa~$oTKW|I_Mix#C4aO;5vKqp>T$} z&G4L)^v4{dB#E@>mY6R>koWz%QoPVUjxKL7n++4H+feEGX;w)Az+O74}^k8GRG)fD)-JiQWhHH3iiAhjS_OrWX2>$$0RxA$1fbF zN#Xa1$gqppYzA_S*-jtG(0@i20s46jBkhZC^ZSY^o2H$1DQE}M={Mp|)j$vmZnA+s zw4Bga`;QUHW|S}4=Wzqkj*`dOSF}N;U<`gxA#yF8sAl(Mzit7|D~0tZHFYENif(Z& zr=vIC@ZW0f8U@#B3Ip8>>3aKp>`%;PZJ@y@uuJ*Zw?v%VPf-EUr+-2XWyH$zCNrDY zi_STv6Cu@5xuZ#d%qNSDud$XED<64uGcKIYZry#|cex}qv2Nm?-jTWzXU*j=I@bE( zi-b>iD=?|J{@3%^lNCripc7Wiu}zlKKsKCLxZWw^%xwBM-(PfsMJ#=Ek63gHqyftD zHQj?~un^=~1YTRI#DAipU4f zF-Q#haDzC$BN+Z@Nlabl)Nq|1O6ZTZ8S=7~w}jDoufN=z>QdC3iP;qY?Vb7pf$d$K z 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 delta 490561 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�^fO(h2N2!z8OlzU@!(t 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 z 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%0D&FDW_j-N;N*g6mk3y=r@FR4>t0-5DwJ} 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

    KRwN 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

    f-X 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 QW0;Z2Pnw!=r{h2U6a8|DG5`Po diff --git a/bsp/buildroot/docs/manual/manual.text b/bsp/buildroot/docs/manual/manual.text index c1dd6149..0cabaded 100644 --- a/bsp/buildroot/docs/manual/manual.text +++ b/bsp/buildroot/docs/manual/manual.text @@ -110,13 +110,14 @@ III. Developer guide 17.12. Infrastructure for packages using kconfig for configuration files 17.13. Infrastructure for rebar-based packages - 17.14. Infrastructure for packages building kernel modules - 17.15. Infrastructure for asciidoc documents - 17.16. Infrastructure specific to the Linux kernel package - 17.17. Hooks available in the various build steps - 17.18. Gettext integration and interaction with packages - 17.19. Tips and tricks - 17.20. Conclusion + 17.14. Infrastructure for Waf-based packages + 17.15. Infrastructure for packages building kernel modules + 17.16. Infrastructure for asciidoc documents + 17.17. Infrastructure specific to the Linux kernel package + 17.18. Hooks available in the various build steps + 17.19. Gettext integration and interaction with packages + 17.20. Tips and tricks + 17.21. Conclusion 18. Patching a package @@ -136,14 +137,13 @@ III. Developer guide 21.5. Submitting patches 21.6. Reporting issues/bugs or getting help + 22. DEVELOPERS file and get-developers + IV. Appendix - 22. Makedev syntax documentation - 23. Makeusers syntax documentation - 24. List of target packages available in Buildroot - 25. List of virtual packages - 26. List of host utilities available in Buildroot - 27. Deprecated features + 23. Makedev syntax documentation + 24. Makeusers syntax documentation + 25. Converting old br2-external trees List of Examples @@ -155,15 +155,15 @@ List of Examples --------------------------------------------------------------------- -Buildroot 2016.08.1 manual generated on 2016-09-21 20:57:15 UTC from -git revision b1001ac +Buildroot 2017.02 manual generated on 2017-02-28 21:03:51 UTC from +git revision 083c0735e The Buildroot manual is written by the Buildroot developers. It is licensed under the GNU General Public License, version 2. Refer to the COPYING [http://git.buildroot.org/buildroot/tree/COPYING] file in the Buildroot sources for the full text of this license. -Copyright © 2004-2014 The Buildroot developers +Copyright © 2004-2017 The Buildroot developers Part I. Getting started @@ -240,6 +240,8 @@ vary between distributions). + python (version 2.6 or any later) + unzip + rsync + + file (must be in /usr/bin/file) + + bc * Source fetching tools: + wget @@ -592,7 +594,7 @@ A compilation toolchain is the set of tools that allows you to compile code for your system. It consists of a compiler (in our case, gcc), binary utils like assembler and linker (in our case, binutils) and a C standard library (for example GNU Libc [http://www.gnu.org/ -software/libc/libc.html], uClibc [http://www.uclibc.org/]). +software/libc/libc.html], uClibc-ng [http://www.uclibc-ng.org/]). The system installed on your development station certainly already has a compilation toolchain that you can use to compile an @@ -637,9 +639,9 @@ The internal toolchain backend is the backend where Buildroot builds by itself a cross-compilation toolchain, before building the userspace applications and libraries for your target embedded system. -This backend supports several C libraries: uClibc [http:// -www.uclibc.org], glibc [http://www.gnu.org/software/libc/libc.html] -and musl [http://www.musl-libc.org]. +This backend supports several C libraries: uClibc-ng [http:// +www.uclibc-ng.org], glibc [http://www.gnu.org/software/libc/ +libc.html] and musl [http://www.musl-libc.org]. Once you have selected this backend, a number of options appear. The most important ones allow to: @@ -825,7 +827,7 @@ different solutions to handle the /dev directory : BR2_ROOTFS_STATIC_DEVICE_TABLE to system/device_table_dev.txt board///device_table_dev.txt. For more details about the format of the device table file, see - Chapter 22, Makedev syntax documentation. + Chapter 23, Makedev syntax documentation. * The second solution is Dynamic using devtmpfs only. devtmpfs is a virtual filesystem inside the Linux kernel that has been introduced in kernel 2.6.32 (if you use an older kernel, it is @@ -1232,8 +1234,9 @@ passed to make or set in the environment: * 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; this is the recommended way - of setting it. + through the Buildroot .config file. See Section 8.12.4, “Location + of downloaded packages†for more details on how you can set the + download directory. * BR2_GRAPH_ALT, if set and non-empty, to use an alternate color-scheme in build-time graphs * BR2_GRAPH_OUT to set the filetype of generated graphs, either pdf @@ -1806,8 +1809,8 @@ 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 BR2_EXTERNAL. Both options are valid, the choice -is up to you. +outside of it using a br2-external tree. Both options are valid, the +choice is up to you. +-- board/ | +-- / @@ -1831,8 +1834,8 @@ is up to you. | +-- package/ | +-- / -| +-- Config.in (if not using BR2_EXTERNAL) -| +-- .mk (if not using BR2_EXTERNAL) +| +-- Config.in (if not using a br2-external tree) +| +-- .mk (if not using a br2-external tree) | +-- package1/ | | +-- Config.in | | +-- package1.mk @@ -1840,14 +1843,14 @@ is up to you. | +-- Config.in | +-- package2.mk | -+-- Config.in (if using BR2_EXTERNAL) -+-- external.mk (if using BR2_EXTERNAL) ++-- Config.in (if using a br2-external tree) ++-- external.mk (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 using BR2_EXTERNAL, the and possibly -components may be superfluous and can be left out. +tree but in a br2-external tree, the and possibly + components may be superfluous and can be left out. 9.1.1. Implementing layered customizations @@ -1905,89 +1908,288 @@ 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. + * 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. This section - explains how to use BR2_EXTERNAL. + 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. -BR2_EXTERNAL is an environment variable that can be used to point to -a directory that contains Buildroot customizations. It can be passed -to any Buildroot make invocation. It is automatically saved in the -hidden .br-external 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. +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 BR2_EXTERNAL path can be either an absolute or a relative -path, but if it’s passed as a relative path, it is important to note +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 Chapter 25, Converting old br2-external trees for help on +doing so. + Some examples: -buildroot/ $ make BR2_EXTERNAL=/path/to/foobar menuconfig +buildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig -From now on, external definitions from the /path/to/foobar directory -will be used: +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 external definitions directory at any time: +We can switch to another br2-external tree at any time: -buildroot/ $ make BR2_EXTERNAL=/where/we/have/barfoo xconfig +buildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig -Or disable the usage of external definitions: +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 -BR2_EXTERNAL allows three different things: +9.2.1. Layout of a br2-external tree - * 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 - its location. The BR2_EXTERNAL value is available within the - Buildroot configuration using $(BR2_EXTERNAL). As an example, one - could set the BR2_ROOTFS_OVERLAY Buildroot option to $ - (BR2_EXTERNAL)/board//overlay/ (to specify a root - filesystem overlay), or the BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE - Buildroot option to $(BR2_EXTERNAL)/board// - kernel.config (to specify the location of the kernel - configuration file). - * One can store package recipes (i.e. Config.in and - .mk), or even custom configuration options and make - logic. Buildroot automatically includes $(BR2_EXTERNAL)/Config.in - to make it appear in the top-level configuration menu, and - includes $(BR2_EXTERNAL)/external.mk with the rest of the - makefile logic. +A br2-external tree must contain at least those three files, +described in the following chapters: - Note. Providing Config.in and external.mk is mandatory, but they - can be empty. + * external.desc + * external.mk + * Config.in - The main usage of this is to store package recipes. The - recommended way to do this is to write a $(BR2_EXTERNAL)/ - Config.in file that looks like: +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. - source "$BR2_EXTERNAL/package/package1/Config.in" - source "$BR2_EXTERNAL/package/package2/Config.in" +A complete example br2-external tree layout is also described later. - Then, have a $(BR2_EXTERNAL)/external.mk file that looks like: +9.2.1.1. The external.desc file - include $(sort $(wildcard $(BR2_EXTERNAL)/package/*/*.mk)) +That file describes the br2-external tree: the name and description +for that br2-external tree. - And then in $(BR2_EXTERNAL)/package/package1 and $(BR2_EXTERNAL)/ - package/package2 create normal Buildroot package recipes, as - explained in Chapter 17, Adding new packages to Buildroot. If you - prefer, you can also group the packages in subdirectories called - and adapt the above paths accordingly. +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: - * One can store Buildroot defconfigs in the configs subdirectory of - $(BR2_EXTERNAL). 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 - under the User-provided configs' label in the make - list-defconfigs output. + * name, mandatory, defines the name for that br2-external tree. + That name must only use ASCII characters in the set [A-Za-z0-9_]; + any other character is forbidden. Buildroot sets the variable + BR2_EXTERNAL_$(NAME)_PATH to the absolute path of the + br2-external tree, so that you can use it to refer to your + br2-external tree. This variable is available both in Kconfig, so + you can use it to source your Kconfig files (see below) and in + the Makefile, so that you can use it to include other Makefiles + (see below) or refer to other files (like data files) from your + br2-external tree. + + Note: Since it is possible to use multiple br2-external trees at + once, this name is used by Buildroot to generate variables for + each of those trees. That name is used to identify your + br2-external tree, so try to come up with a name that really + describes your br2-external tree, in order for it to be + relatively unique, so that it does not clash with another name + from another br2-external tree, especially if you are planning on + somehow sharing your br2-external tree with third parties or + using br2-external trees from third parties. + + * desc, optional, provides a short description for that + br2-external tree. It shall fit on a single line, is mostly + free-form (see below), and is used when displaying information + about a br2-external tree (e.g. above the list of defconfig + files, or as the prompt in the menuconfig); as such, it should + relatively brief (40 chars is probably a good upper limit). The + description is available in the BR2_EXTERNAL_$(NAME)_DESC + variable. + +Examples of names and the corresponding BR2_EXTERNAL_$(NAME)_PATH +variables: + + * FOO → BR2_EXTERNAL_FOO_PATH + * BAR_42 → BR2_EXTERNAL_BAR_42_PATH + +In the following examples, it is assumed the name to be set to +BAR_42. + +Note: Both BR2_EXTERNAL_$(NAME)_PATH and BR2_EXTERNAL_$(NAME)_DESC +are available in the Kconfig files and the Makefiles. They are also +exported in the environment so are available in post-build, +post-image and in-fakeroot scripts. + +9.2.1.2. The Config.in and external.mk files + +Those files (which may each be empty) can be used to define package +recipes (i.e. foo/Config.in and foo/foo.mk like for packages bundled +in Buildroot itself) or other custom configuration options or make +logic. + +Buildroot automatically includes the Config.in from each br2-external +tree to make it appear in the top-level configuration menu, and +includes the external.mk from each br2-external tree with the rest of +the makefile logic. + +The main usage of this is to store package recipes. The recommended +way to do this is to write a Config.in file that looks like: + +source "$BR2_EXTERNAL_BAR_42_PATH/package/package1/Config.in" +source "$BR2_EXTERNAL_BAR_42_PATH/package/package2/Config.in" + +Then, have an external.mk file that looks like: + +include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) + +And then in $(BR2_EXTERNAL_BAR_42_PATH)/package/package1 and $ +(BR2_EXTERNAL_BAR_42_PATH)/package/package2 create normal Buildroot +package recipes, as explained in Chapter 17, Adding new packages to +Buildroot. If you prefer, you can also group the packages in +subdirectories called and adapt the above paths +accordingly. + +You can also define custom configuration options in Config.in and +custom make logic in external.mk. + +9.2.1.3. The configs/ directory + +One can store Buildroot defconfigs in the configs subdirectory of the +br2-external tree. Buildroot will automatically show them in the +output of make list-defconfigs and allow them to be loaded with the +normal make _defconfig command. They will be visible in the +make list-defconfigs output, below an External configs label that +contains the name of the br2-external tree they are defined in. + +Note: If a defconfig file is present in more than one br2-external +tree, then the one from the last br2-external tree is used. It is +thus possible to override a defconfig bundled in Buildroot or another +br2-external tree. + +9.2.1.4. 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_FOO)/board//kernel.config + +9.2.1.5. 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_FOO)/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 9.3. Storing the Buildroot configuration @@ -2205,7 +2407,7 @@ from the post-build script. Instead, Buildroot provides support for so-called permission tables. To use this feature, set config option BR2_ROOTFS_DEVICE_TABLE to a space-separated list of permission tables, regular text files -following the makedev syntax Chapter 22, Makedev syntax documentation +following the makedev syntax Chapter 23, Makedev syntax documentation . If you are using a static device table (i.e. not using devtmpfs, @@ -2228,7 +2430,7 @@ Sometimes it is needed to add specific users in the target system. To cover this requirement, Buildroot provides support for so-called users tables. To use this feature, set config option BR2_ROOTFS_USERS_TABLES to a space-separated list of users tables, -regular text files following the makeusers syntax Chapter 23, +regular text files following the makeusers syntax Chapter 24, Makeusers syntax documentation. As shown in Section 9.1, “Recommended directory structureâ€, the @@ -2339,9 +2541,10 @@ project-specific packages in a project-specific directory. As shown in Section 9.1, “Recommended directory structureâ€, the recommended location for project-specific packages is package/ -/. If you are using the BR2_EXTERNAL feature (see +/. If you are using the br2-external tree feature (see Section 9.2, “Keeping customizations outside of Buildrootâ€) the -recommended location is $(BR2_EXTERNAL)/package/. +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 @@ -2361,12 +2564,6 @@ extra directory level below package//): include $(sort $(wildcard package//*/*.mk)) -If you are using BR2_EXTERNAL, create a file $(BR2_EXTERNAL)/ -external.mk with following contents (again assuming only one extra -level): - -include $(sort $(wildcard $(BR2_EXTERNAL)/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 @@ -2379,14 +2576,8 @@ 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 you are using BR2_EXTERNAL, create a file $(BR2_EXTERNAL)/ -Config.in with similar contents: - -source "$BR2_EXTERNAL/package/package1/Config.in" -source "$BR2_EXTERNAL/package/package2/Config.in" - -You do not have to add an include for this $(BR2_EXTERNAL)/Config.in -file as it is included automatically. +If using a br2-external tree, refer to Section 9.2, “Keeping +customizations outside of Buildroot†for how to fill in those files. 9.10. Quick guide to storing your project-specific customizations @@ -2778,6 +2969,16 @@ 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. + 12.2. License abbreviations Here is a list of the licenses that are most widely used by packages @@ -2945,13 +3146,14 @@ Table of Contents 17.12. Infrastructure for packages using kconfig for configuration files 17.13. Infrastructure for rebar-based packages - 17.14. Infrastructure for packages building kernel modules - 17.15. Infrastructure for asciidoc documents - 17.16. Infrastructure specific to the Linux kernel package - 17.17. Hooks available in the various build steps - 17.18. Gettext integration and interaction with packages - 17.19. Tips and tricks - 17.20. Conclusion + 17.14. Infrastructure for Waf-based packages + 17.15. Infrastructure for packages building kernel modules + 17.16. Infrastructure for asciidoc documents + 17.17. Infrastructure specific to the Linux kernel package + 17.18. Hooks available in the various build steps + 17.19. Gettext integration and interaction with packages + 17.20. Tips and tricks + 17.21. Conclusion 18. Patching a package @@ -2971,6 +3173,8 @@ Table of Contents 21.5. Submitting patches 21.6. Reporting issues/bugs or getting help +22. DEVELOPERS file and get-developers + Chapter 14. How Buildroot works As mentioned above, Buildroot is basically a set of Makefiles that @@ -3196,7 +3400,7 @@ 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, -efl and matchbox. If your package fits in one of these categories, +qt5 and gstreamer. If your package fits in one of these categories, then create your package directory in these. New subdirectories are discouraged, however. @@ -3547,9 +3751,6 @@ openGL libraries. See Section 17.11, “Infrastructure for virtual packages†for more on the virtual packages. -See Chapter 25, List of virtual packages for the symbols to depend on -if your package depends on a feature provided by a virtual package. - 17.3. The .mk file Finally, here’s the hardest part. Create a file named libfoo.mk. It @@ -3896,7 +4097,7 @@ information is (assuming the package name is libfoo) : Mercurial, and Bazaar are supported URL types for retrieving packages directly from source code management systems. There is a helper function to make it easier to download source tarballs - from GitHub (refer to Section 17.19.2, “How to add a package from + from GitHub (refer to Section 17.20.2, “How to add a package from GitHub†for details). A filesystem path may be used to specify either a tarball or a directory containing the package source code. See LIBFOO_SITE_METHOD below for more details on how @@ -3908,6 +4109,12 @@ information is (assuming the package name is libfoo) : 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 @@ -3965,11 +4172,12 @@ information is (assuming the package name is libfoo) : 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. - * LIBFOO_GIT_SUBMODULES, when LIBFOO_SITE_METHOD=git, will create - an archive with the git submodules in the repository. Note that - we try not to use such git submodules when they contain bundled - libraries, in which case we prefer to use those libraries from - their own package. + * LIBFOO_GIT_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 " @@ -4018,17 +4226,17 @@ information is (assuming the package name is libfoo) : * LIBFOO_DEVICES lists the device files to be created by Buildroot when using the static device table. The syntax to use is the makedevs one. You can find some documentation for this syntax in - the Chapter 22, Makedev syntax documentation. This variable is + the Chapter 23, Makedev syntax documentation. This variable is optional. * LIBFOO_PERMISSIONS lists the changes of permissions to be done at the end of the build process. The syntax is once again the makedevs one. You can find some documentation for this syntax in - the Chapter 22, Makedev syntax documentation. This variable is + the Chapter 23, Makedev syntax documentation. This variable is optional. * LIBFOO_USERS lists the users to create for this package, if it installs a program you want to run as a specific user (e.g. as a daemon, or as a cron-job). The syntax is similar in spirit to the - makedevs one, and is described in the Chapter 23, Makeusers + makedevs one, and is described in the Chapter 24, Makeusers syntax documentation. This variable is optional. * LIBFOO_LICENSE defines the license (or licenses) under which the package is released. This name will appear in the manifest file @@ -4156,10 +4364,10 @@ endef In the action definitions, you can use the following variables: - * $(FOO_PKGDIR) contains the path to the directory containing the - foo.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… + * $(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. * $(TARGET_CC), $(TARGET_LD), etc. to get the target @@ -4168,7 +4376,7 @@ In the action definitions, you can use the following variables: * Of course the $(HOST_DIR), $(STAGING_DIR) and $(TARGET_DIR) variables to install the packages properly. -Finally, you can also use hooks. See Section 17.17, “Hooks available +Finally, you can also use hooks. See Section 17.18, “Hooks available in the various build steps†for more information. 17.6. Infrastructure for autotools-based packages @@ -4313,7 +4521,7 @@ well for most autotools-based packages. However, when required, it is still possible to customize what is done in any particular step: * By adding a post-operation hook (after extract, patch, configure, - build or install). See Section 17.17, “Hooks available in the + build or install). See Section 17.18, “Hooks available in the various build steps†for details. * By overriding one of the steps. For example, even if the autotools infrastructure is used, if the package .mk file defines @@ -4452,7 +4660,7 @@ well for most CMake-based packages. However, when required, it is still possible to customize what is done in any particular step: * By adding a post-operation hook (after extract, patch, configure, - build or install). See Section 17.17, “Hooks available in the + build or install). See Section 17.18, “Hooks available in the various build steps†for details. * By overriding one of the steps. For example, even if the CMake infrastructure is used, if the package .mk file defines its own @@ -4605,7 +4813,7 @@ well for most Python-based packages. However, when required, it is still possible to customize what is done in any particular step: * By adding a post-operation hook (after extract, patch, configure, - build or install). See Section 17.17, “Hooks available in the + build or install). See Section 17.18, “Hooks available in the various build steps†for details. * By overriding one of the steps. For example, even if the Python infrastructure is used, if the package .mk file defines its own @@ -4628,7 +4836,7 @@ host. When at the root of your buildroot directory just do : -./support/script/scanpypi foo bar -o package +./support/scripts/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. @@ -4645,16 +4853,16 @@ 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: +in a br2-external tree, use the -o flag as follows: -./support/script/scanpypi foo bar -o other_package_dir +./support/scripts/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: -./support/script/scanpypi -h +./support/scripts/scanpypi -h 17.8.4. python-package CFFI backend @@ -4812,8 +5020,8 @@ 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 -supports/scripts/scancpan Foo-Bar in the Buildroot directory (or in -the BR2_EXTERNAL directory). This script creates a Config.in file and +supports/scripts/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. @@ -4833,9 +5041,9 @@ 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, Module-Build and Module-Build-Tiny. Build.PL is -always preferred when a package provides a Makefile.PL and a -Build.PL. +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 @@ -4861,6 +5069,12 @@ 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. @@ -4955,9 +5169,6 @@ 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. -See Chapter 25, List of virtual packages for the symbols to select if -you implement a new provider for an existing virtual package. - 17.11.5. Provider’s .mk file The .mk file should also declare an additional variable @@ -4969,10 +5180,6 @@ packages it is an implementation of: Of course, do not forget to add the proper build and runtime dependencies for this package! -See Chapter 25, List of virtual packages for the names of virtual -packages to provide if you implement a new provider for an existing -virtual package. - 17.11.6. Notes on depending on a virtual package When adding a package that requires a certain FEATURE provided by a @@ -5087,6 +5294,11 @@ consideration: 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. 17.13. Infrastructure for rebar-based packages @@ -5168,7 +5380,7 @@ well for most rebar-based packages. However, when required, it is still possible to customize what is done in any particular step: * By adding a post-operation hook (after extract, patch, configure, - build or install). See Section 17.17, “Hooks available in the + build or install). See Section 17.18, “Hooks available in the various build steps†for details. * By overriding one of the steps. For example, even if the rebar infrastructure is used, if the package .mk file defines its own @@ -5177,7 +5389,79 @@ still possible to customize what is done in any particular step: restricted to very specific cases. Do not use it in the general case. -17.14. Infrastructure for packages building kernel modules +17.14. Infrastructure for Waf-based packages + +17.14.1. waf-package tutorial + +First, let’s see how to write a .mk file for a Waf-based package, +with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_CONF_OPTS = --enable-bar --disable-baz +11: LIBFOO_DEPENDENCIES = bar +12: +13: $(eval $(waf-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot what options to enable for libfoo. + +On line 11, we tell Buildroot the 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. + +17.14.2. waf-package reference + +The main macro of the Waf package infrastructure is waf-package. It +is similar to the generic-package macro. + +Just like the generic infrastructure, the Waf infrastructure works by +defining a number of variables before calling the waf-package macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Waf infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET. + +An additional variable, specific to the Waf infrastructure, can also +be defined. + + * LIBFOO_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 Buidlroot 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. + +17.15. 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 @@ -5185,7 +5469,7 @@ only contain a kernel module, other packages contain programs and libraries in addition to kernel modules. Buildroot’s helper infrastructure supports either case. -17.14.1. kernel-module tutorial +17.15.1. kernel-module tutorial Let’s start with an example on how to prepare a simple package that only builds a kernel module, and no other component: @@ -5261,7 +5545,7 @@ 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). -17.14.2. kernel-module reference +17.15.2. kernel-module reference The main macro for the kernel module infrastructure is kernel-module. Unlike other package infrastructures, it is not stand-alone, and @@ -5309,7 +5593,7 @@ You may also reference (but you may not set!) those variables: * KERNEL_ARCH contains the name of the current architecture, like arm, mips… -17.15. Infrastructure for asciidoc documents +17.16. Infrastructure for asciidoc documents The Buildroot manual, which you are currently reading, is entirely written using the AsciiDoc [http://asciidoc.org/] mark-up syntax. The @@ -5325,13 +5609,13 @@ 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 -BR2_EXTERNAL Section 9.2, “Keeping customizations outside of -Buildrootâ€. This allows documentation for a BR2_EXTERNAL tree to +Also as for packages, the AsciiDoc infrastructure is available from a +br2-external tree Section 9.2, “Keeping customizations outside of +Buildrootâ€. 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. -17.15.1. asciidoc-document tutorial +17.16.1. asciidoc-document tutorial Whereas package infrastructures are suffixed with -package, the document infrastructures are suffixed with -document. So, the @@ -5358,7 +5642,7 @@ structure. On line 8, we call the asciidoc-document function, which generates all the Makefile code necessary to render the document. -17.15.2. asciidoc-document reference +17.16.2. asciidoc-document reference The list of variables that can be set in a .mk file to give metadata information is (assuming the document name is foo) : @@ -5368,8 +5652,12 @@ information is (assuming the document name is foo) : * 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 Section 17.17, “Hooks available +There are also additional hooks (see Section 17.18, “Hooks available in the various build steps†for general information on hooks), that a document may set to define extra actions to be done at various steps: @@ -5422,42 +5710,44 @@ Here is a complete example that uses all variables and all hooks: 30: 31: $(eval $(call asciidoc-document)) -17.16. Infrastructure specific to the Linux kernel package +17.17. 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. -17.16.1. linux-kernel-tools +17.17.1. linux-kernel-tools Buildroot offers a helper infrastructure to build some userspace tools for the target available within the Linux kernel sources. Since -their source code is part of the kernel source code, it is not very -practical to use separate packages for them as they often need to be -built with the same kernel version as the kernel being used on the -target. The small Linux kernel tools infrastructure is a simplified -packaging mechanism based on the generic package infrastructure to -help building those tools. +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 linux/Config.tools.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: +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_LINUX_KERNEL_TOOL_FOO +01: config BR2_PACKAGE_LINUX_TOOLS_FOO 02: bool "foo" -03: help -04: This is a comment that explains what foo kernel tool is. -05: -06: http://foosoftware.org/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_LINUX_KERNEL_TOOL_, -followed by the uppercase name of the tool (like is done for -packages). +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). -Then for each linux tool, add a new .mk file named linux/ -linux-tool-foo.mk. It would basically look like: +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 file named package/ +linux-tools/linux-tool-foo.mk. It would basically look like: 01: ################################################################################ 02: # @@ -5470,18 +5760,18 @@ linux-tool-foo.mk. It would basically look like: 09: FOO_DEPENDENCIES = libbbb 10: 11: define FOO_BUILD_CMDS -12: $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/tools foo +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 $(@D)/tools \ +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 $(@D)/tools \ -23: DESTDIR=$(@D) \ +22: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +23: DESTDIR=$(TARGET_DIR) \ 24: foo_install 25: endef @@ -5501,9 +5791,9 @@ _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 package. +they are part of the linux-tools package. -17.16.2. linux-kernel-extensions +17.17.2. linux-kernel-extensions Some packages provide new features that require the Linux kernel tree to be modified. This can be in the form of patches to be applied on @@ -5558,10 +5848,10 @@ modify the Linux kernel tree; this is specific to the linux extension and can use the variables defined by the foo package, like: $ (FOO_DIR) or $(FOO_VERSION)… as well as all the Linux variables, like: $(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)… -See the definition of those kernel variables Section 17.14.2, +See the definition of those kernel variables Section 17.15.2, “kernel-module referenceâ€. -17.17. Hooks available in the various build steps +17.18. 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. @@ -5606,7 +5896,7 @@ endef LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP -17.17.1. Using the POST_RSYNC hook +17.18.1. Using the POST_RSYNC hook The POST_RSYNC hook is run only for packages that use a local source, either through the local site method or the OVERRIDE_SRCDIR @@ -5626,14 +5916,14 @@ among others, use the following variables: * $(SRCDIR): the path to the overridden source directory * $(@D): the path to the build directory -17.17.2. Target-finalize hook +17.18.2. Target-finalize hook Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. These hooks are run after all packages are built, but before the filesystem images are generated. They are seldom used, and your package probably do not need them. -17.18. Gettext integration and interaction with packages +17.19. Gettext integration and interaction with packages Many packages that support internationalization use the gettext library. Dependencies for this library are fairly complicated and @@ -5690,9 +5980,9 @@ rare) should: * not add any gettext dependency in the DEPENDENCIES variable of their .mk file. -17.19. Tips and tricks +17.20. Tips and tricks -17.19.1. Package name, config entry name and makefile variable +17.20.1. Package name, config entry name and makefile variable relationship In Buildroot, there is some relationship between: @@ -5716,7 +6006,7 @@ the following rules: . and - characters substituted with _ (e.g.: FOO_BAR_BOO_VERSION). -17.19.2. How to add a package from GitHub +17.20.2. 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 @@ -5756,7 +6046,7 @@ tag: then it’s an automatically generated tarball and you should use the github helper function. -17.20. Conclusion +17.21. 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 @@ -6210,6 +6500,12 @@ 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 a separate +patch of the series. See the DEVELOPERS file Chapter 22, DEVELOPERS +file and get-developers for more information. + 21.5.2. Preparing a patch series Starting from the changes committed in your local git view, rebase @@ -6231,9 +6527,16 @@ 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. -Lastly, send/submit your patch set to the Buildroot mailing list: +Buildroot provides a handy tool to know to whom your patches should +be sent, called get-developers (see Chapter 22, DEVELOPERS file and +get-developers for more information). This tool reads your patches +and outputs the appropriate git send-email command to use: -$ git send-email --to buildroot@buildroot.org outgoing/* +$ ./support/scripts/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/* Note that git should be configured to use your mail account. To configure git, see man git-send-email or google it. @@ -6373,18 +6676,55 @@ gist.github.com/ - http://code.bulix.org/ ^[4] RFC: (Request for comments) change proposal +Chapter 22. 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-developer tool allows to: + + * Calculate the list of developers to whom patches should be sent, + by parsing the patches and matching the modified files with the + relevant developers. See Section 21.5, “Submitting patches†for + details. + * Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs + on this architecture or package. This is done in interaction with + Buildroot’s autobuild infrastructure. + +We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the DEVELOPERS +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the +DEVELOPERS file. + +The DEVELOPERS file format is documented in detail inside the file +itself. + +The get-developer tool, located in support/scripts allows to use the +DEVELOPERS file for various tasks: + + * When passing one or several patches as command line argument, + get-developer will return the appropriate git send-email command. + * When using the -a command line option, get-developer will + return the list of developers in charge of the given + architecture. + * When using the -p command line option, get-developer + will return the list of developers in charge of the given + package. + * When using the -c command line option, get-developer 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. + Part IV. Appendix Table of Contents -22. Makedev syntax documentation -23. Makeusers syntax documentation -24. List of target packages available in Buildroot -25. List of virtual packages -26. List of host utilities available in Buildroot -27. Deprecated features +23. Makedev syntax documentation +24. Makeusers syntax documentation +25. Converting old br2-external trees -Chapter 22. Makedev syntax documentation +Chapter 23. 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 @@ -6473,7 +6813,7 @@ cap_net_admin to the binary foo, you will write : |xattr cap_sys_admin+eip |xattr cap_net_admin+eip -Chapter 23. Makeusers syntax documentation +Chapter 24. Makeusers syntax documentation The syntax to create users is inspired by the makedev syntax, above, but is specific to Buildroot. @@ -6558,5061 +6898,36 @@ This will create this user: * test is not a member of any additional groups * comment is: Test user -Chapter 24. List of target packages available in Buildroot +Chapter 25. Converting old br2-external trees -+-------------------------------------------------------------------+ -| Packages |Target packages → … | -|-------------------------------+-----------------------------------| -| 4th |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| a10disp |→ Hardware handling | -|-------------------------------+-----------------------------------| -| acl |→ System tools | -|-------------------------------+-----------------------------------| -| acpica |→ Hardware handling | -|-------------------------------+-----------------------------------| -| acpid |→ Hardware handling | -|-------------------------------+-----------------------------------| -| acpitool |→ Hardware handling | -|-------------------------------+-----------------------------------| -| acsccid |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| adwaita icon theme |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| aer-inject |→ Hardware handling | -|-------------------------------+-----------------------------------| -| aespipe |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| agent++ |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| aiccu |→ Networking applications | -|-------------------------------+-----------------------------------| -| aircrack-ng |→ Networking applications | -|-------------------------------+-----------------------------------| -| alljoyn |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| alljoyn-base |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| alljoyn-tcl |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| alljoyn-tcl-base |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| alsa-lib |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| alsa-utils |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| alsamixergui |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| am335x-pru-package |→ Hardware handling | -|-------------------------------+-----------------------------------| -| am33x-cm3 |→ Hardware handling → Firmware | -|-------------------------------+-----------------------------------| -| android-tools |→ System tools | -|-------------------------------+-----------------------------------| -| angularjs |→ Libraries → Javascript | -|-------------------------------+-----------------------------------| -| apache |→ Networking applications | -|-------------------------------+-----------------------------------| -| apitrace |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| applewmproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| appres |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| apr |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| apr-util |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| argp-standalone |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| argparse |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| argus |→ Networking applications | -|-------------------------------+-----------------------------------| -| armadillo |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| arptables |→ Networking applications | -|-------------------------------+-----------------------------------| -| assimp |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| at |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| atf |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| atftp |→ Networking applications | -|-------------------------------+-----------------------------------| -| atk |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| atkmm |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| attr |→ System tools | -|-------------------------------+-----------------------------------| -| audiofile |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| audit |→ System tools | -|-------------------------------+-----------------------------------| -| aumix |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| autofs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| autossh |→ Networking applications | -|-------------------------------+-----------------------------------| -| avahi |→ Networking applications | -|-------------------------------+-----------------------------------| -| avrdude |→ Hardware handling | -|-------------------------------+-----------------------------------| -| axel |→ Networking applications | -|-------------------------------+-----------------------------------| -| b43-firmware |→ Hardware handling → Firmware | -|-------------------------------+-----------------------------------| -| babeld |→ Networking applications | -|-------------------------------+-----------------------------------| -| bandwidthd |→ Networking applications | -|-------------------------------+-----------------------------------| -| bash |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| batctl |→ Networking applications | -|-------------------------------+-----------------------------------| -| batman-adv |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| bc |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| bcache tools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| bcm2835 |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| bcusdk |→ Networking applications | -|-------------------------------+-----------------------------------| -| bdftopcf |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| bdwgc |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| beecrypt |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| beforelight |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| bellagio |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| benejson |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| berkeleydb |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| bigreqsproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| bind |→ Networking applications | -|-------------------------------+-----------------------------------| -| binutils |→ Development tools | -|-------------------------------+-----------------------------------| -| biosdevname |→ Hardware handling | -|-------------------------------+-----------------------------------| -| bitmap |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| bitstream |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| Bitstream Vera |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| blktrace |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| bluez-utils |→ Networking applications | -|-------------------------------+-----------------------------------| -| bluez-utils 5.x |→ Networking applications | -|-------------------------------+-----------------------------------| -| bmon |→ Networking applications | -|-------------------------------+-----------------------------------| -| boa |→ Networking applications | -|-------------------------------+-----------------------------------| -| bonnie++ |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| boost |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| bootstrap |→ Libraries → Javascript | -|-------------------------------+-----------------------------------| -| bootutils |→ System tools | -|-------------------------------+-----------------------------------| -| botan |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| bridge-utils |→ Networking applications | -|-------------------------------+-----------------------------------| -| bsdiff |→ Development tools | -|-------------------------------+-----------------------------------| -| btrfs-progs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| bullet |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| bustle |→ Development tools | -|-------------------------------+-----------------------------------| -| BusyBox | | -|-------------------------------+-----------------------------------| -| bwm-ng |→ Networking applications | -|-------------------------------+-----------------------------------| -| bzip2 |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| c-ares |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| c-icap |→ Networking applications | -|-------------------------------+-----------------------------------| -| c-icap-modules |→ Networking applications | -|-------------------------------+-----------------------------------| -| c-periphery |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| CA Certificates |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| cache-calibrator |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| cairo |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| cairomm |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| can-utils |→ Networking applications | -|-------------------------------+-----------------------------------| -| canfestival |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| cannelloni |→ Networking applications | -|-------------------------------+-----------------------------------| -| cantarell |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| cblas/clapack |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| cc-tool |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ccid |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| ccrypt |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| cdrkit |→ Hardware handling | -|-------------------------------+-----------------------------------| -| cegui06 |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| celt051 |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| cgic |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| cgilua |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| cgroupfs-mount |→ System tools | -|-------------------------------+-----------------------------------| -| check |→ Development tools | -|-------------------------------+-----------------------------------| -| chocolate-doom |→ Games | -|-------------------------------+-----------------------------------| -| chrony |→ Networking applications | -|-------------------------------+-----------------------------------| -| cifs-utils |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| circus |→ System tools | -|-------------------------------+-----------------------------------| -| civetweb |→ Networking applications | -|-------------------------------+-----------------------------------| -| cJSON |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| clamav |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| classpath |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| collectd |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| comix-cursors |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| compositeproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| connman |→ Networking applications | -|-------------------------------+-----------------------------------| -| connman-gtk |→ Networking applications | -|-------------------------------+-----------------------------------| -| conntrack-tools |→ Networking applications | -|-------------------------------+-----------------------------------| -| copas |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| coreutils |→ System tools | -|-------------------------------+-----------------------------------| -| cosmo |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| coxpcall |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| cpio |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| cppcms |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| cppdb |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| cppunit |→ Development tools | -|-------------------------------+-----------------------------------| -| cppzmq |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| cpuload |→ System tools | -|-------------------------------+-----------------------------------| -| cramfs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| crda |→ Networking applications | -|-------------------------------+-----------------------------------| -| crudini |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| cryptodev-linux |→ Libraries → Crypto → cryptodev | -| |variant | -|-------------------------------+-----------------------------------| -| cryptsetup |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ctorrent |→ Networking applications | -|-------------------------------+-----------------------------------| -| cups |→ Networking applications | -|-------------------------------+-----------------------------------| -| curlftpfs (FUSE) |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| cvs |→ Development tools | -|-------------------------------+-----------------------------------| -| cwiid |→ Hardware handling | -|-------------------------------+-----------------------------------| -| cxxtest |→ Development tools | -|-------------------------------+-----------------------------------| -| czmq |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| dado |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| damageproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| dante |→ Networking applications | -|-------------------------------+-----------------------------------| -| dash |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| dawgdic |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| dbus |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dbus-c++ |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dbus-glib |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dbus-python |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dbus-triggerd |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dcron |→ System tools | -|-------------------------------+-----------------------------------| -| debianutils |→ System tools | -|-------------------------------+-----------------------------------| -| Declarative module |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| DejaVu fonts |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| devmem2 |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dhcp (ISC) |→ Networking applications | -|-------------------------------+-----------------------------------| -| dhcpcd |→ Networking applications | -|-------------------------------+-----------------------------------| -| dhcpdump |→ Networking applications | -|-------------------------------+-----------------------------------| -| dhrystone |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| dialog |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| diffutils |→ Development tools | -|-------------------------------+-----------------------------------| -| dillo |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| ding-libs |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| directfb |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| directfb examples |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| dmalloc |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| dmidecode |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dmraid |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dmxproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| dnsmasq |→ Networking applications | -|-------------------------------+-----------------------------------| -| docker |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| docker-containerd |→ System tools | -|-------------------------------+-----------------------------------| -| docker-engine |→ System tools | -|-------------------------------+-----------------------------------| -| domoticz |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| dos2unix |→ Development tools | -|-------------------------------+-----------------------------------| -| dosfstools |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| dovecot |→ Mail | -|-------------------------------+-----------------------------------| -| dovecot-pigeonhole |→ Mail | -|-------------------------------+-----------------------------------| -| drbd-utils |→ Networking applications | -|-------------------------------+-----------------------------------| -| dri2proto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| dri3proto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| dropbear |→ Networking applications | -|-------------------------------+-----------------------------------| -| dropwatch |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| dsp-tools |→ System tools | -|-------------------------------+-----------------------------------| -| dstat |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| dt |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| dtach |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| dtc (libfdt) |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| dtv-scan-tables |→ Hardware handling | -|-------------------------------+-----------------------------------| -| duma |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| dvb-apps |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dvblast |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| dvbsnoop |→ Hardware handling | -|-------------------------------+-----------------------------------| -| dvdauthor |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| dvdrw-tools |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| e2fsprogs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| e2tools |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| ebtables |→ Networking applications | -|-------------------------------+-----------------------------------| -| ecryptfs-utils |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| ed |→ Text editors and viewers | -|-------------------------------+-----------------------------------| -| edid-decode |→ Hardware handling | -|-------------------------------+-----------------------------------| -| editres |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| eeprog |→ Hardware handling | -|-------------------------------+-----------------------------------| -| efibootmgr |→ System tools | -|-------------------------------+-----------------------------------| -| efivar |→ System tools | -|-------------------------------+-----------------------------------| -| efl |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| eigen |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| ejabberd |→ Networking applications | -|-------------------------------+-----------------------------------| -| elementary |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| elfutils |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| emlog |→ System tools | -|-------------------------------+-----------------------------------| -| empty |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| enchant |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| encodings |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| enlightenment |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| enscript |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| erlang |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| erlang-goldrush |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-lager |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-cache-tab |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-iconv |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-sip |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-stringprep |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-stun |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-tls |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-utils |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-xml |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-yaml |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| erlang-p1-zlib |→ Interpreter languages and | -| |scripting → Erlang libraries/ | -| |modules | -|-------------------------------+-----------------------------------| -| espeak |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| ethtool |→ Networking applications | -|-------------------------------+-----------------------------------| -| eudev |→ Hardware handling | -|-------------------------------+-----------------------------------| -| evemu |→ Hardware handling | -|-------------------------------+-----------------------------------| -| eventlog |→ Libraries → Logging | -|-------------------------------+-----------------------------------| -| evtest |→ Hardware handling | -|-------------------------------+-----------------------------------| -| exFAT (FUSE) |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| exfat-utils |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| exim |→ Mail | -|-------------------------------+-----------------------------------| -| exiv2 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| expat |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| expect |→ Interpreter languages and | -| |scripting → Tcl libraries/modules | -|-------------------------------+-----------------------------------| -| expedite |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| explorercanvas |→ Libraries → Javascript | -|-------------------------------+-----------------------------------| -| ezxml |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| f2fs-tools |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| faad2 |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| faifa |→ Networking applications | -|-------------------------------+-----------------------------------| -| fan-ctrl |→ Hardware handling | -|-------------------------------+-----------------------------------| -| fastd |→ Networking applications | -|-------------------------------+-----------------------------------| -| fb-test-app |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| fbdump (Framebuffer Capture |→ Graphic libraries and | -| Tool) |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| fbgrab |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| fbset |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| fbterm |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| fbv |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| fcgiwrap |→ Networking applications | -|-------------------------------+-----------------------------------| -| fconfig |→ Hardware handling | -|-------------------------------+-----------------------------------| -| fdk-aac |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| feh |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| fetchmail |→ Mail | -|-------------------------------+-----------------------------------| -| ffmpeg |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| fftw |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| ficl |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| file |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| filemq |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| findutils |→ Development tools | -|-------------------------------+-----------------------------------| -| fio |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| firmware-imx |→ Hardware handling | -|-------------------------------+-----------------------------------| -| fis |→ Hardware handling | -|-------------------------------+-----------------------------------| -| fixesproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| flac |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| flann |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| flannel |→ Networking applications | -|-------------------------------+-----------------------------------| -| flashbench |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| flashrom |→ Hardware handling | -|-------------------------------+-----------------------------------| -| flex |→ Development tools | -|-------------------------------+-----------------------------------| -| flickcurl |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| flite |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| flot |→ Libraries → Javascript | -|-------------------------------+-----------------------------------| -| fltk |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| fluxbox |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| fmc |→ Networking applications | -|-------------------------------+-----------------------------------| -| fmlib |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| fmtools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| font-adobe-100dpi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-adobe-75dpi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-adobe-utopia-100dpi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-adobe-utopia-75dpi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-adobe-utopia-type1 |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-alias |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-arabic-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-awesome |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| font-bh-100dpi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-bh-75dpi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -|font-bh-lucidatypewriter-100dpi|→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -|font-bh-lucidatypewriter-75dpi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-bh-ttf |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-bh-type1 |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-bitstream-100dpi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-bitstream-75dpi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-bitstream-type1 |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-cronyx-cyrillic |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-cursor-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-daewoo-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-dec-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-ibm-type1 |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-isas-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-jis-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-micro-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-misc-cyrillic |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-misc-ethiopic |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-misc-meltho |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-misc-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-mutt-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-schumacher-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-screen-cyrillic |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-sony-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-sun-misc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-util |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-winitzki-cyrillic |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| font-xfree86-type1 |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Fonts | -|-------------------------------+-----------------------------------| -| fontcacheproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| fontconfig |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| fontsproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| fonttosfnt |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| fping |→ Networking applications | -|-------------------------------+-----------------------------------| -| freeradius-client |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| freerdp |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| Freescale i.MX libraries |→ Hardware handling | -|-------------------------------+-----------------------------------| -| freeswitch |→ Networking applications | -|-------------------------------+-----------------------------------| -| freetype |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| fslsfonts |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| fstobdf |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| fswebcam |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| ftop |→ System tools | -|-------------------------------+-----------------------------------| -| fwup |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| fxload |→ Hardware handling | -|-------------------------------+-----------------------------------| -| gadgetfs-test |→ Hardware handling | -|-------------------------------+-----------------------------------| -| gamin |→ Libraries → Filesystem | -|-------------------------------+-----------------------------------| -| gauche |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| gawk |→ Development tools | -|-------------------------------+-----------------------------------| -| gcr |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| gd |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| gdb |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| gdbm |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| gdk-pixbuf |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| genext2fs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| genpart |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| genromfs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| geoip |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| gesftpserver |→ Networking applications | -|-------------------------------+-----------------------------------| -| getent |→ System tools | -|-------------------------------+-----------------------------------| -| gettext |→ Development tools | -|-------------------------------+-----------------------------------| -| gflags |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| ghostscript-fonts |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| giblib |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| giflib |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| git |→ Development tools | -|-------------------------------+-----------------------------------| -| glib-networking |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| glibmm |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| glm |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| glmark2 |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| glog |→ Libraries → Logging | -|-------------------------------+-----------------------------------| -| glproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| gmock |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| gmp |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| gmpc |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| gmrender-resurrect |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gnu-efi |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| gnuchess |→ Games | -|-------------------------------+-----------------------------------| -| gnupg |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| gnupg2 |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| gnuplot |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| gnuradio |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| gnutls |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| Google font directory |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| google-breakpad |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| google-material-design-icons |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| gperf |→ Development tools | -|-------------------------------+-----------------------------------| -| gpm |→ Hardware handling | -|-------------------------------+-----------------------------------| -| gpsd |→ Hardware handling | -|-------------------------------+-----------------------------------| -| gptfdisk |→ Hardware handling | -|-------------------------------+-----------------------------------| -| gpu-amd-bin-mx51 (also imx53) |→ Hardware handling | -|-------------------------------+-----------------------------------| -| gqview |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| gr-osmosdr |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| granite |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| grantlee |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| graphite2 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| grep |→ Development tools | -|-------------------------------+-----------------------------------| -| gsettings-desktop-schemas |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| gsl |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| gssdp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| gst-dsp |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst-ffmpeg |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst-fsl-plugins |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst-omapfb |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst-omx |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst-plugin-x170 |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst-plugins-bad |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst-plugins-base |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst-plugins-good |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst-plugins-ugly |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst1-imx |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst1-libav |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst1-plugins-bad |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst1-plugins-base |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst1-plugins-good |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst1-plugins-ugly |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gst1-validate |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gstreamer 0.10 |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gstreamer 1.x |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| gtest |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| gtk engines |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| gtk# 3 |→ Interpreter languages and | -| |scripting → Mono libraries/modules | -|-------------------------------+-----------------------------------| -| gtkmm3 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| gtkperf (performance test for |→ Graphic libraries and | -| GTK2) |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| gtksourceview |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| guile |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| gupnp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| gupnp-av |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| gupnp-dlna |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| gupnp-tools |→ Networking applications | -|-------------------------------+-----------------------------------| -| gutenprint |→ Networking applications | -|-------------------------------+-----------------------------------| -| gvfs |→ Hardware handling | -|-------------------------------+-----------------------------------| -| gzip |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| hans |→ Networking applications | -|-------------------------------+-----------------------------------| -| harfbuzz |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| haserl |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| haveged |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| hdparm |→ Hardware handling | -|-------------------------------+-----------------------------------| -| heirloom-mailx |→ Mail | -|-------------------------------+-----------------------------------| -| hiawatha |→ Networking applications | -|-------------------------------+-----------------------------------| -| hicolor icon theme |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| hidapi |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| hostapd |→ Networking applications | -|-------------------------------+-----------------------------------| -| hplip |→ Networking applications | -|-------------------------------+-----------------------------------| -| htop |→ System tools | -|-------------------------------+-----------------------------------| -| httping |→ Networking applications | -|-------------------------------+-----------------------------------| -| hwdata |→ Hardware handling | -|-------------------------------+-----------------------------------| -| hwloc |→ Hardware handling | -|-------------------------------+-----------------------------------| -| i2c-tools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| i7z |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ibrcommon |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| ibrdtn |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| ibrdtn-tools |→ Networking applications | -|-------------------------------+-----------------------------------| -| ibrdtnd |→ Networking applications | -|-------------------------------+-----------------------------------| -| iceauth |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| ico |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| icu |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| ifplugd |→ Networking applications | -|-------------------------------+-----------------------------------| -| iftop |→ Networking applications | -|-------------------------------+-----------------------------------| -| ifupdown |→ Networking applications | -|-------------------------------+-----------------------------------| -| igd2-for-linux |→ Networking applications | -|-------------------------------+-----------------------------------| -| igh-ethercat |→ Networking applications | -|-------------------------------+-----------------------------------| -| igmpproxy |→ Networking applications | -|-------------------------------+-----------------------------------| -| ijs |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| imagemagick |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| imlib2 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| imx-codec |→ Hardware handling | -|-------------------------------+-----------------------------------| -| imx-gpu-viv |→ Hardware handling | -|-------------------------------+-----------------------------------| -| imx-kobs |→ Hardware handling | -|-------------------------------+-----------------------------------| -| imx-lib |→ Hardware handling | -|-------------------------------+-----------------------------------| -| imx-parser |→ Hardware handling | -|-------------------------------+-----------------------------------| -| imx-uuc |→ Hardware handling | -|-------------------------------+-----------------------------------| -| imx-vpu |→ Hardware handling | -|-------------------------------+-----------------------------------| -| imx-vpuwrap |→ Hardware handling | -|-------------------------------+-----------------------------------| -| inadyn |→ Networking applications | -|-------------------------------+-----------------------------------| -| inconsolata |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| inotify-tools |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| input-event-daemon |→ Hardware handling | -|-------------------------------+-----------------------------------| -| input-tools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| inputproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| intel-microcode |→ Hardware handling | -|-------------------------------+-----------------------------------| -| intltool |→ Development tools | -|-------------------------------+-----------------------------------| -| iodine |→ Networking applications | -|-------------------------------+-----------------------------------| -| iostat |→ Hardware handling | -|-------------------------------+-----------------------------------| -| iotop |→ System tools | -|-------------------------------+-----------------------------------| -| iozone |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| iperf |→ Networking applications | -|-------------------------------+-----------------------------------| -| iperf3 |→ Networking applications | -|-------------------------------+-----------------------------------| -| ipkg (deprecated) |→ Package managers | -|-------------------------------+-----------------------------------| -| ipmitool |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ipmiutil |→ Hardware handling | -|-------------------------------+-----------------------------------| -| iproute2 |→ Networking applications | -|-------------------------------+-----------------------------------| -| iprutils |→ System tools | -|-------------------------------+-----------------------------------| -| ipsec-tools |→ Networking applications | -|-------------------------------+-----------------------------------| -| ipset |→ Networking applications | -|-------------------------------+-----------------------------------| -| iptables |→ Networking applications | -|-------------------------------+-----------------------------------| -| iptraf-ng |→ Networking applications | -|-------------------------------+-----------------------------------| -| iputils |→ Networking applications | -|-------------------------------+-----------------------------------| -| iqvlinux |→ Hardware handling | -|-------------------------------+-----------------------------------| -| irda-utils |→ Hardware handling | -|-------------------------------+-----------------------------------| -| irqbalance |→ System tools | -|-------------------------------+-----------------------------------| -| irssi |→ Networking applications | -|-------------------------------+-----------------------------------| -| iucode-tool |→ Hardware handling | -|-------------------------------+-----------------------------------| -| iw |→ Networking applications | -|-------------------------------+-----------------------------------| -| jack2 |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| jamvm |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| jansson |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| janus-gateway |→ Networking applications | -|-------------------------------+-----------------------------------| -| jasper |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| jemalloc |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| jhead |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| jimtcl |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| joe |→ Text editors and viewers | -|-------------------------------+-----------------------------------| -| jpeg |→ Libraries → Graphics → jpeg | -| |variant | -|-------------------------------+-----------------------------------| -| jpeg-turbo |→ Libraries → Graphics → jpeg | -| |variant | -|-------------------------------+-----------------------------------| -| jq |→ Development tools | -|-------------------------------+-----------------------------------| -| jQuery |→ Libraries → Javascript | -|-------------------------------+-----------------------------------| -| jquery-datetimepicker |→ Libraries → Javascript → External| -| |jQuery plugins | -|-------------------------------+-----------------------------------| -| jquery-keyboard |→ Libraries → Javascript → External| -| |jQuery plugins | -|-------------------------------+-----------------------------------| -| jquery-mobile |→ Libraries → Javascript → External| -| |jQuery plugins | -|-------------------------------+-----------------------------------| -| jquery-sidebar |→ Libraries → Javascript → External| -| |jQuery plugins | -|-------------------------------+-----------------------------------| -| jquery-sparkline |→ Libraries → Javascript → External| -| |jQuery plugins | -|-------------------------------+-----------------------------------| -| jquery-ui |→ Libraries → Javascript → External| -| |jQuery plugins | -|-------------------------------+-----------------------------------| -| jquery-ui-themes |→ Libraries → Javascript → External| -| |jQuery plugins | -|-------------------------------+-----------------------------------| -| jquery-validation |→ Libraries → Javascript → External| -| |jQuery plugins | -|-------------------------------+-----------------------------------| -| jsmin |→ Libraries → Javascript | -|-------------------------------+-----------------------------------| -| json-c |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| json-glib |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| json-javascript |→ Libraries → Javascript | -|-------------------------------+-----------------------------------| -| jsoncpp |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| kbd |→ Hardware handling | -|-------------------------------+-----------------------------------| -| kbproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| kernel-module-imx-gpu-viv |→ Hardware handling | -|-------------------------------+-----------------------------------| -| kexec |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| kexec-lite |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| keyutils |→ System tools | -|-------------------------------+-----------------------------------| -| kismet |→ Networking applications | -|-------------------------------+-----------------------------------| -| kmod |→ System tools | -|-------------------------------+-----------------------------------| -| kms++ |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| knock |→ Networking applications | -|-------------------------------+-----------------------------------| -| kodi |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| kodi-addon-xvdr (deprecated) |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-adsp-basic |→ Audio and video applications → | -| |Audio DSP addons | -|-------------------------------+-----------------------------------| -| kodi-adsp-freesurround |→ Audio and video applications → | -| |Audio DSP addons | -|-------------------------------+-----------------------------------| -| kodi-audiodecoder-modplug |→ Audio and video applications → | -| |Audio decoder addons | -|-------------------------------+-----------------------------------| -| kodi-audiodecoder-nosefart |→ Audio and video applications → | -| |Audio decoder addons | -|-------------------------------+-----------------------------------| -| kodi-audiodecoder-opus |→ Audio and video applications → | -| |Audio decoder addons | -|-------------------------------+-----------------------------------| -| kodi-audiodecoder-sidplay |→ Audio and video applications → | -| |Audio decoder addons | -|-------------------------------+-----------------------------------| -| kodi-audiodecoder-snesapu |→ Audio and video applications → | -| |Audio decoder addons | -|-------------------------------+-----------------------------------| -| kodi-audiodecoder-stsound |→ Audio and video applications → | -| |Audio decoder addons | -|-------------------------------+-----------------------------------| -| kodi-audiodecoder-timidity |→ Audio and video applications → | -| |Audio decoder addons | -|-------------------------------+-----------------------------------| -| kodi-audiodecoder-vgmstream |→ Audio and video applications → | -| |Audio decoder addons | -|-------------------------------+-----------------------------------| -| kodi-audioencoder-flac |→ Audio and video applications → | -| |Audio encoder addons | -|-------------------------------+-----------------------------------| -| kodi-audioencoder-lame |→ Audio and video applications → | -| |Audio encoder addons | -|-------------------------------+-----------------------------------| -| kodi-audioencoder-vorbis |→ Audio and video applications → | -| |Audio encoder addons | -|-------------------------------+-----------------------------------| -| kodi-audioencoder-wav |→ Audio and video applications → | -| |Audio encoder addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-argustv |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-dvblink |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-dvbviewer |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-filmon |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-hdhomerun |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-hts |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-iptvsimple |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-mediaportal-tvserver |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-mythtv |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-nextpvr |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-njoy |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-pctv |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-stalker |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-vbox |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-vdr-vnsi |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-vuplus |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-pvr-wmc |→ Audio and video applications → | -| |PVR addons | -|-------------------------------+-----------------------------------| -| kodi-screensaver-asteroids |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-asterwave |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-biogenesis |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-cpblobs |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-crystalmorph |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-greynetic |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-matrixtrails |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-pingpong |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-planestate |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-pyro |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-rsxs |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-screensaver-stars |→ Audio and video applications → | -| |Screensavers | -|-------------------------------+-----------------------------------| -| kodi-visualisation-fishbmc |→ Audio and video applications → | -| |Visualisations | -|-------------------------------+-----------------------------------| -| kodi-visualisation-fountain |→ Audio and video applications → | -| |Visualisations | -|-------------------------------+-----------------------------------| -| kodi-visualisation-goom |→ Audio and video applications → | -| |Visualisations | -|-------------------------------+-----------------------------------| -| kodi-visualisation-shadertoy |→ Audio and video applications → | -| |Visualisations | -|-------------------------------+-----------------------------------| -| kodi-visualisation-spectrum |→ Audio and video applications → | -| |Visualisations | -|-------------------------------+-----------------------------------| -| kodi-visualisation-waveforhue |→ Audio and video applications → | -| |Visualisations | -|-------------------------------+-----------------------------------| -| kodi-visualisation-waveform |→ Audio and video applications → | -| |Visualisations | -|-------------------------------+-----------------------------------| -| kompexsqlite |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| ktap |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| kvmtool |→ System tools | -|-------------------------------+-----------------------------------| -| kyua |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| lame |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| lapack/blas |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| latencytop |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| lbase64 |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| LBreakout2 |→ Games | -|-------------------------------+-----------------------------------| -| lcdapi |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| lcdproc |→ Hardware handling | -|-------------------------------+-----------------------------------| -| lcms2 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| leafnode2 |→ Networking applications | -|-------------------------------+-----------------------------------| -| leafpad |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| less |→ Text editors and viewers | -|-------------------------------+-----------------------------------| -| lesstif |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| leveldb |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| lft |→ Networking applications | -|-------------------------------+-----------------------------------| -| lftp |→ Networking applications | -|-------------------------------+-----------------------------------| -| libaacs |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libaio |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libamcodec |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libao |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libarchive |→ Libraries → Compression and | -| |decompression | -|-------------------------------+-----------------------------------| -| libargtable2 |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libart |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libasplib |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libass |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libassuan |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libatasmart |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libatomic_ops |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libbdplus |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libbluray |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libbroadvoice |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libbsd |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libcap |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libcap-ng |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libcdaudio |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libcddb |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libcdio |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libcec |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libcgi |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libcgicc |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libcgroup |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libcli |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| libcoap |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libcodec2 |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libcofi |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libconfig |→ Libraries → Filesystem | -|-------------------------------+-----------------------------------| -| libconfuse |→ Libraries → Filesystem | -|-------------------------------+-----------------------------------| -| libcroco |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libcrossguid |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libcue |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libcuefile |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libcurl |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libdaemon |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libdcadec |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libdmtx |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libdmx |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libdnet |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libdri2 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libdrm |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libdvbcsa |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libdvbpsi |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libdvbsi |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libdvdcss |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libdvdnav |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libdvdread |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libebml |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libebur128 |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libedit |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| libee |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libenca |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| libepoxy |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| Liberation (Free fonts) |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| libesmtp |→ Mail | -|-------------------------------+-----------------------------------| -| libestr |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| libev |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libevas generic loaders |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libevdev |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libevent |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libexif |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libeXosip2 |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libfastjson |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| libfcgi |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libffi |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libfm |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libfm-extra |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libfontenc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libfreefare |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libfreeglut |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libfreeimage |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libfribidi |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| libFS |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libftdi |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libftdi1 |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libfuse |→ Libraries → Filesystem | -|-------------------------------+-----------------------------------| -| libg7221 |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libgail (deprecated) |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libgcrypt |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libgdiplus |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libgee |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libgeotiff |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libglade |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libglew |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libglfw |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libglib2 |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libglu |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libgpg-error |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libgpgme |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libgsasl |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libgtk2 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libgtk3 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libgudev |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libhdhomerun |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libhid |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libhttpparser |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libical |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libICE |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libiconv |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| libid3tag |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libidn |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libiio |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libilbc |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libimxvpuapi |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libinput |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libiqrf |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libiscsi |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libjson |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| libksba |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libldns |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| liblinear |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libllcp |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| liblo |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| liblockfile |→ Libraries → Filesystem | -|-------------------------------+-----------------------------------| -| liblog4c-localtime |→ Libraries → Logging | -|-------------------------------+-----------------------------------| -| liblogging |→ Libraries → Logging | -|-------------------------------+-----------------------------------| -| libmad |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libmatroska |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libmbim |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libmbus |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libmcrypt |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libmemcached |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libmhash |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libmicrohttpd |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libminiupnpc |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libmms |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libmng |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libmnl |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libmodbus |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libmodplug |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libmpd |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libmpdclient |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libmpeg2 |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libnatpmp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libndp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libneon |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnet |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnetfilter_acct |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnetfilter_conntrack |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnetfilter_cthelper |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnetfilter_cttimeout |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnetfilter_log |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnetfilter_queue |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnfc |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libnfnetlink |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnfs |→ Libraries → Filesystem | -|-------------------------------+-----------------------------------| -| libnftnl |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnice |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnl |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libnspr |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libnss |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| liboauth |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libogg |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libopenh264 |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| liboping |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libosip2 |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libpam-radius-auth |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libpam-tacplus |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libpcap |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libpciaccess |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libpfm4 |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libphidget |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libpjsip |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libplayer |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libplist |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libpng |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libpqxx |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| libpthread-stubs |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libpthsem |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libqmi |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libqrencode |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libraw |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libraw1394 |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libreplaygain |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| librsvg |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| librsync |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| librtas |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| librtlsdr |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| librtmp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libsamplerate |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libseccomp |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libsecret |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libselinux |→ Libraries → Security | -|-------------------------------+-----------------------------------| -| libsemanage |→ Libraries → Security | -|-------------------------------+-----------------------------------| -| libsepol |→ Libraries → Security | -|-------------------------------+-----------------------------------| -| libserial |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libserialport |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libsexy |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| libsha1 |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libshairplay |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libshout |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libsidplay2 |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libsigc++ |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libsigrok |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libsigrokdecode |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libsigsegv |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libsilk |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libSM |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libsndfile |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libsoc |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libsocketcan |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libsodium |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libsoil |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libsoundtouch |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libsoup |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libsoxr |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libsquish |→ Libraries → Compression and | -| |decompression | -|-------------------------------+-----------------------------------| -| libsrtp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libssh |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libssh2 |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libstrophe |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libsvg |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libsvg-cairo |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libsvgtiny |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libsysfs |→ Libraries → Filesystem | -|-------------------------------+-----------------------------------| -| libtasn1 |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libtheora |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libtirpc |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libtomcrypt |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libtommath |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libtool |→ Development tools | -|-------------------------------+-----------------------------------| -| libtorrent |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libtpl |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libubox |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libuci |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libucl |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| libuecc |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| libuio |→ Hardware handling | -|-------------------------------+-----------------------------------| -| libump |→ Hardware handling | -|-------------------------------+-----------------------------------| -| libunistring |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| libunwind |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libupnp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libupnpp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| liburcu |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| liburiparser |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libusb |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libusb-compat |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libusbgx |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libuv |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| libv4l |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libva |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libva-intel-driver |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libvdpau |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libvips |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| libvncserver |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libvorbis |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| libvpx |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libwebsock |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libwebsockets |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| libX11 |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXau |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXaw |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libxcb |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXcomposite |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXcursor |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXdamage |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXdmcp |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXext |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXfixes |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXfont |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXft |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXi |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXinerama |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libxkbcommon |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| libxkbfile |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libxml++ |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| libxml2 |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| libxmlrpc |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| libXmu |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXpm |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXrandr |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXrender |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXres |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXScrnSaver |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libxshmfence |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libxslt |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| libXt |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXtst |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXv |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXvMC |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXxf86dga |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libXxf86vm |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| libyaml |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| libyuv |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| libz160 |→ Hardware handling | -|-------------------------------+-----------------------------------| -| libzip |→ Libraries → Compression and | -| |decompression | -|-------------------------------+-----------------------------------| -| lightning |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| lighttpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| linenoise |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| linknx |→ Networking applications | -|-------------------------------+-----------------------------------| -| links |→ Networking applications | -|-------------------------------+-----------------------------------| -| linphone |→ Networking applications | -|-------------------------------+-----------------------------------| -| linux-backports |→ Hardware handling | -|-------------------------------+-----------------------------------| -| linux-firmware |→ Hardware handling → Firmware | -|-------------------------------+-----------------------------------| -| linux-fusion communication |→ Graphic libraries and | -| layer for DirectFB multi |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| linux-pam |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| linux-zigbee |→ Networking applications | -|-------------------------------+-----------------------------------| -| liquid-dsp |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| lirc-tools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| listres |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| LiTE (toolbox engine) |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| live555 |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| ljlinenoise |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| ljsyscall |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lksctp-tools |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| lldpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| lm-sensors |→ Hardware handling | -|-------------------------------+-----------------------------------| -| lmbench |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| lockdev |→ Libraries → Filesystem | -|-------------------------------+-----------------------------------| -| lockfile programs |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| log4cplus |→ Libraries → Logging | -|-------------------------------+-----------------------------------| -| log4cpp |→ Libraries → Logging | -|-------------------------------+-----------------------------------| -| log4cxx |→ Libraries → Logging | -|-------------------------------+-----------------------------------| -| logrotate |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| logsurfer |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| lpeg |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lpty |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lrandom |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lrzsz |→ Networking applications | -|-------------------------------+-----------------------------------| -| lshw |→ Hardware handling | -|-------------------------------+-----------------------------------| -| lsof |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| lsqlite3 |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lsuio |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ltp-testsuite |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| ltrace |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| LTris |→ Games | -|-------------------------------+-----------------------------------| -| lttng-babeltrace |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| lttng-libust |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| lttng-modules |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| lttng-tools |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| lua |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| lua-cjson |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lua-coat |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lua-coatpersistent |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lua-csnappy |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lua-ev |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lua-iconv |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lua-messagepack |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lua-msgpack-native |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lua-periphery |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lua-testmore |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luabitop |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luacrypto |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luaexpat |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luaexpatutils |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luafilesystem |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luajit |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| luajson |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lualogging |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luaposix |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luasec |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luasocket |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luasql-sqlite3 |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luit |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| lunit |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lutok |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| luv |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| luvi |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lvm2 & device mapper |→ Hardware handling | -|-------------------------------+-----------------------------------| -| lxc |→ System tools | -|-------------------------------+-----------------------------------| -| lz4 |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| lzip |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| lzlib |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| lzo |→ Libraries → Compression and | -| |decompression | -|-------------------------------+-----------------------------------| -| lzop |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| macchanger |→ Networking applications | -|-------------------------------+-----------------------------------| -| madplay |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| make |→ Development tools | -|-------------------------------+-----------------------------------| -| makedepend |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Utilities | -|-------------------------------+-----------------------------------| -| makedevs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| mali-t76x |→ Hardware handling | -|-------------------------------+-----------------------------------| -| matchbox |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| matchbox-common |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| matchbox-desktop |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| matchbox-fakekey |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| matchbox-keyboard |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| matchbox-lib |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| matchbox-panel |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| matchbox-startup-monitor |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| mbedtls |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| mc |→ Text editors and viewers | -|-------------------------------+-----------------------------------| -| mcelog |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| mcookie |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Utilities | -|-------------------------------+-----------------------------------| -| mcrypt |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| mdadm |→ Hardware handling | -|-------------------------------+-----------------------------------| -| mediastreamer |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| memcached |→ Networking applications | -|-------------------------------+-----------------------------------| -| memstat |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| memtest86 |→ Hardware handling | -|-------------------------------+-----------------------------------| -| memtester |→ Hardware handling | -|-------------------------------+-----------------------------------| -| menu-cache |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| mesa3d |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| mesa3d-demos |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| metacity |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| micropython |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| micropython-lib |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| midori |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| mii-diag |→ Networking applications | -|-------------------------------+-----------------------------------| -| Mini-XML |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| minicom |→ Hardware handling | -|-------------------------------+-----------------------------------| -| minidlna |→ Networking applications | -|-------------------------------+-----------------------------------| -| minissdpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| minizip |→ Libraries → Compression and | -| |decompression | -|-------------------------------+-----------------------------------| -| miraclecast |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| mjpegtools |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| mjpg-streamer |→ Networking applications | -|-------------------------------+-----------------------------------| -| mkfontdir |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| mkfontscale |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| mmc-utils |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| moarvm |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -|mobile-broadband-provider-info |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| modemmanager |→ Networking applications | -|-------------------------------+-----------------------------------| -| modplugtools |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| mongodb |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| mongoose |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| mongrel2 |→ Networking applications | -|-------------------------------+-----------------------------------| -| monit |→ System tools | -|-------------------------------+-----------------------------------| -| monkey |→ Networking applications | -|-------------------------------+-----------------------------------| -| mono |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| mosh |→ Networking applications | -|-------------------------------+-----------------------------------| -| mosquitto |→ Networking applications | -|-------------------------------+-----------------------------------| -| mp4v2 |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| mpc |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| mpd |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| mpd-mpc |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| mpdecimal |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| mpfr |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| mpg123 |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| mplayer |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| mpv |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| mraa |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| mrouted |→ Networking applications | -|-------------------------------+-----------------------------------| -| msgpack |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| msmtp |→ Mail | -|-------------------------------+-----------------------------------| -| msr-tools |→ Hardware handling | -|-------------------------------+-----------------------------------| -|mtd, jffs2 and ubi/ubifs tools |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| mtdev |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| mtdev2tuio |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| mtools |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| mtr |→ Networking applications | -|-------------------------------+-----------------------------------| -| multicat |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| Multimedia Module |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| musepack |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| mutt |→ Mail | -|-------------------------------+-----------------------------------| -| MySQL |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| nano |→ Text editors and viewers | -|-------------------------------+-----------------------------------| -| nanocom |→ Hardware handling | -|-------------------------------+-----------------------------------| -| nbd |→ Networking applications | -|-------------------------------+-----------------------------------| -| ncdu |→ System tools | -|-------------------------------+-----------------------------------| -| ncftp |→ Networking applications | -|-------------------------------+-----------------------------------| -| ncmpc |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| ncurses |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| ndisc6 tools |→ Networking applications | -|-------------------------------+-----------------------------------| -| ne10 |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| neard |→ Hardware handling | -|-------------------------------+-----------------------------------| -| neardal |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| net-tools |→ Networking applications | -|-------------------------------+-----------------------------------| -| netatalk |→ Networking applications | -|-------------------------------+-----------------------------------| -| netcat |→ Networking applications | -|-------------------------------+-----------------------------------| -| netcat-openbsd |→ Networking applications | -|-------------------------------+-----------------------------------| -| netperf |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| netplug |→ Networking applications | -|-------------------------------+-----------------------------------| -| netsniff-ng |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| netsnmp |→ Networking applications | -|-------------------------------+-----------------------------------| -| netstat-nat |→ Networking applications | -|-------------------------------+-----------------------------------| -| nettle |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| networkmanager |→ Networking applications | -|-------------------------------+-----------------------------------| -| newt |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| nfacct |→ Networking applications | -|-------------------------------+-----------------------------------| -| nfs-utils |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| nftables |→ Networking applications | -|-------------------------------+-----------------------------------| -| nginx |→ Networking applications | -|-------------------------------+-----------------------------------| -| nginx-naxsi |→ Networking applications → | -| |External nginx modules | -|-------------------------------+-----------------------------------| -| nginx-upload |→ Networking applications → | -| |External nginx modules | -|-------------------------------+-----------------------------------| -| ngircd |→ Networking applications | -|-------------------------------+-----------------------------------| -| ngrep |→ Networking applications | -|-------------------------------+-----------------------------------| -| nload |→ Networking applications | -|-------------------------------+-----------------------------------| -| nmap |→ Networking applications | -|-------------------------------+-----------------------------------| -| nodejs |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| nodm |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| noip |→ Networking applications | -|-------------------------------+-----------------------------------| -| norm |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| nss-mdns |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| nss-pam-ldapd |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| ntfs-3g |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| ntp |→ Networking applications | -|-------------------------------+-----------------------------------| -| numactl |→ System tools | -|-------------------------------+-----------------------------------| -| nut |→ System tools | -|-------------------------------+-----------------------------------| -| nuttcp |→ Networking applications | -|-------------------------------+-----------------------------------| -| nvidia-driver |→ Hardware handling | -|-------------------------------+-----------------------------------| -| nvidia-tegra23 |→ Hardware handling | -|-------------------------------+-----------------------------------| -| nvidia-tegra23 binaries |→ Hardware handling | -|-------------------------------+-----------------------------------| -| nvidia-tegra23 codecs |→ Hardware handling | -|-------------------------------+-----------------------------------| -| nvme |→ Hardware handling | -|-------------------------------+-----------------------------------| -| obsidian-cursors |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| ocf-linux |→ Libraries → Crypto → cryptodev | -| |variant | -|-------------------------------+-----------------------------------| -| oclock |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| ocrad |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| odhcp6c |→ Networking applications | -|-------------------------------+-----------------------------------| -| odhcploc |→ Networking applications | -|-------------------------------+-----------------------------------| -| odroid-mali |→ Hardware handling | -|-------------------------------+-----------------------------------| -| odroid-scripts |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ofono |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ola (open lighting |→ Hardware handling | -| architecture) | | -|-------------------------------+-----------------------------------| -| olsrd |→ Networking applications | -|-------------------------------+-----------------------------------| -| omniorb |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| omxplayer |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| on2-8170-libs |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| on2-8170-modules |→ Hardware handling | -|-------------------------------+-----------------------------------| -| open-plc-utils |→ Networking applications | -|-------------------------------+-----------------------------------| -| open2300 |→ Hardware handling | -|-------------------------------+-----------------------------------| -| openal |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| openblas |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| openbox |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| opencore-amr |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| opencv-2.4 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| opencv3 |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| openipmi |→ Hardware handling | -|-------------------------------+-----------------------------------| -| openjpeg |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| openldap |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| openmpi |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| openntpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| openobex |→ Networking applications | -|-------------------------------+-----------------------------------| -| openocd |→ Hardware handling | -|-------------------------------+-----------------------------------| -| openpgm |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| openpowerlink |→ Hardware handling | -|-------------------------------+-----------------------------------| -| openssh |→ Networking applications | -|-------------------------------+-----------------------------------| -| openssl |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| openswan |→ Networking applications | -|-------------------------------+-----------------------------------| -| OpenTyrian |→ Games | -|-------------------------------+-----------------------------------| -| OpenTyrian data |→ Games | -|-------------------------------+-----------------------------------| -| openvmtools |→ System tools | -|-------------------------------+-----------------------------------| -| openvpn |→ Networking applications | -|-------------------------------+-----------------------------------| -| openzwave |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| opkg |→ Package managers | -|-------------------------------+-----------------------------------| -| oprofile |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| opus |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| opus-tools |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| opusfile |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| orbit |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| orc |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| oRTP |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| owfs |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| owl-linux |→ Hardware handling | -|-------------------------------+-----------------------------------| -| p11-kit |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| p7zip |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| p910nd |→ Networking applications | -|-------------------------------+-----------------------------------| -| pango |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| pangomm |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| parted |→ Hardware handling | -|-------------------------------+-----------------------------------| -| patch |→ Development tools | -|-------------------------------+-----------------------------------| -| pax-utils |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| pciutils |→ Hardware handling | -|-------------------------------+-----------------------------------| -| pcmanfm |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| pcre |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| pcsc-lite |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| pdbg |→ Hardware handling | -|-------------------------------+-----------------------------------| -| perl |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| perl-crypt-openssl-random |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-crypt-openssl-rsa |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-datetime-tiny |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-db-file |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-digest-hmac |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-digest-sha1 |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-encode-detect |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-encode-locale |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-file-listing |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-file-util |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-gd |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-gdgraph |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-gdtextutil |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-html-parser |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-html-tagset |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-http-cookies |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-http-daemon |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-http-date |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-http-message |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-http-negotiate |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-io-html |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-io-socket-ssl |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-json-tiny |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-libwww-perl |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-lwp-mediatypes |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-mail-dkim |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-mailtools |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-mime-base64 |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-mojolicious |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-net-dns |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-net-http |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-net-ssleay |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-netaddr-ip |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-path-tiny |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-time-hires |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-timedate |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-try-tiny |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-uri |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-www-robotrules |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-xml-libxml |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-xml-namespacesupport |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-xml-sax |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| perl-xml-sax-base |→ Interpreter languages and | -| |scripting → Perl libraries/modules | -|-------------------------------+-----------------------------------| -| phidgetwebservice |→ Networking applications | -|-------------------------------+-----------------------------------| -| php |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| php-geoip |→ Interpreter languages and | -| |scripting → External php extensions| -|-------------------------------+-----------------------------------| -| php-gnupg |→ Interpreter languages and | -| |scripting → External php extensions| -|-------------------------------+-----------------------------------| -| php-imagick |→ Interpreter languages and | -| |scripting → External php extensions| -|-------------------------------+-----------------------------------| -| php-memcached |→ Interpreter languages and | -| |scripting → External php extensions| -|-------------------------------+-----------------------------------| -| php-ssh2 |→ Interpreter languages and | -| |scripting → External php extensions| -|-------------------------------+-----------------------------------| -| php-yaml |→ Interpreter languages and | -| |scripting → External php extensions| -|-------------------------------+-----------------------------------| -| php-zmq |→ Interpreter languages and | -| |scripting → External php extensions| -|-------------------------------+-----------------------------------| -| picocom |→ Hardware handling | -|-------------------------------+-----------------------------------| -| pifmrds |→ Hardware handling | -|-------------------------------+-----------------------------------| -| pinentry |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| pixman |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| pkgconf |→ Development tools | -|-------------------------------+-----------------------------------| -| poco |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| polarssl |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| polkit |→ System tools | -|-------------------------------+-----------------------------------| -| poppler |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| popt |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| portaudio |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| portmap |→ Networking applications | -|-------------------------------+-----------------------------------| -| postgresql |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| pound |→ Networking applications | -|-------------------------------+-----------------------------------| -| powerpc-utils |→ System tools | -|-------------------------------+-----------------------------------| -| powertop |→ Hardware handling | -|-------------------------------+-----------------------------------| -| pppd |→ Networking applications | -|-------------------------------+-----------------------------------| -| pps-tools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| pptp-linux |→ Networking applications | -|-------------------------------+-----------------------------------| -| prboom |→ Games | -|-------------------------------+-----------------------------------| -| presentproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| privoxy |→ Networking applications | -|-------------------------------+-----------------------------------| -| procps-ng |→ System tools | -|-------------------------------+-----------------------------------| -| procrank_linux |→ System tools | -|-------------------------------+-----------------------------------| -| proftpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| protobuf |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| protobuf-c |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| proxychains-ng |→ Networking applications | -|-------------------------------+-----------------------------------| -| psmisc |→ System tools | -|-------------------------------+-----------------------------------| -| psplash |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| ptpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| ptpd2 |→ Networking applications | -|-------------------------------+-----------------------------------| -| pulseaudio |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| pulseview |→ Hardware handling | -|-------------------------------+-----------------------------------| -| pure-ftpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| putty |→ Networking applications | -|-------------------------------+-----------------------------------| -| pv |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| pwgen |→ System tools | -|-------------------------------+-----------------------------------| -| python |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| python-alsaaudio |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-argh |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-autobahn |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-backports-abc |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-beautifulsoup4 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-bottle |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-can |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-cbor |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-certifi |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-cffi |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-characteristic |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-cheetah |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-cherrypy |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-click |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-coherence |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-configobj |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-configshell-fb |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-crc16 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-crossbar |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-cryptography |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-cssselect |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-daemon |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-dataproperty |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-dateutil |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-dialog |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-dialog3 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-dicttoxml |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-django |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-docopt |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-dominate |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-dpkt |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-ecdsa |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-engineio |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-enum |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-enum34 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-flask |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-flask-jsonrpc |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-flask-login |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-flup |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-gobject |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-html5lib |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-httplib2 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-humanize |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-id3 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-idna |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-iniparse |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-iowait |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-ipaddr |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-ipaddress |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-ipy |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-ipython |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-itsdangerous |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-jinja2 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-json-schema-validator |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-keyring |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-libconfig |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-lmdb |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-lxml |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-mad |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-mako |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-markdown |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-markupsafe |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-meld3 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-mistune |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-msgpack |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-netaddr |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-netifaces |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-networkmanager |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-nfc |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-numpy |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-paho-mqtt |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pam |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-paramiko |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pathtools |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pathvalidate |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pexpect |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pillow |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-posix-ipc |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-prompt-toolkit |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-protobuf |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-psutil |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-ptyprocess |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyasn |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyasn-modules |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pycli |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pycparser |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pycrypto |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pydal |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyftpdlib |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pygame |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pygments |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyinotify |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pymysql |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pynacl |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyopenssl |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyparsing |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyparted |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pypcap |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyqt |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyratemp |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyro |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyroute2 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pysendfile |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pysmb |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pysnmp |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pysnmp-apps |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pysnmp-mibs |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pysocks |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pytablewriter |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pytrie |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pytz |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyudev |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyusb |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyxb |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyyaml |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-pyzmq |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-requests |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-rpi-gpio |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-rtslib-fb |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-scapy3k |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-sdnotify |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-serial |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-service-identity |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-setproctitle |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-setuptools |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-shutilwhich |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-simplejson |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-singledispatch |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-sip |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-six |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-smbus-cffi |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-socketio |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-spidev |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-thrift |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-tomako |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-tornado |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-treq |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-twisted |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-txaio |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-u-msgpack |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-ubjson |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-ujson |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-urllib3 |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-urwid |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-versiontools |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-watchdog |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-wcwidth |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-web2py |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-webpy |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-werkzeug |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-ws4py |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-wsaccel |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-xlrd |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-xlsxwriter |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-xlutils |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-xlwt |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python-zope-interface |→ Interpreter languages and | -| |scripting → External python modules| -|-------------------------------+-----------------------------------| -| python3 |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| qdecoder |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| QEMU |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| qextserialport |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qhull |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| qjson |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qlibc |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| qpdf |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| qpid-proton |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| Qt |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt-webkit-kiosk |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| Qt5 |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt53d |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5base |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5canvas3d |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5cinex |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5connectivity |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5declarative |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5enginio |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5graphicaleffects |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5imageformats |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5location |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5multimedia |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5quickcontrols |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5quickcontrols2 |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5script |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5sensors |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5serialbus |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5serialport |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5svg |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5tools |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5webchannel |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5webkit |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5websockets |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5x11extras |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qt5xmlpatterns |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| qtuio |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| quagga |→ Networking applications | -|-------------------------------+-----------------------------------| -| quazip |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| quota |→ System tools | -|-------------------------------+-----------------------------------| -| qwt |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| rabbitmq-c |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| racehound |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| radvd |→ Networking applications | -|-------------------------------+-----------------------------------| -| ramspeed |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| ramspeed/smp |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| randrproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| ranger |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| rapidjson |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| rapidxml |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| raptor |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| rdesktop |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| read-edid |→ Hardware handling | -|-------------------------------+-----------------------------------| -| readline |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| recordproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| redis |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| renderproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| resourceproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| rfkill |→ Hardware handling | -|-------------------------------+-----------------------------------| -| rgb |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| rings |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| rng-tools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| roxml |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| rp-pppoe |→ Networking applications | -|-------------------------------+-----------------------------------| -| rpcbind |→ Networking applications | -|-------------------------------+-----------------------------------| -| rpi-firmware |→ Hardware handling → Firmware | -|-------------------------------+-----------------------------------| -| rpi-userland |→ Hardware handling | -|-------------------------------+-----------------------------------| -| rpm |→ Package managers | -|-------------------------------+-----------------------------------| -| rrdtool |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| rs485conf |→ Hardware handling | -|-------------------------------+-----------------------------------| -| rsh-redone |→ Networking applications | -|-------------------------------+-----------------------------------| -| rstart |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| rsync |→ Networking applications | -|-------------------------------+-----------------------------------| -| rsyslog |→ System tools | -|-------------------------------+-----------------------------------| -| rt-tests |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| rtai |→ Real-Time | -|-------------------------------+-----------------------------------| -| rtl8188eu |→ Hardware handling | -|-------------------------------+-----------------------------------| -| rtl8821au |→ Hardware handling | -|-------------------------------+-----------------------------------| -| rtorrent |→ Networking applications | -|-------------------------------+-----------------------------------| -| rtptools |→ Networking applications | -|-------------------------------+-----------------------------------| -| rubix |→ Games | -|-------------------------------+-----------------------------------| -| ruby |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| runc |→ System tools | -|-------------------------------+-----------------------------------| -| samba4 |→ Networking applications | -|-------------------------------+-----------------------------------| -| sane-backends |→ Hardware handling | -|-------------------------------+-----------------------------------| -| sbc |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| sconeserver |→ Networking applications | -|-------------------------------+-----------------------------------| -| screen |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| Script Module |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| scripts |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| scrnsaverproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| scrub |→ System tools | -|-------------------------------+-----------------------------------| -| scrypt |→ System tools | -|-------------------------------+-----------------------------------| -| SDL |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| sdl2 |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| sdl2_gfx |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| sdl2_image |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| sdl2_ttf |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| SDL_gfx |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| SDL_image |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| SDL_mixer |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| SDL_net |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| SDL_sound |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| SDL_TTF |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| sdparm |→ Hardware handling | -|-------------------------------+-----------------------------------| -| sed |→ Development tools | -|-------------------------------+-----------------------------------| -| ser2net |→ Networking applications | -|-------------------------------+-----------------------------------| -| sessreg |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| setools |→ Security | -|-------------------------------+-----------------------------------| -| setserial |→ Hardware handling | -|-------------------------------+-----------------------------------| -| setxkbmap |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| sg3-utils |→ Hardware handling | -|-------------------------------+-----------------------------------| -| shairport-sync |→ Networking applications | -|-------------------------------+-----------------------------------| -| shared-mime-info |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| shareware Doom WAD file |→ Games | -|-------------------------------+-----------------------------------| -| shellinabox |→ Networking applications | -|-------------------------------+-----------------------------------| -| showfont |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| sigrok-cli |→ Hardware handling | -|-------------------------------+-----------------------------------| -| simicsfs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| sispmctl |→ Hardware handling | -|-------------------------------+-----------------------------------| -| sl |→ Games | -|-------------------------------+-----------------------------------| -| slang |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| slirp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| smack |→ System tools | -|-------------------------------+-----------------------------------| -| smartmontools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| smcroute |→ Networking applications | -|-------------------------------+-----------------------------------| -| smproxy |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| smstools3 |→ Hardware handling | -|-------------------------------+-----------------------------------| -| snappy |→ Libraries → Compression and | -| |decompression | -|-------------------------------+-----------------------------------| -| snmp++ |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| snowball-hdmiservice |→ Hardware handling | -|-------------------------------+-----------------------------------| -| snowball-init |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| socat |→ Networking applications | -|-------------------------------+-----------------------------------| -| socketcand |→ Networking applications | -|-------------------------------+-----------------------------------| -| sofia-sip |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| softether |→ Networking applications | -|-------------------------------+-----------------------------------| -| sound-theme-borealis |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| sound-theme-freedesktop |→ Fonts, cursors, icons, sounds and| -| |themes | -|-------------------------------+-----------------------------------| -| sox |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| sp-oops-extract |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| spawn-fcgi |→ Networking applications | -|-------------------------------+-----------------------------------| -| speex |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| sphinxbase |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| spi-tools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| spice protocol |→ Networking applications | -|-------------------------------+-----------------------------------| -| spice server |→ Networking applications | -|-------------------------------+-----------------------------------| -| spidev_test |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| sqlcipher |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| sqlite |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| squashfs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| squeezelite |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| squid |→ Networking applications | -|-------------------------------+-----------------------------------| -| sredird |→ Hardware handling | -|-------------------------------+-----------------------------------| -| sshfs (FUSE) |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| sshpass |→ Networking applications | -|-------------------------------+-----------------------------------| -| sstrip (deprecated) |→ Development tools | -|-------------------------------+-----------------------------------| -| start-stop-daemon |→ System tools | -|-------------------------------+-----------------------------------| -| startup-notification |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| statserial |→ Hardware handling | -|-------------------------------+-----------------------------------| -| stella |→ Games | -|-------------------------------+-----------------------------------| -| stm32flash |→ Hardware handling | -|-------------------------------+-----------------------------------| -| strace |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| stress |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| stress-ng |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| strongswan |→ Networking applications | -|-------------------------------+-----------------------------------| -| stunnel |→ Networking applications | -|-------------------------------+-----------------------------------| -| subversion |→ Development tools | -|-------------------------------+-----------------------------------| -| sudo |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| sunxi nand-part |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| sunxi script.bin board file |→ Hardware handling → Firmware | -|-------------------------------+-----------------------------------| -| sunxi-cedarx |→ Hardware handling | -|-------------------------------+-----------------------------------| -| sunxi-mali |→ Hardware handling | -|-------------------------------+-----------------------------------| -| supertuxkart |→ Games | -|-------------------------------+-----------------------------------| -| supervisor |→ System tools | -|-------------------------------+-----------------------------------| -| SVG Module |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| swupdate |→ System tools | -|-------------------------------+-----------------------------------| -| sylpheed |→ Mail | -|-------------------------------+-----------------------------------| -| synergy |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| sysdig |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| syslog-ng |→ System tools | -|-------------------------------+-----------------------------------| -| syslogd & klogd |→ System tools | -|-------------------------------+-----------------------------------| -| sysprof |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| sysstat |→ Hardware handling | -|-------------------------------+-----------------------------------| -| systemd |→ System tools | -|-------------------------------+-----------------------------------| -| systemd-bootchart |→ System tools | -|-------------------------------+-----------------------------------| -| sysvinit |→ System tools | -|-------------------------------+-----------------------------------| -| szip |→ Libraries → Compression and | -| |decompression | -|-------------------------------+-----------------------------------| -| taglib |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| tar |→ System tools | -|-------------------------------+-----------------------------------| -| targetcli-fb |→ Hardware handling | -|-------------------------------+-----------------------------------| -| taskd |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| tcl |→ Interpreter languages and | -| |scripting | -|-------------------------------+-----------------------------------| -| tclap |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| tcllib |→ Interpreter languages and | -| |scripting → Tcl libraries/modules | -|-------------------------------+-----------------------------------| -| tcpdump |→ Networking applications | -|-------------------------------+-----------------------------------| -| tcping |→ Networking applications | -|-------------------------------+-----------------------------------| -| tcpreplay |→ Networking applications | -|-------------------------------+-----------------------------------| -| tekui |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| terminology |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| tftpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| thrift |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| thttpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| ti-gfx |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ti-sgx-demos |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ti-sgx-km |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ti-sgx-um |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ti-uim |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ti-utils |→ Hardware handling | -|-------------------------------+-----------------------------------| -| tidsp-binaries |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| tiff |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| time |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| tinc |→ Networking applications | -|-------------------------------+-----------------------------------| -| tinyalsa |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| tinycbor |→ Libraries → Other | -|-------------------------------+-----------------------------------| -| tinydtls |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| tinyhttpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| tinymembench |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| tinyxml |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| tinyxml2 |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| tmux |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| tn5250 |→ Networking applications | -|-------------------------------+-----------------------------------| -| tor |→ Networking applications | -|-------------------------------+-----------------------------------| -| torsmo (deprecated) |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| tovid |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| tpm-tools |→ System tools | -|-------------------------------+-----------------------------------| -| trace-cmd |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| transmission |→ Networking applications | -|-------------------------------+-----------------------------------| -| tree |→ Development tools | -|-------------------------------+-----------------------------------| -| tremor (fixed point vorbis |→ Libraries → Audio/Sound | -| decoder) | | -|-------------------------------+-----------------------------------| -| triggerhappy |→ Hardware handling | -|-------------------------------+-----------------------------------| -| trinity |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| trousers |→ Libraries → Crypto | -|-------------------------------+-----------------------------------| -| tslib |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| tstools |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| tunctl |→ Networking applications | -|-------------------------------+-----------------------------------| -| turbolua |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| tvheadend |→ Networking applications | -|-------------------------------+-----------------------------------| -| twm |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| twolame |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| u-boot tools |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ubus |→ Hardware handling | -|-------------------------------+-----------------------------------| -| udisks |→ Hardware handling | -|-------------------------------+-----------------------------------| -| udpcast |→ Networking applications | -|-------------------------------+-----------------------------------| -| uemacs |→ Text editors and viewers | -|-------------------------------+-----------------------------------| -| ulogd |→ Networking applications | -|-------------------------------+-----------------------------------| -| unionfs (FUSE) |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| unixodbc |→ Libraries → Database | -|-------------------------------+-----------------------------------| -| unrar |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| unscd |→ System tools | -|-------------------------------+-----------------------------------| -| unzip |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| upmpdcli |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| urg |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| usb_modeswitch |→ Hardware handling | -|-------------------------------+-----------------------------------| -| usb_modeswitch_data |→ Hardware handling | -|-------------------------------+-----------------------------------| -| usbmount |→ Hardware handling | -|-------------------------------+-----------------------------------| -| usbredir |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| usbutils |→ Hardware handling | -|-------------------------------+-----------------------------------| -| ushare |→ Networking applications | -|-------------------------------+-----------------------------------| -| ussp-push |→ Networking applications | -|-------------------------------+-----------------------------------| -| ustr |→ Libraries → Text and terminal | -| |handling | -|-------------------------------+-----------------------------------| -| util-linux |→ System tools | -|-------------------------------+-----------------------------------| -| util-macros |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| ux500-firmware |→ Hardware handling → Firmware | -|-------------------------------+-----------------------------------| -| v4l2grab |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| valgrind |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| valijson |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| vde2 |→ Networking applications | -|-------------------------------+-----------------------------------| -| videoproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| viewres |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| vim |→ Text editors and viewers | -|-------------------------------+-----------------------------------| -| vlc |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| vnstat |→ Networking applications | -|-------------------------------+-----------------------------------| -| vo-aacenc |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| vorbis-tools |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| vpnc |→ Networking applications | -|-------------------------------+-----------------------------------| -| vsftpd |→ Networking applications | -|-------------------------------+-----------------------------------| -| vtun |→ Networking applications | -|-------------------------------+-----------------------------------| -| w_scan |→ Hardware handling | -|-------------------------------+-----------------------------------| -| wavemon |→ Networking applications | -|-------------------------------+-----------------------------------| -| wavpack |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| wayland |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| wayland-protocols |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| webkit (deprecated) |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| WebKit Module |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| webkitgtk |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| webkitgtk 2.4.x (deprecated) |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| webp |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| webrtc-audio-processing |→ Libraries → Audio/Sound | -|-------------------------------+-----------------------------------| -| weston |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| wf111 |→ Hardware handling | -|-------------------------------+-----------------------------------| -| wget |→ Networking applications | -|-------------------------------+-----------------------------------| -| whetstone |→ Debugging, profiling and | -| |benchmark | -|-------------------------------+-----------------------------------| -| which |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| whois |→ Networking applications | -|-------------------------------+-----------------------------------| -| wilc1000-firmware |→ Hardware handling → Firmware | -|-------------------------------+-----------------------------------| -| windowswmproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| wine |→ Miscellaneous | -|-------------------------------+-----------------------------------| -| wipe |→ Hardware handling | -|-------------------------------+-----------------------------------| -| wireless tools |→ Networking applications | -|-------------------------------+-----------------------------------| -| wireless-regdb |→ Networking applications | -|-------------------------------+-----------------------------------| -| wireshark |→ Networking applications | -|-------------------------------+-----------------------------------| -| wiringpi |→ Libraries → Hardware handling | -|-------------------------------+-----------------------------------| -| wmctrl |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| wpa_supplicant |→ Networking applications | -|-------------------------------+-----------------------------------| -| wpan-tools |→ Networking applications | -|-------------------------------+-----------------------------------| -| wsapi |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| wvdial |→ Networking applications | -|-------------------------------+-----------------------------------| -| wvstreams |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| x11perf |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| x11vnc |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| x264 |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| x265 |→ Libraries → Multimedia | -|-------------------------------+-----------------------------------| -| xauth |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xavante |→ Interpreter languages and | -| |scripting → Lua libraries/modules | -|-------------------------------+-----------------------------------| -| xbacklight |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xbiff |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xbitmaps |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Other data | -|-------------------------------+-----------------------------------| -| xcalc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xcb-proto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xcb-util |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| xcb-util-cursor |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| xcb-util-image |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| xcb-util-keysyms |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| xcb-util-renderutil |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| xcb-util-wm |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| xclipboard |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xclock |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xcmiscproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xcmsdb |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xcompmgr |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xconsole |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xcursor-transparent-theme |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Other data | -|-------------------------------+-----------------------------------| -| xcursorgen |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xdata_xcursor-themes |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Other data | -|-------------------------------+-----------------------------------| -| xdbedizzy |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xditview |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xdm |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xdotool |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| xdpyinfo |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xdriinfo |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xedit |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xen |→ System tools | -|-------------------------------+-----------------------------------| -| Xenomai Userspace |→ Real-Time | -|-------------------------------+-----------------------------------| -| xerces-c++ |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| xev |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xextproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xeyes |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xf86-input-evdev |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-input-joystick |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-input-keyboard |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-input-libinput |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-input-mouse |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-input-synaptics |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-input-tslib |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-input-vmmouse |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-amdgpu |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-ark |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-ast |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-ati |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-cirrus |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-dummy |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-fbdev |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-fbturbo |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-geode |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-glide |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-glint |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-i128 |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-imx |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-imx-viv |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-intel |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-mach64 |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-mga |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-neomagic |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-nouveau |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-nv |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-openchrome |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-qxl |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-r128 |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-savage |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-siliconmotion |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-sis |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-tdfx |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-tga |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-trident |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-v4l |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-vesa |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-vmware |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-voodoo |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86-video-wsfb |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Drivers | -|-------------------------------+-----------------------------------| -| xf86bigfontproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xf86dga |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xf86dgaproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xf86driproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xf86vidmodeproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xfd |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xfindproxy |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xfontsel |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xfs |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xfsinfo |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xfsprogs |→ Filesystem and flash utilities | -|-------------------------------+-----------------------------------| -| xgamma |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xgc |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xhost |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xineramaproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xinetd |→ Networking applications | -|-------------------------------+-----------------------------------| -| xinit |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xinput |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xinput-calibrator |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xkbcomp |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xkbevd |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xkbprint |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xkbutils |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xkeyboard-config |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| xkill |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xl2tp |→ Networking applications | -|-------------------------------+-----------------------------------| -| xload |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xlogo |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xlsatoms |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xlsclients |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xlsfonts |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xmag |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xman |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xmessage |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xmh |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| XML Patterns Module |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| xmlstarlet |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| xmodmap |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xmore |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xorg-server |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Servers | -|-------------------------------+-----------------------------------| -| xorriso |→ Hardware handling | -|-------------------------------+-----------------------------------| -| xpr |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xprop |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xproto |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xproxymanagementprotocol |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |X protocols | -|-------------------------------+-----------------------------------| -| xrandr |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xrdb |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xrefresh |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xscreensaver |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| xset |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xsetmode |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xsetpointer |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xsetroot |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xsm |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xstdcmap |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xtables-addons |→ Networking applications | -|-------------------------------+-----------------------------------| -| xterm |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| xtrans |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Libraries | -|-------------------------------+-----------------------------------| -| xvidtune |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xvinfo |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xvkbd |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| xwd |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xwininfo |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xwud |→ Graphic libraries and | -| |applications (graphic/text) → X11R7| -| |Applications | -|-------------------------------+-----------------------------------| -| xxhash |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| xz-utils |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| yad |→ Graphic libraries and | -| |applications (graphic/text) | -|-------------------------------+-----------------------------------| -| yajl |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| yaml-cpp |→ Libraries → JSON/XML | -|-------------------------------+-----------------------------------| -| yasm |→ Development tools | -|-------------------------------+-----------------------------------| -| yavta |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| ympd |→ Audio and video applications | -|-------------------------------+-----------------------------------| -| zbar |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| zd1211-firmware |→ Hardware handling → Firmware | -|-------------------------------+-----------------------------------| -| zeromq |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| zip |→ Compressors and decompressors | -|-------------------------------+-----------------------------------| -| zlib |→ Libraries → Compression and | -| |decompression | -|-------------------------------+-----------------------------------| -| zlog |→ Libraries → Logging | -|-------------------------------+-----------------------------------| -| zmqpp |→ Libraries → Networking | -|-------------------------------+-----------------------------------| -| znc |→ Networking applications | -|-------------------------------+-----------------------------------| -| zsh |→ Shell and utilities | -|-------------------------------+-----------------------------------| -| zxing-cpp |→ Libraries → Graphics | -|-------------------------------+-----------------------------------| -| zyre |→ Libraries → Networking | -+-------------------------------------------------------------------+ +Before Buildroot 2016.11, it was possible to use only one +br2-external tree at once. With Buildroot 2016.11 came the +possibility to use more than one simultaneously (for details, see +Section 9.2, “Keeping customizations outside of Buildrootâ€). -Chapter 25. List of virtual packages +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. -These are the virtual packages known to Buildroot, with the -corresponding symbols and providers. +This can be done very easily in just a few steps: -+-------------------------------------------------------------------+ -| Virtual |Symbols |Providers | -| packages | | | -|--------------+------------------------------+---------------------| -| cryptodev |BR2_PACKAGE_HAS_CRYPTODEV |cryptodev-linux, | -| | |ocf-linux | -|--------------+------------------------------+---------------------| -| jpeg |BR2_PACKAGE_HAS_JPEG |jpeg, jpeg-turbo | -|--------------+------------------------------+---------------------| -| libegl |BR2_PACKAGE_HAS_LIBEGL |mesa3d (w/ OpenGL | -| | |EGL), | -| | |gpu-amd-bin-mx51 | -| | |(also imx53), | -| | |imx-gpu-viv, | -| | |mali-t76x, | -| | |nvidia-driver (w/ | -| | |X.org drivers), | -| | |nvidia-tegra23 | -| | |binaries, | -| | |odroid-mali, | -| | |rpi-userland, | -| | |sunxi-mali, ti-gfx, | -| | |ti-sgx-um | -|--------------+------------------------------+---------------------| -| libgl |BR2_PACKAGE_HAS_LIBGL |mesa3d (w/ DRI swrast| -| | |driver), mesa3d (w/ | -| | |DRI i915 driver), | -| | |mesa3d (w/ DRI i965 | -| | |driver), mesa3d (w/ | -| | |DRI nouveau driver), | -| | |mesa3d (w/ DRI radeon| -| | |driver), | -| | |xf86-video-imx-viv, | -| | |nvidia-driver (w/ | -| | |X.org drivers) | -|--------------+------------------------------+---------------------| -| libgles |BR2_PACKAGE_HAS_LIBGLES |mesa3d (w/ OpenGL | -| | |ES), gpu-amd-bin-mx51| -| | |(also imx53), | -| | |imx-gpu-viv, | -| | |mali-t76x, | -| | |nvidia-driver (w/ | -| | |X.org drivers), | -| | |nvidia-tegra23 | -| | |binaries, | -| | |odroid-mali, | -| | |rpi-userland, | -| | |sunxi-mali, ti-gfx, | -| | |ti-sgx-um | -|--------------+------------------------------+---------------------| -| libopenmax |BR2_PACKAGE_HAS_LIBOPENMAX |bellagio, | -| | |nvidia-tegra23 | -| | |binaries, | -| | |rpi-userland | -|--------------+------------------------------+---------------------| -| libopenvg |BR2_PACKAGE_HAS_LIBOPENVG |gpu-amd-bin-mx51 | -| | |(also imx53), | -| | |imx-gpu-viv, | -| | |rpi-userland | -|--------------+------------------------------+---------------------| -|luainterpreter|BR2_PACKAGE_HAS_LUAINTERPRETER|lua, luajit | -|--------------+------------------------------+---------------------| -| powervr |BR2_PACKAGE_HAS_POWERVR |ti-gfx, ti-sgx-um | -|--------------+------------------------------+---------------------| -| udev |BR2_PACKAGE_HAS_UDEV |eudev, systemd | -+-------------------------------------------------------------------+ + * 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: -Chapter 26. List of host utilities available in Buildroot + $ echo 'name: NAME_OF_YOUR_TREE' >external.desc -The following packages are all available in the menu Host utilities. + 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_]. -+------------------+ -| Packages | -|------------------| -| host aespipe | -|------------------| -|host android-tools| -|------------------| -| host cbootimage | -|------------------| -| host checkpolicy | -|------------------| -| host cramfs | -|------------------| -| host dfu-util | -|------------------| -| host dos2unix | -|------------------| -| host dosfstools | -|------------------| -| host dtc | -|------------------| -| host e2fsprogs | -|------------------| -| host e2tools | -|------------------| -| host faketime | -|------------------| -| host fwup | -|------------------| -| host genext2fs | -|------------------| -| host genimage | -|------------------| -| host genpart | -|------------------| -| host gptfdisk | -|------------------| -| host | -| imx-usb-loader | -|------------------| -| host jq | -|------------------| -| host jsmin | -|------------------| -|host lpc3250loader| -|------------------| -| host mke2img | -|------------------| -| host mtd, jffs2 | -| and ubi/ubifs | -| tools | -|------------------| -| host mtools | -|------------------| -| host mxsldr | -|------------------| -| host | -|omap-u-boot-utils | -|------------------| -| host openocd | -|------------------| -| host parted | -|------------------| -| host patchelf | -|------------------| -| host pwgen | -|------------------| -| host qemu | -|------------------| -| host sam-ba | -|------------------| -| host squashfs | -|------------------| -| host sunxi-tools | -|------------------| -| host tegrarcm | -|------------------| -|host u-boot tools | -|------------------| -| host util-linux | -|------------------| -| host vboot utils | -|------------------| -| host xorriso | -|------------------| -| host zip | -+------------------+ + * Then, change every occurence of BR2_EXTERNAL in your br2-external + tree with the new variable: -Chapter 27. Deprecated features + $ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g' -The following features are marked as deprecated in Buildroot due to -them being either too old or unmaintained. They will be removed at -some point, so stop using them. Each deprecated symbol in kconfig -depends on a symbol BR2_DEPRECATED_SINCE_xxxx_xx, which provides an -indication of when the feature can be removed: features will not be -removed within the year following deprecation. For example, a symbol -depending on BR2_DEPRECATED_SINCE_2013_05 can be removed from 2014.05 -onwards. +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. -+-------------------------------------------------------------------+ -| Features |Location | -|-------------------+-----------------------------------------------| -| SuperH64 |Target options → Target Architecture | -|-------------------+-----------------------------------------------| -|Linux 3.19.x kernel|Toolchain → Kernel Headers | -| headers | | -|-------------------+-----------------------------------------------| -|Linux 4.0.x kernel |Toolchain → Kernel Headers | -| headers | | -|-------------------+-----------------------------------------------| -|Linux 4.2.x kernel |Toolchain → Kernel Headers | -| headers | | -|-------------------+-----------------------------------------------| -|Linux 4.3.x kernel |Toolchain → Kernel Headers | -| headers | | -|-------------------+-----------------------------------------------| -| gcc 4.7.x |Toolchain → GCC compiler Version | -|-------------------+-----------------------------------------------| -| kodi-addon-xvdr |Target packages → Audio and video applications | -| |→ PVR addons | -|-------------------+-----------------------------------------------| -| sstrip |Target packages → Development tools | -|-------------------+-----------------------------------------------| -| torsmo |Target packages → Graphic libraries and | -| |applications (graphic/text) | -|-------------------+-----------------------------------------------| -| libgail |Target packages → Libraries → Graphics | -|-------------------+-----------------------------------------------| -| webkit |Target packages → Libraries → Graphics | -|-------------------+-----------------------------------------------| -| webkitgtk 2.4.x |Target packages → Libraries → Graphics | -|-------------------+-----------------------------------------------| -| ipkg |Target packages → Package managers | -+-------------------------------------------------------------------+ diff --git a/bsp/buildroot/docs/manual/manual.txt b/bsp/buildroot/docs/manual/manual.txt index 3c531e37..490ed031 100644 --- a/bsp/buildroot/docs/manual/manual.txt +++ b/bsp/buildroot/docs/manual/manual.txt @@ -12,7 +12,7 @@ It is licensed under the GNU General Public License, version 2. Refer to the http://git.buildroot.org/buildroot/tree/COPYING[COPYING] file in the Buildroot sources for the full text of this license. -Copyright (C) 2004-2014 The Buildroot developers +Copyright (C) 2004-2017 The Buildroot developers image::logo.png[] @@ -64,6 +64,8 @@ include::debugging-buildroot.txt[] include::contribute.txt[] +include::developers.txt[] + = Appendix include::appendix.txt[] diff --git a/bsp/buildroot/docs/manual/prerequisite.txt b/bsp/buildroot/docs/manual/prerequisite.txt index 7edad1f6..110fab41 100644 --- a/bsp/buildroot/docs/manual/prerequisite.txt +++ b/bsp/buildroot/docs/manual/prerequisite.txt @@ -35,6 +35,8 @@ between distributions). ** +python+ (version 2.6 or any later) ** +unzip+ ** +rsync+ +** +file+ (must be in +/usr/bin/file+) +** +bc+ * Source fetching tools: ** +wget+ diff --git a/bsp/buildroot/docs/website/download.html b/bsp/buildroot/docs/website/download.html index 6380d9a9..929557f5 100644 --- a/bsp/buildroot/docs/website/download.html +++ b/bsp/buildroot/docs/website/download.html @@ -8,71 +8,71 @@

    Download
    -

    Latest stable release: 2016.08

    +

    Latest stable release: 2017.02

    diff --git a/bsp/buildroot/docs/website/footer.html b/bsp/buildroot/docs/website/footer.html index 16fab36c..279c8b1b 100644 --- a/bsp/buildroot/docs/website/footer.html +++ b/bsp/buildroot/docs/website/footer.html @@ -1,6 +1,5 @@ - - - + + diff --git a/bsp/buildroot/docs/website/header.html b/bsp/buildroot/docs/website/header.html index 3842f327..ef6724f2 100644 --- a/bsp/buildroot/docs/website/header.html +++ b/bsp/buildroot/docs/website/header.html @@ -10,7 +10,7 @@ Buildroot - Making Embedded Linux Easy - + + + maven-assembly-plugin + +diff --git a/src/main/cpp/locationinfo.cpp b/src/main/cpp/locationinfo.cpp +index e76ea29c..1daa3a5f 100644 +--- a/src/main/cpp/locationinfo.cpp ++++ b/src/main/cpp/locationinfo.cpp +@@ -153,8 +153,8 @@ void LocationInfo::write(ObjectOutputStream& os, Pool& p) const { + 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2E, 0x6C, + 0x6F, 0x67, 0x34, 0x6A, 0x2E, 0x73, 0x70, 0x69, + 0x2E, 0x4C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, +- 0x6E, 0x49, 0x6E, 0x66, 0x6F, 0xED, 0x99, 0xBB, +- 0xE1, 0x4A, 0x91, 0xA5, 0x7C, 0x02, 0x00, 0x01, ++ 0x6E, 0x49, 0x6E, 0x66, 0x6F, static_cast(0xED), static_cast(0x99), static_cast(0xBB), ++ static_cast(0xE1), 0x4A, static_cast(0x91), static_cast(0xA5), 0x7C, 0x02, 0x00, 0x01, + 0x4C, 0x00, 0x08, 0x66, 0x75, 0x6C, 0x6C, 0x49, + 0x6E, 0x66, 0x6F, + 0x74, 0x00, 0x12, 0x4C, 0x6A, +diff --git a/src/main/cpp/loggingevent.cpp b/src/main/cpp/loggingevent.cpp +index 1c0d4be7..edbf40b6 100644 +--- a/src/main/cpp/loggingevent.cpp ++++ b/src/main/cpp/loggingevent.cpp +@@ -242,7 +242,7 @@ void LoggingEvent::writeProlog(ObjectOutputStream& os, Pool& p) { + 0x68, 0x65, 0x2E, 0x6C, 0x6F, 0x67, 0x34, 0x6A, + 0x2E, 0x73, 0x70, 0x69, 0x2E, 0x4C, 0x6F, 0x67, + 0x67, 0x69, 0x6E, 0x67, 0x45, 0x76, 0x65, 0x6E, +- 0x74, 0xF3, 0xF2, 0xB9, 0x23, 0x74, 0x0B, 0xB5, ++ 0x74, static_cast(0xF3), static_cast(0xF2), static_cast(0xB9), 0x23, 0x74, 0x0B, static_cast(0xB5), + 0x3F, 0x03, 0x00, 0x0A, 0x5A, 0x00, 0x15, 0x6D, + 0x64, 0x63, 0x43, 0x6F, 0x70, 0x79, 0x4C, 0x6F, + 0x6F, 0x6B, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, +diff --git a/src/main/cpp/ndc.cpp b/src/main/cpp/ndc.cpp +index 4ab612dd..89788c16 100644 +--- a/src/main/cpp/ndc.cpp ++++ b/src/main/cpp/ndc.cpp +@@ -309,7 +309,7 @@ bool NDC::pop(CFStringRef& dst) + Stack& stack = data->getStack(); + if(!stack.empty()) + { +- dst = Transcoder::encode(stack.top().message); ++ dst = Transcoder::encode(getMessage(stack.top())); + stack.pop(); + data->recycle(); + return true; +@@ -326,7 +326,7 @@ bool NDC::peek(CFStringRef& dst) + Stack& stack = data->getStack(); + if(!stack.empty()) + { +- dst = Transcoder::encode(stack.top().message); ++ dst = Transcoder::encode(getMessage(stack.top())); + return true; + } + data->recycle(); +diff --git a/src/main/cpp/objectoutputstream.cpp b/src/main/cpp/objectoutputstream.cpp +index 7cd696b8..9567a856 100644 +--- a/src/main/cpp/objectoutputstream.cpp ++++ b/src/main/cpp/objectoutputstream.cpp +@@ -36,7 +36,7 @@ ObjectOutputStream::ObjectOutputStream(OutputStreamPtr outputStream, Pool& p) + objectHandle(0x7E0000), + classDescriptions(new ClassDescriptionMap()) + { +- char start[] = { 0xAC, 0xED, 0x00, 0x05 }; ++ char start[] = { static_cast(0xAC), static_cast(0xED), 0x00, 0x05 }; + ByteBuffer buf(start, sizeof(start)); + os->write(buf, p); + } +@@ -85,7 +85,7 @@ void ObjectOutputStream::writeObject(const MDC::Map& val, Pool& p) { + 0x72, 0x00, 0x13, 0x6A, 0x61, 0x76, 0x61, + 0x2E, 0x75, 0x74, 0x69, 0x6C, 0x2E, 0x48, 0x61, + 0x73, 0x68, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x13, +- 0xBB, 0x0F, 0x25, 0x21, 0x4A, 0xE4, 0xB8, 0x03, ++ static_cast(0xBB), 0x0F, 0x25, 0x21, 0x4A, static_cast(0xE4), static_cast(0xB8), 0x03, + 0x00, 0x02, 0x46, 0x00, 0x0A, 0x6C, 0x6F, 0x61, + 0x64, 0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x49, + 0x00, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, +diff --git a/src/main/cpp/transcoder.cpp b/src/main/cpp/transcoder.cpp +index d572ffce..32bed844 100644 +--- a/src/main/cpp/transcoder.cpp ++++ b/src/main/cpp/transcoder.cpp +@@ -356,7 +356,7 @@ static void encodeUTF16(unsigned int sv, String& dst) { + unsigned char u = (unsigned char) (sv >> 16); + unsigned char w = (unsigned char) (u - 1); + unsigned short hs = (0xD800 + ((w & 0xF) << 6) + ((sv & 0xFFFF) >> 10)); +- unsigned short ls = (0xDC00 + (sv && 0x3FF)); ++ unsigned short ls = (0xDC00 + (sv & 0x3FF)); + dst.append(1, hs); + dst.append(1, ls); + } +diff --git a/src/main/include/log4cxx/helpers/object.h b/src/main/include/log4cxx/helpers/object.h +index 92d44c55..b9386c47 100644 +--- a/src/main/include/log4cxx/helpers/object.h ++++ b/src/main/include/log4cxx/helpers/object.h +@@ -61,8 +61,8 @@ static const helpers::Class& getStaticClass();\ + static const log4cxx::helpers::ClassRegistration& registerClass(); + + #define IMPLEMENT_LOG4CXX_OBJECT(object)\ +-const log4cxx::helpers::Class& object::getClass() const { return getStaticClass(); }\ +-const log4cxx::helpers::Class& object::getStaticClass() { \ ++const ::log4cxx::helpers::Class& object::getClass() const { return getStaticClass(); }\ ++const ::log4cxx::helpers::Class& object::getStaticClass() { \ + static Clazz##object theClass; \ + return theClass; \ + } \ +@@ -71,7 +71,7 @@ const log4cxx::helpers::ClassRegistration& object::registerClass() { \ + return classReg; \ + }\ + namespace log4cxx { namespace classes { \ +-const log4cxx::helpers::ClassRegistration& object##Registration = object::registerClass(); \ ++const ::log4cxx::helpers::ClassRegistration& object##Registration = object::registerClass(); \ + } } + + +diff --git a/src/main/include/log4cxx/helpers/simpledateformat.h b/src/main/include/log4cxx/helpers/simpledateformat.h +index 9c27f685..76fb784c 100644 +--- a/src/main/include/log4cxx/helpers/simpledateformat.h ++++ b/src/main/include/log4cxx/helpers/simpledateformat.h +@@ -29,7 +29,9 @@ + #include + #include + +-namespace std { class locale; } ++#include ++ ++using std::locale; + + namespace log4cxx + { +diff --git a/src/main/include/log4cxx/logstring.h b/src/main/include/log4cxx/logstring.h +index 3bbcdf2d..19e8aec7 100644 +--- a/src/main/include/log4cxx/logstring.h ++++ b/src/main/include/log4cxx/logstring.h +@@ -27,7 +27,7 @@ + #include + #include + +-#if LOG4CXX_LOGCHAR_IS_WCHAR && LOG4CXX_LOGCHAR_IS_UTF8 && LOG4CXX_LOGCHAR_IS_UNICHAR ++#if (LOG4CXX_LOGCHAR_IS_WCHAR + LOG4CXX_LOGCHAR_IS_UTF8 + LOG4CXX_LOGCHAR_IS_UNICHAR)>1 + #error only one of LOG4CXX_LOGCHAR_IS_WCHAR, LOG4CXX_LOGCHAR_IS_UTF8 or LOG4CXX_LOGCHAR_IS_UNICHAR may be true + #endif + +-- +2.11.0 + diff --git a/bsp/buildroot/package/log4cxx/0005-domtestcase.cpp-fix-narrowing-conversion-compile-err.patch b/bsp/buildroot/package/log4cxx/0005-domtestcase.cpp-fix-narrowing-conversion-compile-err.patch new file mode 100644 index 00000000..b3f43bfd --- /dev/null +++ b/bsp/buildroot/package/log4cxx/0005-domtestcase.cpp-fix-narrowing-conversion-compile-err.patch @@ -0,0 +1,36 @@ +From afc191aec355619d6ebabb2cad660a5a8ad4569b Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Mon, 30 Jan 2017 23:13:43 +0100 +Subject: [PATCH] domtestcase.cpp: fix narrowing conversion compile error with + gcc 6+ / signed char + +Signed-off-by: Peter Korsgaard +--- + src/test/cpp/xml/domtestcase.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/test/cpp/xml/domtestcase.cpp b/src/test/cpp/xml/domtestcase.cpp +index ad276d1a..2a1e6e2e 100644 +--- a/src/test/cpp/xml/domtestcase.cpp ++++ b/src/test/cpp/xml/domtestcase.cpp +@@ -190,7 +190,7 @@ public: + DOMConfigurator::configure(LOG4CXX_TEST_STR("input/xml/DOMTestCase3.xml")); + LOG4CXX_INFO(logger, "File name is expected to end with a superscript 3") + #if LOG4CXX_LOGCHAR_IS_UTF8 +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xC2, 0xB3, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast(0xC2), static_cast(0xB3), 0 }; + #else + const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xB3, 0 }; + #endif +@@ -209,7 +209,7 @@ public: + DOMConfigurator::configure(LOG4CXX_TEST_STR("input/xml/DOMTestCase4.xml")); + LOG4CXX_INFO(logger, "File name is expected to end with an ideographic 4") + #if LOG4CXX_LOGCHAR_IS_UTF8 +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xE3, 0x86, 0x95, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast(0xE3), static_cast(0x86), static_cast(0x95), 0 }; + #else + const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0x3195, 0 }; + #endif +-- +2.11.0 + diff --git a/bsp/buildroot/package/log4cxx/Config.in b/bsp/buildroot/package/log4cxx/Config.in index 40c7df92..6ec67b62 100644 --- a/bsp/buildroot/package/log4cxx/Config.in +++ b/bsp/buildroot/package/log4cxx/Config.in @@ -11,7 +11,7 @@ config BR2_PACKAGE_LOG4CXX Apache log4cxx is a logging framework for C++ patterned after Apache log4j. - http://apache.linux-mirror.org/logging/log4cxx/0.10.0 + https://logging.apache.org/log4cxx/ comment "log4cxx needs a toolchain w/ C++, threads, dynamic library" depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ diff --git a/bsp/buildroot/package/logrotate/0001-make-autoreconfable.patch b/bsp/buildroot/package/logrotate/0001-make-autoreconfable.patch deleted file mode 100644 index 89759d07..00000000 --- a/bsp/buildroot/package/logrotate/0001-make-autoreconfable.patch +++ /dev/null @@ -1,20 +0,0 @@ -Make the package autoreconfigurable - -Adjust a minor detail in configure.ac in order to make the package -compatible with the autoconf/automake versions we are using in -Buildroot. - -Signed-off-by: Benoît Thébaudeau - -Index: b/configure.ac -=================================================================== ---- a/configure.ac -+++ b/configure.ac -@@ -1,6 +1,6 @@ - AC_INIT([logrotate],[3.8.9]) - --AM_INIT_AUTOMAKE -+AM_INIT_AUTOMAKE([foreign]) - AC_DEFINE(_GNU_SOURCE) - - AM_EXTRA_RECURSIVE_TARGETS([test]) diff --git a/bsp/buildroot/package/logrotate/0002-Use-autoconf-checks-for-strndup-and-asprintf.patch b/bsp/buildroot/package/logrotate/0002-Use-autoconf-checks-for-strndup-and-asprintf.patch deleted file mode 100644 index ed320982..00000000 --- a/bsp/buildroot/package/logrotate/0002-Use-autoconf-checks-for-strndup-and-asprintf.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 24fd7f81f9966071717f6a0effe8190310f1b393 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Fri, 19 Aug 2016 22:39:17 +0200 -Subject: [PATCH] Use autoconf checks for strndup and asprintf - -The current code in config.c can provide its own implementation of -asprintf() and strndup() if not provided by the system. However, in -order to decide if they should be provided, the check done is: - - #if !defined(name_of_function) - -which only works if the function is actually defined as a macro, which -is not necessarily the case. - -Therefore, we replace this logic by a proper AC_CHECK_FUNCS() check in -the configure script. - -Signed-off-by: Thomas Petazzoni ---- - config.c | 4 ++-- - configure.ac | 2 ++ - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/config.c b/config.c -index dbbf563..2209afd 100644 ---- a/config.c -+++ b/config.c -@@ -45,7 +45,7 @@ - #include "asprintf.c" - #endif - --#if !defined(asprintf) && !defined(_FORTIFY_SOURCE) -+#if !defined(HAVE_ASPRINTF) && !defined(_FORTIFY_SOURCE) - #include - - int asprintf(char **string_ptr, const char *format, ...) -@@ -78,7 +78,7 @@ int asprintf(char **string_ptr, const char *format, ...) - - #endif - --#if !defined(strndup) -+#if !defined(HAVE_STRNDUP) - char *strndup(const char *s, size_t n) - { - size_t nAvail; -diff --git a/configure.ac b/configure.ac -index e655b85..73b98da 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -13,6 +13,8 @@ AC_STRUCT_ST_BLOCKS - AC_CHECK_LIB([popt],[poptParseArgvString],, - AC_MSG_ERROR([libpopt required but not found])) - -+AC_CHECK_FUNCS([strndup asprintf]) -+ - AC_ARG_WITH([selinux], - [AS_HELP_STRING([--with-selinux], - [support handling SELinux contexts (yes,no,check) @<:@default=check@:>@])], --- -2.7.4 - diff --git a/bsp/buildroot/package/logrotate/logrotate.hash b/bsp/buildroot/package/logrotate/logrotate.hash index 8dee7156..4985a17a 100644 --- a/bsp/buildroot/package/logrotate/logrotate.hash +++ b/bsp/buildroot/package/logrotate/logrotate.hash @@ -1,3 +1,2 @@ # Locally calculated -sha256 2de00c65e23fa9d7909cae6594e550b9abe9a7eb1553669ddeaca92d30f97009 logrotate-3.9.2.tar.gz -sha256 e0d360908ac506e02f08fa1ad70e17d6985045d8640f383fef8f322886d6e1e1 6a36c105587b07ad14fc937f3ee6e2eb402621a2.patch +sha256 62aa0229cfd34c7b6ea6a6736d569983bf4a3dd1f3c9e9c2efe2ffe2a0a55cf2 logrotate-3.11.0.tar.gz diff --git a/bsp/buildroot/package/logrotate/logrotate.mk b/bsp/buildroot/package/logrotate/logrotate.mk index 38f183c3..5fd779e6 100644 --- a/bsp/buildroot/package/logrotate/logrotate.mk +++ b/bsp/buildroot/package/logrotate/logrotate.mk @@ -4,7 +4,7 @@ # ################################################################################ -LOGROTATE_VERSION = 3.9.2 +LOGROTATE_VERSION = 3.11.0 LOGROTATE_SITE = $(call github,logrotate,logrotate,$(LOGROTATE_VERSION)) LOGROTATE_LICENSE = GPLv2+ LOGROTATE_LICENSE_FILES = COPYING @@ -12,8 +12,13 @@ LOGROTATE_DEPENDENCIES = popt host-pkgconf # tarball does not have a generated configure script LOGROTATE_AUTORECONF = YES LOGROTATE_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs popt`" -LOGROTATE_CONF_OPTS = --without-selinux -LOGROTATE_PATCH = https://github.com/logrotate/logrotate/commit/6a36c105587b07ad14fc937f3ee6e2eb402621a2.patch + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LOGROTATE_CONF_OPTS += --with-selinux +LOGROTATE_DEPENDENCIES += libselinux +else +LOGROTATE_CONF_OPTS += --without-selinux +endif ifeq ($(BR2_PACKAGE_ACL),y) LOGROTATE_DEPENDENCIES += acl diff --git a/bsp/buildroot/package/lrzsz/lrzsz.mk b/bsp/buildroot/package/lrzsz/lrzsz.mk index 453ef625..a283dd1a 100644 --- a/bsp/buildroot/package/lrzsz/lrzsz.mk +++ b/bsp/buildroot/package/lrzsz/lrzsz.mk @@ -16,7 +16,7 @@ define LRZSZ_POST_CONFIGURE_HOOKS endef define LRZSZ_BUILD_HOOKS - $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" prefix="$(TARGET_DIR)" -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" prefix="$(TARGET_DIR)" -C $(@D) endef define LRZSZ_INSTALL_TARGET_CMDS diff --git a/bsp/buildroot/package/lshw/lshw.mk b/bsp/buildroot/package/lshw/lshw.mk index 9227584b..32c0bc0d 100644 --- a/bsp/buildroot/package/lshw/lshw.mk +++ b/bsp/buildroot/package/lshw/lshw.mk @@ -16,7 +16,9 @@ endif LSHW_MAKE_OPTS = CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" AR="$(TARGET_AR)" \ RPM_OPT_FLAGS="$(LSHW_CFLAGS)" all -LSHW_MAKE_ENV = LIBS="$(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),-lintl)" +LSHW_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + LIBS="$(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),-lintl)" LSHW_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext) define LSHW_BUILD_CMDS diff --git a/bsp/buildroot/package/lsof/lsof.mk b/bsp/buildroot/package/lsof/lsof.mk index 312d834b..e5cd4bce 100644 --- a/bsp/buildroot/package/lsof/lsof.mk +++ b/bsp/buildroot/package/lsof/lsof.mk @@ -47,7 +47,7 @@ define LSOF_CONFIGURE_CMDS endef define LSOF_BUILD_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) DEBUG="$(TARGET_CFLAGS)" -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) DEBUG="$(TARGET_CFLAGS)" -C $(@D) endef define LSOF_INSTALL_TARGET_CMDS diff --git a/bsp/buildroot/package/lsqlite3/lsqlite3.hash b/bsp/buildroot/package/lsqlite3/lsqlite3.hash index 23273bbf..7cf0358d 100644 --- a/bsp/buildroot/package/lsqlite3/lsqlite3.hash +++ b/bsp/buildroot/package/lsqlite3/lsqlite3.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 b49b5941af92a6e7834a45f76dba1f6ea8f817cda373655f59c9da78416d1dfc lsqlite3-0.9.3-0.src.rock +sha256 e6eb64a7ca3727c3093f3c37341d8ecadf9eac913e468eae413828476b19c225 lsqlite3-0.9.4-2.src.rock diff --git a/bsp/buildroot/package/lsqlite3/lsqlite3.mk b/bsp/buildroot/package/lsqlite3/lsqlite3.mk index db65ae53..6f6445d9 100644 --- a/bsp/buildroot/package/lsqlite3/lsqlite3.mk +++ b/bsp/buildroot/package/lsqlite3/lsqlite3.mk @@ -4,8 +4,8 @@ # ################################################################################ -LSQLITE3_VERSION = 0.9.3-0 -LSQLITE3_SUBDIR = lsqlite3_fsl09w +LSQLITE3_VERSION = 0.9.4-2 +LSQLITE3_SUBDIR = lsqlite3_fsl09x LSQLITE3_DEPENDENCIES = sqlite LSQLITE3_LICENSE = MIT diff --git a/bsp/buildroot/package/ltp-testsuite/0001-fix-uClibc-build.patch b/bsp/buildroot/package/ltp-testsuite/0001-fix-uClibc-build.patch deleted file mode 100644 index 231bc833..00000000 --- a/bsp/buildroot/package/ltp-testsuite/0001-fix-uClibc-build.patch +++ /dev/null @@ -1,51 +0,0 @@ -O_DIRECTORY is only available if _GNU_SOURCE is defined - -https://github.com/linux-test-project/ltp/pull/58 - -Signed-off-by: Waldemar Brodkorb - -diff -Nur ltp-full-20160126.orig/testcases/kernel/syscalls/fanotify/fanotify01.c ltp-full-20160126/testcases/kernel/syscalls/fanotify/fanotify01.c ---- ltp-full-20160126.orig/testcases/kernel/syscalls/fanotify/fanotify01.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/kernel/syscalls/fanotify/fanotify01.c 2016-03-05 00:55:02.977264913 +0100 -@@ -25,6 +25,7 @@ - * DESCRIPTION - * Check that fanotify work for a file - */ -+#define _GNU_SOURCE - #include "config.h" - - #include -diff -Nur ltp-full-20160126.orig/testcases/kernel/syscalls/fanotify/fanotify02.c ltp-full-20160126/testcases/kernel/syscalls/fanotify/fanotify02.c ---- ltp-full-20160126.orig/testcases/kernel/syscalls/fanotify/fanotify02.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/kernel/syscalls/fanotify/fanotify02.c 2016-03-05 00:54:44.600558612 +0100 -@@ -25,6 +25,7 @@ - * DESCRIPTION - * Check that fanotify work for children of a directory - */ -+#define _GNU_SOURCE - #include "config.h" - - #include -diff -Nur ltp-full-20160126.orig/testcases/kernel/syscalls/fanotify/fanotify03.c ltp-full-20160126/testcases/kernel/syscalls/fanotify/fanotify03.c ---- ltp-full-20160126.orig/testcases/kernel/syscalls/fanotify/fanotify03.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/kernel/syscalls/fanotify/fanotify03.c 2016-03-05 00:55:13.917685403 +0100 -@@ -25,6 +25,7 @@ - * DESCRIPTION - * Check that fanotify permission events work - */ -+#define _GNU_SOURCE - #include "config.h" - - #include -diff -Nur ltp-full-20160126.orig/testcases/kernel/syscalls/fanotify/fanotify04.c ltp-full-20160126/testcases/kernel/syscalls/fanotify/fanotify04.c ---- ltp-full-20160126.orig/testcases/kernel/syscalls/fanotify/fanotify04.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/kernel/syscalls/fanotify/fanotify04.c 2016-03-05 00:55:24.530093286 +0100 -@@ -25,6 +25,8 @@ - * DESCRIPTION - * Check various fanotify special flags - */ -+ -+#define _GNU_SOURCE - #include "config.h" - - #include diff --git a/bsp/buildroot/package/ltp-testsuite/0002-rpc-tirpc-disable-tirpc_auth_authdes_seccreate-tests.patch b/bsp/buildroot/package/ltp-testsuite/0001-rpc-tirpc-disable-tirpc_auth_authdes_-create-tests.patch similarity index 78% rename from bsp/buildroot/package/ltp-testsuite/0002-rpc-tirpc-disable-tirpc_auth_authdes_seccreate-tests.patch rename to bsp/buildroot/package/ltp-testsuite/0001-rpc-tirpc-disable-tirpc_auth_authdes_-create-tests.patch index f69b364e..344ba4ae 100644 --- a/bsp/buildroot/package/ltp-testsuite/0002-rpc-tirpc-disable-tirpc_auth_authdes_seccreate-tests.patch +++ b/bsp/buildroot/package/ltp-testsuite/0001-rpc-tirpc-disable-tirpc_auth_authdes_-create-tests.patch @@ -1,4 +1,7 @@ -rpc-tirpc: disable tirpc_auth_authdes_*create tests +From 9bbadb7ece1b068465279e7248b3439d443054a6 Mon Sep 17 00:00:00 2001 +From: Erico Nunes +Date: Fri, 30 Sep 2016 17:43:08 +0200 +Subject: [PATCH] rpc-tirpc: disable tirpc_auth_authdes_*create tests Due to Buildroot patch 0007-Disable-DES-authentification-support.patch on libtirpc, this library is built without method authdes_create. Any code @@ -9,6 +12,8 @@ just disable the problematic tests. Upstream-status: not applicable Signed-off-by: Thomas De Schampheleire +[Erico: Rebase for ltp 20160920] +Signed-off-by: Erico Nunes --- testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/Makefile | 4 ++++ 1 file changed, 4 insertions(+) @@ -27,5 +32,5 @@ index 45bc8a6..c04a088 100644 + include $(top_srcdir)/include/mk/generic_trunk_target.mk -- -1.9.5 +2.7.4 diff --git a/bsp/buildroot/package/ltp-testsuite/0002-uClibc-ng-has-no-profil-support.patch b/bsp/buildroot/package/ltp-testsuite/0002-uClibc-ng-has-no-profil-support.patch new file mode 100644 index 00000000..c1496037 --- /dev/null +++ b/bsp/buildroot/package/ltp-testsuite/0002-uClibc-ng-has-no-profil-support.patch @@ -0,0 +1,39 @@ +From 4ab7dc5fd201318e2a62dbd3ba1680b97034ec65 Mon Sep 17 00:00:00 2001 +From: Erico Nunes +Date: Fri, 30 Sep 2016 17:45:03 +0200 +Subject: [PATCH] uClibc-ng has no profil() support + +Signed-off-by: Waldemar Brodkorb +[Erico: Rebase for ltp 20160920] +Signed-off-by: Erico Nunes +--- + testcases/kernel/syscalls/profil/profil01.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/testcases/kernel/syscalls/profil/profil01.c b/testcases/kernel/syscalls/profil/profil01.c +index 2fc47aa..f8afd57 100644 +--- a/testcases/kernel/syscalls/profil/profil01.c ++++ b/testcases/kernel/syscalls/profil/profil01.c +@@ -37,6 +37,9 @@ + #define PROFIL_BUFLEN (32*1024) + + char *TCID = "profil01"; ++ ++#if !defined(__UCLIBC__) ++ + int TST_TOTAL = 1; + + static volatile sig_atomic_t profil_done; +@@ -124,3 +127,9 @@ int main(int ac, char *av[]) + + tst_exit(); + } ++#else /* systems that dont support profil */ ++int main(void) ++{ ++ tst_brkm(TCONF, NULL, "system doesn't have profil support"); ++} ++#endif +-- +2.7.4 + diff --git a/bsp/buildroot/package/ltp-testsuite/0003-disable-profil-on-uClibc.patch b/bsp/buildroot/package/ltp-testsuite/0003-disable-profil-on-uClibc.patch deleted file mode 100644 index d33b6771..00000000 --- a/bsp/buildroot/package/ltp-testsuite/0003-disable-profil-on-uClibc.patch +++ /dev/null @@ -1,27 +0,0 @@ -uClibc-ng has no profil() support - -Signed-off-by: Waldemar Brodkorb - -diff -Nur ltp-full-20160126.orig/testcases/kernel/syscalls/profil/profil01.c ltp-full-20160126/testcases/kernel/syscalls/profil/profil01.c ---- ltp-full-20160126.orig/testcases/kernel/syscalls/profil/profil01.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/kernel/syscalls/profil/profil01.c 2016-03-05 01:00:07.328962536 +0100 -@@ -37,6 +37,9 @@ - #define PROFIL_BUFLEN (32*1024) - - char *TCID = "profil01"; -+ -+#if !defined(__UCLIBC__) -+ - int TST_TOTAL = 1; - - static volatile sig_atomic_t profil_done; -@@ -124,3 +127,9 @@ - - tst_exit(); - } -+#else /* systems that dont support profil */ -+int main(void) -+{ -+ tst_brkm(TCONF, NULL, "system doesn't have profil support"); -+} -+#endif diff --git a/bsp/buildroot/package/ltp-testsuite/0003-uClibc-ng-need-__UCLIBC_SV4_DEPRECATED__-enabled-for.patch b/bsp/buildroot/package/ltp-testsuite/0003-uClibc-ng-need-__UCLIBC_SV4_DEPRECATED__-enabled-for.patch new file mode 100644 index 00000000..14f5888d --- /dev/null +++ b/bsp/buildroot/package/ltp-testsuite/0003-uClibc-ng-need-__UCLIBC_SV4_DEPRECATED__-enabled-for.patch @@ -0,0 +1,84 @@ +From bb966fd9efc3b9bec3ca72b0e72dd760434e0f10 Mon Sep 17 00:00:00 2001 +From: Erico Nunes +Date: Fri, 30 Sep 2016 17:45:16 +0200 +Subject: [PATCH] uClibc-ng need __UCLIBC_SV4_DEPRECATED__ enabled for ustat + +Signed-off-by: Waldemar Brodkorb +[Erico: Rebase for ltp 20160920] +Signed-off-by: Erico Nunes +--- + testcases/kernel/syscalls/ustat/ustat01.c | 12 ++++++++++++ + testcases/kernel/syscalls/ustat/ustat02.c | 10 ++++++++++ + 2 files changed, 22 insertions(+) + +diff --git a/testcases/kernel/syscalls/ustat/ustat01.c b/testcases/kernel/syscalls/ustat/ustat01.c +index 494647b..35e0bb1 100644 +--- a/testcases/kernel/syscalls/ustat/ustat01.c ++++ b/testcases/kernel/syscalls/ustat/ustat01.c +@@ -21,7 +21,9 @@ + + #include + #include ++#if !defined(__UCLIBC__) || defined(__UCLIBC_SV4_DEPRECATED__) + #include ++#endif + #include + #include + #include "test.h" +@@ -30,6 +32,9 @@ + static void setup(void); + + char *TCID = "ustat01"; ++ ++#if !defined(__UCLIBC__) || defined(__UCLIBC_SV4_DEPRECATED__) ++ + int TST_TOTAL = 1; + + static dev_t dev_num; +@@ -79,3 +84,10 @@ static void setup(void) + + dev_num = buf.st_dev; + } ++#else /* systems that dont support ustat */ ++int main(void) ++{ ++ tst_brkm(TCONF, NULL, "system doesn't have ustat support"); ++} ++#endif ++ +diff --git a/testcases/kernel/syscalls/ustat/ustat02.c b/testcases/kernel/syscalls/ustat/ustat02.c +index edada31..795c605 100644 +--- a/testcases/kernel/syscalls/ustat/ustat02.c ++++ b/testcases/kernel/syscalls/ustat/ustat02.c +@@ -22,7 +22,9 @@ + + #include + #include ++#if !defined(__UCLIBC__) || defined(__UCLIBC_SV4_DEPRECATED__) + #include ++#endif + #include + #include + #include "test.h" +@@ -32,6 +34,8 @@ static void setup(void); + + char *TCID = "ustat02"; + ++#if !defined(__UCLIBC__) || defined(__UCLIBC_SV4_DEPRECATED__) ++ + static dev_t invalid_dev = -1; + static dev_t root_dev; + struct ustat ubuf; +@@ -101,3 +105,9 @@ static void setup(void) + + root_dev = buf.st_dev; + } ++#else /* systems that dont support ustat */ ++int main(void) ++{ ++ tst_brkm(TCONF, NULL, "system doesn't have ustat support"); ++} ++#endif +-- +2.7.4 + diff --git a/bsp/buildroot/package/ltp-testsuite/0004-disable-ustat-on-uClibc.patch b/bsp/buildroot/package/ltp-testsuite/0004-disable-ustat-on-uClibc.patch deleted file mode 100644 index 7a1f0171..00000000 --- a/bsp/buildroot/package/ltp-testsuite/0004-disable-ustat-on-uClibc.patch +++ /dev/null @@ -1,70 +0,0 @@ -uClibc-ng need __UCLIBC_SV4_DEPRECATED__ enabled for ustat - -Signed-off-by: Waldemar Brodkorb - -diff -Nur ltp-full-20160126.orig/testcases/kernel/syscalls/ustat/ustat01.c ltp-full-20160126/testcases/kernel/syscalls/ustat/ustat01.c ---- ltp-full-20160126.orig/testcases/kernel/syscalls/ustat/ustat01.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/kernel/syscalls/ustat/ustat01.c 2016-03-05 01:15:39.492789841 +0100 -@@ -20,7 +20,9 @@ - */ - - #include -+#if !defined(__UCLIBC__) || defined(__UCLIBC_SV4_DEPRECATED__) - #include -+#endif - #include - #include - #include -@@ -30,6 +32,9 @@ - static void setup(void); - - char *TCID = "ustat01"; -+ -+#if !defined(__UCLIBC__) || defined(__UCLIBC_SV4_DEPRECATED__) -+ - int TST_TOTAL = 1; - - static dev_t dev_num; -@@ -79,3 +84,10 @@ - - dev_num = buf.st_dev; - } -+#else /* systems that dont support ustat */ -+int main(void) -+{ -+ tst_brkm(TCONF, NULL, "system doesn't have ustat support"); -+} -+#endif -+ -diff -Nur ltp-full-20160126.orig/testcases/kernel/syscalls/ustat/ustat02.c ltp-full-20160126/testcases/kernel/syscalls/ustat/ustat02.c ---- ltp-full-20160126.orig/testcases/kernel/syscalls/ustat/ustat02.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/kernel/syscalls/ustat/ustat02.c 2016-03-05 01:15:55.677411889 +0100 -@@ -21,7 +21,9 @@ - */ - - #include -+#if !defined(__UCLIBC__) || defined(__UCLIBC_SV4_DEPRECATED__) - #include -+#endif - #include - #include - #include -@@ -32,6 +34,8 @@ - - char *TCID = "ustat02"; - -+#if !defined(__UCLIBC__) || defined(__UCLIBC_SV4_DEPRECATED__) -+ - static dev_t invalid_dev = -1; - static dev_t root_dev; - struct ustat ubuf; -@@ -101,3 +105,9 @@ - - root_dev = buf.st_dev; - } -+#else /* systems that dont support ustat */ -+int main(void) -+{ -+ tst_brkm(TCONF, NULL, "system doesn't have ustat support"); -+} -+#endif diff --git a/bsp/buildroot/package/ltp-testsuite/0004-rusers.h-is-unused-and-not-available-for-uClibc-ng-l.patch b/bsp/buildroot/package/ltp-testsuite/0004-rusers.h-is-unused-and-not-available-for-uClibc-ng-l.patch new file mode 100644 index 00000000..fc3dce97 --- /dev/null +++ b/bsp/buildroot/package/ltp-testsuite/0004-rusers.h-is-unused-and-not-available-for-uClibc-ng-l.patch @@ -0,0 +1,157 @@ +From 780bec6c2742231ca73d4dee51c727815cf857b3 Mon Sep 17 00:00:00 2001 +From: Erico Nunes +Date: Fri, 30 Sep 2016 17:45:31 +0200 +Subject: [PATCH] rusers.h is unused and not available for uClibc-ng / libtirpc + +Signed-off-by: Waldemar Brodkorb +[Erico: Rebase for ltp 20160920] +Signed-off-by: Erico Nunes +--- + .../tests_pack/rpc_suite/rpc/rpc_auth_auth_destroy/rpc_auth_destroy.c | 1 - + .../rpc_suite/rpc/rpc_auth_authnone_create/rpc_authnone_create.c | 1 - + .../rpc_suite/rpc/rpc_auth_authunix_create/rpc_authunix_create.c | 1 - + .../rpc/rpc_auth_authunix_create_default/rpc_authunix_create_default.c | 1 - + .../rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create.c | 1 - + .../rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_limits.c | 1 - + .../rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_stress.c | 1 - + .../rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate.c | 1 - + .../rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate_limits.c | 1 - + .../rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create.c | 1 - + .../rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create_stress.c | 1 - + 11 files changed, 11 deletions(-) + +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_auth_destroy/rpc_auth_destroy.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_auth_destroy/rpc_auth_destroy.c +index 7f157e1..728c023 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_auth_destroy/rpc_auth_destroy.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_auth_destroy/rpc_auth_destroy.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authnone_create/rpc_authnone_create.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authnone_create/rpc_authnone_create.c +index d9a3111..8d80a5e 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authnone_create/rpc_authnone_create.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authnone_create/rpc_authnone_create.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create/rpc_authunix_create.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create/rpc_authunix_create.c +index cabffc7..a4d1d6f 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create/rpc_authunix_create.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create/rpc_authunix_create.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create_default/rpc_authunix_create_default.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create_default/rpc_authunix_create_default.c +index 4f10466..863aec7 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create_default/rpc_authunix_create_default.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create_default/rpc_authunix_create_default.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create.c +index 290f357..e849468 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_limits.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_limits.c +index 55bac16..8c1800b 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_limits.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_limits.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_stress.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_stress.c +index 09d1bf9..384a00d 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_stress.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_stress.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate.c +index 3e15306..285eb21 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate_limits.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate_limits.c +index a7030a2..1f2690a 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate_limits.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate_limits.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create.c +index 06f4740..faa8ef6 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create_stress.c b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create_stress.c +index ca38aa0..974f5fb 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create_stress.c ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create_stress.c +@@ -30,7 +30,6 @@ + #include + #include + #include +-#include + #include + #include + #include +-- +2.7.4 + diff --git a/bsp/buildroot/package/ltp-testsuite/0005-rpc-fix-uClibc.patch b/bsp/buildroot/package/ltp-testsuite/0005-rpc-fix-uClibc.patch deleted file mode 100644 index 1d9152b0..00000000 --- a/bsp/buildroot/package/ltp-testsuite/0005-rpc-fix-uClibc.patch +++ /dev/null @@ -1,125 +0,0 @@ -rusers.h is unused and not available for uClibc-ng / libtirpc - -Signed-off-by: Waldemar Brodkorb - -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_auth_destroy/rpc_auth_destroy.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_auth_destroy/rpc_auth_destroy.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_auth_destroy/rpc_auth_destroy.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_auth_destroy/rpc_auth_destroy.c 2016-03-05 02:16:56.274105305 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authnone_create/rpc_authnone_create.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authnone_create/rpc_authnone_create.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authnone_create/rpc_authnone_create.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authnone_create/rpc_authnone_create.c 2016-03-05 02:16:32.641196984 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create/rpc_authunix_create.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create/rpc_authunix_create.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create/rpc_authunix_create.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create/rpc_authunix_create.c 2016-03-05 02:21:09.831850681 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create_default/rpc_authunix_create_default.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create_default/rpc_authunix_create_default.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create_default/rpc_authunix_create_default.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_auth_authunix_create_default/rpc_authunix_create_default.c 2016-03-05 02:18:57.370759601 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create.c 2016-03-05 02:23:32.113319210 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_limits.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_limits.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_limits.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_limits.c 2016-03-05 02:23:39.221592413 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_stress.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_stress.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_stress.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clnttcp_create/rpc_clnttcp_create_stress.c 2016-03-05 02:23:48.565951560 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate.c 2016-03-05 02:23:56.706264429 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate_limits.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate_limits.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate_limits.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_bufcreate/rpc_clntudp_bufcreate_limits.c 2016-03-05 02:24:03.818537786 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create.c 2016-03-05 02:24:10.518795308 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include -diff -Nur ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create_stress.c ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create_stress.c ---- ltp-full-20160126.orig/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create_stress.c 2016-01-26 13:35:25.000000000 +0100 -+++ ltp-full-20160126/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/rpc/rpc_createdestroy_clntudp_create/rpc_clntudp_create_stress.c 2016-03-05 02:24:20.095163371 +0100 -@@ -30,7 +30,6 @@ - #include - #include - #include --#include - #include - #include - #include diff --git a/bsp/buildroot/package/ltp-testsuite/Config.in b/bsp/buildroot/package/ltp-testsuite/Config.in index 84759021..274b03e4 100644 --- a/bsp/buildroot/package/ltp-testsuite/Config.in +++ b/bsp/buildroot/package/ltp-testsuite/Config.in @@ -22,7 +22,7 @@ config BR2_PACKAGE_LTP_TESTSUITE http://linux-test-project.github.io -comment "ltp-testsuite needs a non-musl toolchain w/ threads" +comment "ltp-testsuite needs a glibc or uClibc toolchain w/ threads" depends on !BR2_nios2 depends on BR2_USE_MMU depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL diff --git a/bsp/buildroot/package/ltp-testsuite/ltp-testsuite.hash b/bsp/buildroot/package/ltp-testsuite/ltp-testsuite.hash index f3c1be5d..b8311e09 100644 --- a/bsp/buildroot/package/ltp-testsuite/ltp-testsuite.hash +++ b/bsp/buildroot/package/ltp-testsuite/ltp-testsuite.hash @@ -1,4 +1,2 @@ -# From: https://github.com/linux-test-project/ltp/releases/download/20160126/ltp-full-20160126.tar.xz.md5 -md5 fc3b7411cdf17b2608e26c05d36fc26a ltp-full-20160126.tar.xz -# From: https://github.com/linux-test-project/ltp/releases/download/20160126/ltp-full-20160126.tar.xz.sha1 -sha1 a39c9b05edb942cde23a1f7fa08289a5e427fa04 ltp-full-20160126.tar.xz +# From: https://github.com/linux-test-project/ltp/releases/download/20170116/ltp-full-20170116.tar.xz.sha1 +sha1 b42047fe0d30db9b2c760bd1ab901ecb133835fc ltp-full-20170116.tar.xz diff --git a/bsp/buildroot/package/ltp-testsuite/ltp-testsuite.mk b/bsp/buildroot/package/ltp-testsuite/ltp-testsuite.mk index cf48072f..9d82087f 100644 --- a/bsp/buildroot/package/ltp-testsuite/ltp-testsuite.mk +++ b/bsp/buildroot/package/ltp-testsuite/ltp-testsuite.mk @@ -4,13 +4,13 @@ # ################################################################################ -LTP_TESTSUITE_VERSION = 20160126 +LTP_TESTSUITE_VERSION = 20170116 LTP_TESTSUITE_SOURCE = ltp-full-$(LTP_TESTSUITE_VERSION).tar.xz LTP_TESTSUITE_SITE = https://github.com/linux-test-project/ltp/releases/download/$(LTP_TESTSUITE_VERSION) LTP_TESTSUITE_LICENSE = GPLv2, GPLv2+ LTP_TESTSUITE_LICENSE_FILES = COPYING LTP_TESTSUITE_CONF_OPTS += \ - --with-power-management-testsuite \ + --with-open-posix-testsuite \ --with-realtime-testsuite ifeq ($(BR2_LINUX_KERNEL),y) @@ -21,6 +21,10 @@ else LTP_TESTSUITE_CONF_OPTS += --without-modules endif +# We change the prefix to a custom one, otherwise we get scripts and +# directories directly in /usr, such as /usr/runalltests.sh +LTP_TESTSUITE_CONF_OPTS += --prefix=/usr/lib/ltp-testsuite + # Needs libcap with file attrs which needs attr, so both required ifeq ($(BR2_PACKAGE_LIBCAP)$(BR2_PACKAGE_ATTR),yy) LTP_TESTSUITE_DEPENDENCIES += libcap diff --git a/bsp/buildroot/package/lttng-babeltrace/0001-no-posix-fallocate-in-uclibc.patch b/bsp/buildroot/package/lttng-babeltrace/0001-no-posix-fallocate-in-uclibc.patch deleted file mode 100644 index d77825fa..00000000 --- a/bsp/buildroot/package/lttng-babeltrace/0001-no-posix-fallocate-in-uclibc.patch +++ /dev/null @@ -1,37 +0,0 @@ -Do not call posix_fallocate() on uClibc - -uClibc does not implement posix_fallocate(), and posix_fallocate() is -mostly only an hint to the kernel that we will need such or such -amount of space inside a file. So we just don't call posix_fallocate() -when building against uClibc. - -Signed-off-by: Thomas Petazzoni -[Peter: add #include ---- - formats/ctf/ctf.c | 3 +++ - 1 file changed, 3 insertions(+) - -Index: lttng-babeltrace-0.8/formats/ctf/ctf.c -=================================================================== ---- lttng-babeltrace-0.8.orig/formats/ctf/ctf.c -+++ lttng-babeltrace-0.8/formats/ctf/ctf.c -@@ -32,6 +32,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -384,9 +385,11 @@ - } - pos->content_size = -1U; /* Unknown at this point */ - pos->packet_size = WRITE_PACKET_LEN; -+#ifndef __UCLIBC__ - off = posix_fallocate(pos->fd, pos->mmap_offset, - pos->packet_size / CHAR_BIT); - assert(off >= 0); -+#endif - pos->offset = 0; - } else { - read_next_packet: diff --git a/bsp/buildroot/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch b/bsp/buildroot/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch new file mode 100644 index 00000000..b903d872 --- /dev/null +++ b/bsp/buildroot/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch @@ -0,0 +1,36 @@ +From 27e37d2621317d25e08ba0683bf8540b05b9347d Mon Sep 17 00:00:00 2001 +From: Philippe Proulx +Date: Fri, 28 Oct 2016 02:09:20 -0400 +Subject: [PATCH] tests/lib/Makefile.am: remove unneeded -static flag + +Having those -static flags breaks the build in shared-only builds. + +Signed-off-by: Philippe Proulx +[Philippe: grabbed from this pull request: + https://github.com/efficios/babeltrace/pull/49 +] +--- + tests/lib/Makefile.am | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/tests/lib/Makefile.am b/tests/lib/Makefile.am +index 33ada16..c685e77 100644 +--- a/tests/lib/Makefile.am ++++ b/tests/lib/Makefile.am +@@ -31,13 +31,11 @@ check_SCRIPTS = test_seek_big_trace \ + test_ctf_writer_complete + + if ENABLE_DEBUG_INFO +-test_dwarf_LDFLAGS = -static + test_dwarf_LDADD = $(LIBTAP) \ + $(top_builddir)/lib/libbabeltrace.la \ + $(top_builddir)/lib/libdebug-info.la + test_dwarf_SOURCES = test_dwarf.c + +-test_bin_info_LDFLAGS = -static + test_bin_info_LDADD = $(LIBTAP) \ + $(top_builddir)/lib/libbabeltrace.la \ + $(top_builddir)/lib/libdebug-info.la +-- +2.9.3 + diff --git a/bsp/buildroot/package/lttng-babeltrace/0002-configure-fix-uuid-support-detection-on-static-build.patch b/bsp/buildroot/package/lttng-babeltrace/0002-configure-fix-uuid-support-detection-on-static-build.patch deleted file mode 100644 index 849c0a3d..00000000 --- a/bsp/buildroot/package/lttng-babeltrace/0002-configure-fix-uuid-support-detection-on-static-build.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 670d0961a823df0db28f39a354430f3dc2519418 Mon Sep 17 00:00:00 2001 -From: Samuel Martin -Date: Sat, 28 May 2016 12:53:33 +0200 -Subject: [PATCH] configure: fix uuid support detection on static build - -This change adds uuid support detection using pkg-config, before falling -back on default AC_CHECK_LIB calls. - -Using flags from pkg-config is useful for static build, because they -also include dependency flags; whereas - -AC_CHECK_LIB function achieves its test by trying to link against the -requested library, without taking care of its dependency -requirements/flags. Therefore, in case of static build, it can fail on -the uuid detection like [1], because the uuid's dependency flags -(regarding gettext) are missing. -Instead, using pkg-config to do the check will take care of getting and -setting all required flags. - -This change adds uuid detection using pkg-config helper before falling -back on the standard AC_CHECK_LIB detection for platforms missing -pkg-config. - -This issue [1] has been triggered on Buildroot farms. - -[1] http://autobuild.buildroot.net/results/43b/43b98ddf9eb44152ed9ac4a98d887af14831d8da/build-end.log - -Signed-off-by: Samuel Martin ---- - configure.ac | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/configure.ac b/configure.ac -index 632fe39..b344fa8 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -65,6 +65,15 @@ esac - AM_CONDITIONAL([BABELTRACE_BUILD_WITH_MINGW], [test "x$MINGW32" = "xyes"]) - - # Check for libuuid -+PKG_CHECK_MODULES([UUID], [uuid], -+[ -+ LIBS="${UUID_LIBS} ${LIBS}" -+ CFLAGS="${CFLAGS} ${UUID_CFLAGS}" -+ AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.]) -+ have_libuuid=yes -+], -+[ -+# try detecting libuuid without pkg-config - AC_CHECK_LIB([uuid], [uuid_generate], - [ - AC_DEFINE_UNQUOTED([BABELTRACE_HAVE_LIBUUID], 1, [Has libuuid support.]) -@@ -83,6 +92,7 @@ AC_CHECK_LIB([uuid], [uuid_generate], - AC_MSG_ERROR([Cannot find libuuid uuid_generate nor libc uuid_create. Use [LDFLAGS]=-Ldir to specify their location.]) - fi - ]) -+]) - ] - ) - AM_CONDITIONAL([BABELTRACE_BUILD_WITH_LIBUUID], [test "x$have_libuuid" = "xyes"]) --- -2.8.3 - diff --git a/bsp/buildroot/package/lttng-babeltrace/0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch b/bsp/buildroot/package/lttng-babeltrace/0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch new file mode 100644 index 00000000..b1678141 --- /dev/null +++ b/bsp/buildroot/package/lttng-babeltrace/0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch @@ -0,0 +1,77 @@ +From 697ab0905c59561562dc52cd3b925781e07814f3 Mon Sep 17 00:00:00 2001 +From: Philippe Proulx +Date: Wed, 2 Nov 2016 01:40:12 -0400 +Subject: [PATCH] m4/ax_lib_elfutils.m4: add cache variable + +This patch adds an autoconf cache variable to override the +AC_RUN_IFELSE() test result when cross-compiling. + +Signed-off-by: Philippe Proulx +[Philippe: grabbed from this pull request: + https://github.com/efficios/babeltrace/pull/52 +] +--- + m4/ax_lib_elfutils.m4 | 32 +++++++++++++++++--------------- + 1 file changed, 17 insertions(+), 15 deletions(-) + +diff --git a/m4/ax_lib_elfutils.m4 b/m4/ax_lib_elfutils.m4 +index fcfe06b..f4fcb0d 100644 +--- a/m4/ax_lib_elfutils.m4 ++++ b/m4/ax_lib_elfutils.m4 +@@ -21,7 +21,9 @@ + # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + # + # Check the currently installed version of elfutils by using the +-# _ELFUTILS_PREREQ macro defined in elfutils/version.h. ++# `_ELFUTILS_PREREQ` macro defined in . ++# ++# The cache variable for this test is `bt_cv_lib_elfutils`. + # + # AX_LIB_ELFUTILS(MAJOR_VERSION, MINOR_VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) + # --------------------------------------------------------------------------- +@@ -29,7 +31,6 @@ AC_DEFUN([AX_LIB_ELFUTILS], [ + m4_pushdef([major_version], [$1]) + m4_pushdef([minor_version], [$2]) + +- AC_MSG_CHECKING([for elfutils version >= major_version.minor_version]) + m4_if([$#], 3, [ + m4_pushdef([true_action], [$3]) + ], [ +@@ -43,20 +44,21 @@ AC_DEFUN([AX_LIB_ELFUTILS], [ + AC_MSG_ERROR(elfutils >= major_version.minor_version is required)]) + ]) + +- AC_RUN_IFELSE([ +- AC_LANG_SOURCE([ +- #include +- #include ++ AC_CACHE_CHECK( ++ [for elfutils version >= major_version.minor_version], ++ [bt_cv_lib_elfutils], [ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ #include ++ #include ++ ++ int main(void) { ++ return _ELFUTILS_PREREQ(major_version, minor_version) ? EXIT_SUCCESS : EXIT_FAILURE; ++ } ++ ])], [bt_cv_lib_elfutils=yes], [bt_cv_lib_elfutils=no]) ++ ] ++ ) + +- int main(void) { +- return _ELFUTILS_PREREQ(major_version, minor_version) ? EXIT_SUCCESS : EXIT_FAILURE; +- } +- ]) +- ], +- echo yes +- true_action, +- echo no +- false_action) ++ AS_IF([test "x$bt_cv_lib_elfutils" = "xyes"], [true_action], [false_action]) + + m4_popdef([false_action]) + m4_popdef([true_action]) +-- +2.9.3 + diff --git a/bsp/buildroot/package/lttng-babeltrace/Config.in b/bsp/buildroot/package/lttng-babeltrace/Config.in index d362779e..09fab449 100644 --- a/bsp/buildroot/package/lttng-babeltrace/Config.in +++ b/bsp/buildroot/package/lttng-babeltrace/Config.in @@ -4,7 +4,7 @@ config BR2_PACKAGE_LTTNG_BABELTRACE select BR2_PACKAGE_UTIL_LINUX_LIBUUID select BR2_PACKAGE_LIBGLIB2 select BR2_PACKAGE_POPT - depends on BR2_USE_WCHAR # libglib2, util-linux + depends on BR2_USE_WCHAR # libglib2 depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 depends on BR2_USE_MMU # libglib2 help @@ -14,18 +14,21 @@ config BR2_PACKAGE_LTTNG_BABELTRACE to/from another trace format. Babeltrace is the reference implementation of the Common - Trace Format (see ). Babeltrace + Trace Format (see ). Babeltrace can decode and display LTTng traces, since the latter are written using the CTF format. + To get support for debugging information, enable the + elfutils package. + Having this tool on the target is not mandatory. You can transfer the binary trace output from the target to your - development workstation, and use babeltrace here. Buildroot - automatically builds a host babeltrace in - $(O)/host/usr/bin/babeltrace as a dependency of the - lttng-tools package. + development workstation, and use babeltrace here. - http://www.efficios.com/babeltrace + See the lttng-babeltrace host utility to install Babeltrace + on the host. + + http://diamon.org/babeltrace comment "lttng-babeltrace needs a toolchain w/ wchar, threads" depends on BR2_USE_MMU diff --git a/bsp/buildroot/package/lttng-babeltrace/Config.in.host b/bsp/buildroot/package/lttng-babeltrace/Config.in.host new file mode 100644 index 00000000..71b9c7d9 --- /dev/null +++ b/bsp/buildroot/package/lttng-babeltrace/Config.in.host @@ -0,0 +1,14 @@ +config BR2_PACKAGE_HOST_LTTNG_BABELTRACE + bool "host lttng-babeltrace" + help + The Babeltrace project provides trace read and write + libraries, as well as a trace converter application. Plugins + can be created for any trace format to allow its conversion + to/from another trace format. + + Babeltrace is the reference implementation of the Common + Trace Format (see ). Babeltrace + can decode and display LTTng traces, since the latter are + written using the CTF format. + + http://diamon.org/babeltrace diff --git a/bsp/buildroot/package/lttng-babeltrace/lttng-babeltrace.hash b/bsp/buildroot/package/lttng-babeltrace/lttng-babeltrace.hash index a9f45b21..8f296927 100644 --- a/bsp/buildroot/package/lttng-babeltrace/lttng-babeltrace.hash +++ b/bsp/buildroot/package/lttng-babeltrace/lttng-babeltrace.hash @@ -1,7 +1,3 @@ -# From http://lttng.org/files/babeltrace/babeltrace-1.2.4.tar.bz2.md5 -md5 20a806fa7570e69a91707855a98f3ca6 babeltrace-1.2.4.tar.bz2 -# From http://lttng.org/files/babeltrace/babeltrace-1.2.4.tar.bz2.sha1 -sha1 c72a80e8fd905cb1ae3b0cf88885517faafe0fa1 babeltrace-1.2.4.tar.bz2 -# Locally generated -sha256 666e3a1ad2dc7d5703059963056e7800f0eab59c8eeb6be2efe4f3acc5209eb1 babeltrace-1.2.4.tar.bz2 - +# From http://www.efficios.com/files/babeltrace/babeltrace-1.5.1.tar.bz2.{md5,sha1} +md5 3f7d29ba2821a966d24759a928a15cdf babeltrace-1.5.1.tar.bz2 +sha1 07bffefed8ef68317f26e043ae5f71be58fdb783 babeltrace-1.5.1.tar.bz2 diff --git a/bsp/buildroot/package/lttng-babeltrace/lttng-babeltrace.mk b/bsp/buildroot/package/lttng-babeltrace/lttng-babeltrace.mk index b2e03a99..abb3bba3 100644 --- a/bsp/buildroot/package/lttng-babeltrace/lttng-babeltrace.mk +++ b/bsp/buildroot/package/lttng-babeltrace/lttng-babeltrace.mk @@ -4,18 +4,29 @@ # ################################################################################ -LTTNG_BABELTRACE_SITE = http://lttng.org/files/babeltrace -LTTNG_BABELTRACE_VERSION = 1.2.4 +LTTNG_BABELTRACE_SITE = http://www.efficios.com/files/babeltrace +LTTNG_BABELTRACE_VERSION = 1.5.1 LTTNG_BABELTRACE_SOURCE = babeltrace-$(LTTNG_BABELTRACE_VERSION).tar.bz2 LTTNG_BABELTRACE_LICENSE = MIT, LGPLv2.1 (include/babeltrace/list.h), GPLv2 (test code) LTTNG_BABELTRACE_LICENSE_FILES = mit-license.txt gpl-2.0.txt LICENSE - LTTNG_BABELTRACE_DEPENDENCIES = popt util-linux libglib2 host-pkgconf +# The host-elfutils dependency is optional, but since we don't have +# options for host packages, just build support for it +# unconditionally. HOST_LTTNG_BABELTRACE_DEPENDENCIES = \ - host-popt host-util-linux host-libglib2 host-pkgconf + host-popt host-util-linux host-libglib2 host-pkgconf host-elfutils +HOST_LTTNG_BABELTRACE_CONF_OPTS += --enable-debug-info -# for 0002-configure-fix-uuid-support-detection-on-static-build.patch +# For: 0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch LTTNG_BABELTRACE_AUTORECONF = YES +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +LTTNG_BABELTRACE_DEPENDENCIES += elfutils +LTTNG_BABELTRACE_CONF_OPTS += --enable-debug-info +LTTNG_BABELTRACE_CONF_ENV += bt_cv_lib_elfutils=yes +else +LTTNG_BABELTRACE_CONF_OPTS += --disable-debug-info +endif + $(eval $(autotools-package)) $(eval $(host-autotools-package)) diff --git a/bsp/buildroot/package/lttng-libust/0001-lttng-ust-elf.c-define-NT_GNU_BUILD_ID-if-not-define.patch b/bsp/buildroot/package/lttng-libust/0001-lttng-ust-elf.c-define-NT_GNU_BUILD_ID-if-not-define.patch new file mode 100644 index 00000000..2e0c8b1d --- /dev/null +++ b/bsp/buildroot/package/lttng-libust/0001-lttng-ust-elf.c-define-NT_GNU_BUILD_ID-if-not-define.patch @@ -0,0 +1,34 @@ +From d400314757a8d5d52bd5722d263bfd5886bb6595 Mon Sep 17 00:00:00 2001 +From: Philippe Proulx +Date: Sat, 29 Oct 2016 13:32:57 -0400 +Subject: [PATCH] lttng-ust-elf.c: define NT_GNU_BUILD_ID if not defined + +On uClibc, NT_GNU_BUILD_ID is not defined, so we define it +manually in this case. + +Signed-off-by: Philippe Proulx +[Philippe: grabbed from this pull request: + https://github.com/lttng/lttng-ust/pull/39 +] +--- + liblttng-ust/lttng-ust-elf.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/liblttng-ust/lttng-ust-elf.c b/liblttng-ust/lttng-ust-elf.c +index 5f27920..beaa7f3 100644 +--- a/liblttng-ust/lttng-ust-elf.c ++++ b/liblttng-ust/lttng-ust-elf.c +@@ -29,6 +29,10 @@ + + #define BUF_LEN 4096 + ++#ifndef NT_GNU_BUILD_ID ++# define NT_GNU_BUILD_ID 3 ++#endif ++ + /* + * Retrieve the nth (where n is the `index` argument) phdr (program + * header) from the given elf instance. +-- +2.9.3 + diff --git a/bsp/buildroot/package/lttng-libust/0002-doc-examples-Makefile.am-define-C-and-C-compilers-fo.patch b/bsp/buildroot/package/lttng-libust/0002-doc-examples-Makefile.am-define-C-and-C-compilers-fo.patch new file mode 100644 index 00000000..5172dbbf --- /dev/null +++ b/bsp/buildroot/package/lttng-libust/0002-doc-examples-Makefile.am-define-C-and-C-compilers-fo.patch @@ -0,0 +1,49 @@ +From f54894580da85e33f934c5c9bf5ab32d3fcce18b Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Wed, 30 Nov 2016 16:52:51 +0000 +Subject: [PATCH] doc/examples/Makefile.am: define C and C++ compilers for + CMake + +This prevents build failures when cross-compiling. + +If we don't define the compiler, it will use the one from the host +machine. For instance "/usr/bin/c++", which is incorrect. + +The failure looks like this: + +............................................................. +[ 10%] Building CXX object CMakeFiles/tracepoint-provider.dir/tracepoint-provider.cpp.o +/usr/bin/c++ -Dtracepoint_provider_EXPORTS -I/br/output/build/lttng-libust-2.9.0/doc/examples/cmake-multiple-shared-libraries/. -isystem /br/output/build/lttng-libust-2.9.0/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC -o CMakeFiles/tracepoint-provider.dir/tracepoint-provider.cpp.o -c /br/output/build/lttng-libust-2.9.0/doc/examples/cmake-multiple-shared-libraries/tracepoint-provider.cpp +In file included from /br/output/build/lttng-libust-2.9.0/include/lttng/tracepoint.h:29:0, + from /br/output/build/lttng-libust-2.9.0/doc/examples/cmake-multiple-shared-libraries/tracepoint-provider.h:32, + from /br/output/build/lttng-libust-2.9.0/doc/examples/cmake-multiple-shared-libraries/tracepoint-provider.cpp:26: +/br/output/build/lttng-libust-2.9.0/include/lttng/tracepoint-rcu.h:26:27: fatal error: urcu/compiler.h: No such file or directory + #include + ^ +compilation terminated. +............................................................. + +Pull request URL: https://github.com/lttng/lttng-ust/pull/41 + +Signed-off-by: Vicente Olivert Riera +--- + doc/examples/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am +index 424b844..5bc1f4c 100644 +--- a/doc/examples/Makefile.am ++++ b/doc/examples/Makefile.am +@@ -152,7 +152,9 @@ all-local: + cmake \ + -DCMAKE_INCLUDE_PATH="$(abs_top_srcdir)/include;$(abs_top_builddir)/include" \ + -DCMAKE_LIBRARY_PATH="$(abs_top_builddir)/liblttng-ust/.libs" \ ++ -DCMAKE_C_COMPILER="$(CC)" \ + -DCMAKE_C_FLAGS="$(CFLAGS) $(CPPFLAGS)" \ ++ -DCMAKE_CXX_COMPILER="$(CXX)" \ + -DCMAKE_CXX_FLAGS="$(CXXFLAGS) $(CPPFLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(LDFLAGS)" \ + .. && \ +-- +2.10.1 + diff --git a/bsp/buildroot/package/lttng-libust/Config.in b/bsp/buildroot/package/lttng-libust/Config.in index ce605995..4aba1888 100644 --- a/bsp/buildroot/package/lttng-libust/Config.in +++ b/bsp/buildroot/package/lttng-libust/Config.in @@ -3,7 +3,7 @@ config BR2_PACKAGE_LTTNG_LIBUST select BR2_PACKAGE_LIBURCU select BR2_PACKAGE_UTIL_LINUX select BR2_PACKAGE_UTIL_LINUX_LIBUUID - depends on BR2_USE_WCHAR # util-linux + depends on BR2_USE_WCHAR # uses wchar_t # liburcu only works on some architectures and requires threads support" depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS depends on BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/lttng-libust/lttng-libust.hash b/bsp/buildroot/package/lttng-libust/lttng-libust.hash index 1494acf6..e080361a 100644 --- a/bsp/buildroot/package/lttng-libust/lttng-libust.hash +++ b/bsp/buildroot/package/lttng-libust/lttng-libust.hash @@ -1,6 +1,3 @@ -# http://www.lttng.org/files/lttng-ust/lttng-ust-2.7.1.tar.bz2.sha1 -sha1 597ebecb885debb58c263de57f30b1096d4eefc6 lttng-ust-2.7.1.tar.bz2 - -# Locally computed -sha1 2e79c98e458b2e052930fb81441e6ca8377a2ed7 787364e8bac9a146f9d65c763633c2b75eb76463.patch -sha1 cf77ec415111f77573be7917d9b62d8e49dc6304 30307a67b48641875b122d8f832bbfb454e95d92.patch +# From http://lttng.org/files/lttng-ust/lttng-ust-2.9.0.tar.bz2.{md5,sha1} +md5 77f3378ba37a36801420bce87b702e9c lttng-ust-2.9.0.tar.bz2 +sha1 9937eae64540821b8597cce081e92be76e6b5568 lttng-ust-2.9.0.tar.bz2 diff --git a/bsp/buildroot/package/lttng-libust/lttng-libust.mk b/bsp/buildroot/package/lttng-libust/lttng-libust.mk index 61ffed42..5667abb8 100644 --- a/bsp/buildroot/package/lttng-libust/lttng-libust.mk +++ b/bsp/buildroot/package/lttng-libust/lttng-libust.mk @@ -5,24 +5,25 @@ ################################################################################ LTTNG_LIBUST_SITE = http://lttng.org/files/lttng-ust -LTTNG_LIBUST_VERSION = 2.7.1 +LTTNG_LIBUST_VERSION = 2.9.0 LTTNG_LIBUST_SOURCE = lttng-ust-$(LTTNG_LIBUST_VERSION).tar.bz2 LTTNG_LIBUST_LICENSE = LGPLv2.1, MIT (system headers), GPLv2 (liblttng-ust-ctl/ustctl.c used by lttng-sessiond) LTTNG_LIBUST_LICENSE_FILES = COPYING - -LTTNG_LIBUST_PATCH = \ - https://github.com/lttng/lttng-ust/commit/787364e8bac9a146f9d65c763633c2b75eb76463.patch \ - https://github.com/lttng/lttng-ust/commit/30307a67b48641875b122d8f832bbfb454e95d92.patch - LTTNG_LIBUST_INSTALL_STAGING = YES LTTNG_LIBUST_DEPENDENCIES = liburcu util-linux +LTTNG_LIBUST_CONF_OPTS += --disable-man-pages +# 0002-doc-examples-Makefile.am-define-C-and-C-compilers-fo.patch +LTTNG_LIBUST_AUTORECONF = YES ifeq ($(BR2_PACKAGE_PYTHON),y) LTTNG_LIBUST_DEPENDENCIES += python +LTTNG_LIBUST_CONF_OPTS += --enable-python-agent else ifeq ($(BR2_PACKAGE_PYTHON3),y) LTTNG_LIBUST_DEPENDENCIES += python3 +LTTNG_LIBUST_CONF_OPTS += --enable-python-agent else LTTNG_LIBUST_CONF_ENV = am_cv_pathless_PYTHON="none" +LTTNG_LIBUST_CONF_OPTS += --disable-python-agent endif $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/lttng-modules/lttng-modules.hash b/bsp/buildroot/package/lttng-modules/lttng-modules.hash index 2d502878..d8314f6e 100644 --- a/bsp/buildroot/package/lttng-modules/lttng-modules.hash +++ b/bsp/buildroot/package/lttng-modules/lttng-modules.hash @@ -1,2 +1,3 @@ -# from http://lttng.org/files/lttng-tools/lttng-modules-2.7.1.tar.bz2.sha1 -sha1 38c42ec89b4966c7a4cc04aea75f5841634d8d66 lttng-modules-2.7.1.tar.bz2 +# From http://lttng.org/files/lttng-modules/lttng-modules-2.9.0.tar.bz2.{md5,sha1} +md5 717df375ccb6f32bb297cc2f2e692bbf lttng-modules-2.9.0.tar.bz2 +sha1 819ee1c2a5a821b7fdc1c2fc102ef3079c32aad7 lttng-modules-2.9.0.tar.bz2 diff --git a/bsp/buildroot/package/lttng-modules/lttng-modules.mk b/bsp/buildroot/package/lttng-modules/lttng-modules.mk index 5d0c422b..aa0ac30b 100644 --- a/bsp/buildroot/package/lttng-modules/lttng-modules.mk +++ b/bsp/buildroot/package/lttng-modules/lttng-modules.mk @@ -4,11 +4,12 @@ # ################################################################################ -LTTNG_MODULES_VERSION = 2.7.1 +LTTNG_MODULES_VERSION = 2.9.0 LTTNG_MODULES_SITE = http://lttng.org/files/lttng-modules LTTNG_MODULES_SOURCE = lttng-modules-$(LTTNG_MODULES_VERSION).tar.bz2 LTTNG_MODULES_LICENSE = LGPLv2.1/GPLv2 (kernel modules), MIT (lib/bitfield.h, lib/prio_heap/*) LTTNG_MODULES_LICENSE_FILES = lgpl-2.1.txt gpl-2.0.txt mit-license.txt LICENSE +LTTNG_MODULES_MODULE_MAKE_OPTS = CONFIG_LTTNG=m CONFIG_LTTNG_CLOCK_PLUGIN_TEST=m $(eval $(kernel-module)) $(eval $(generic-package)) diff --git a/bsp/buildroot/package/lttng-tools/0001-Fix-build-failure-when-__GLIBC_PREREQ-is-missing.patch b/bsp/buildroot/package/lttng-tools/0001-Fix-build-failure-when-__GLIBC_PREREQ-is-missing.patch deleted file mode 100644 index 2c01dea6..00000000 --- a/bsp/buildroot/package/lttng-tools/0001-Fix-build-failure-when-__GLIBC_PREREQ-is-missing.patch +++ /dev/null @@ -1,55 +0,0 @@ -From: Baruch Siach -Date: Tue, 8 Mar 2016 14:25:34 +0200 -Subject: [PATCH] Fix: build failure when __GLIBC_PREREQ is missing - -The musl C library does not provide the __GLIBC_PREREQ macro. Instead of -relying on glibc version test, check directly for the availability of -epoll_create1(). - -Signed-off-by: Baruch Siach ---- -Patch status: sent upstream rebased on master branch -(http://lists.lttng.org/pipermail/lttng-dev/2016-March/025593.html) - - configure.ac | 2 +- - src/common/compat/poll.h | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 66d83b60b017..4fc1160c9a08 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -70,7 +70,7 @@ AC_CHECK_FUNCS([ \ - gethostbyname gethostname getpagesize localtime_r memchr memset \ - mkdir munmap putenv realpath rmdir socket strchr strcspn strdup \ - strncasecmp strndup strpbrk strrchr strstr strtol strtoul \ -- strtoull \ -+ strtoull epoll_create1 \ - ]) - - # Babeltrace viewer check -diff --git a/src/common/compat/poll.h b/src/common/compat/poll.h -index 699901848dc1..84f25d5c85aa 100644 ---- a/src/common/compat/poll.h -+++ b/src/common/compat/poll.h -@@ -73,7 +73,7 @@ enum { - LPOLLNVAL = EPOLLHUP, - LPOLLRDHUP = EPOLLRDHUP, - /* Close on exec feature of epoll */ --#if __GLIBC_PREREQ(2, 9) -+#if defined(HAVE_EPOLL_CREATE1) && defined(EPOLL_CLOEXEC) - LTTNG_CLOEXEC = EPOLL_CLOEXEC, - #else - /* -@@ -127,7 +127,7 @@ extern int compat_epoll_create(struct lttng_poll_event *events, - #define lttng_poll_create(events, size, flags) \ - compat_epoll_create(events, size, flags) - --#if __GLIBC_PREREQ(2, 9) -+#if defined(HAVE_EPOLL_CREATE1) && defined(EPOLL_CLOEXEC) - static inline int compat_glibc_epoll_create(int size __attribute__((unused)), - int flags) - { --- -2.7.0 - diff --git a/bsp/buildroot/package/lttng-tools/0002-Fix-add-missing-sys-types.h-header.patch b/bsp/buildroot/package/lttng-tools/0002-Fix-add-missing-sys-types.h-header.patch deleted file mode 100644 index 5ce2da52..00000000 --- a/bsp/buildroot/package/lttng-tools/0002-Fix-add-missing-sys-types.h-header.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: Baruch Siach -Date: Tue, 8 Mar 2016 14:40:49 +0200 -Subject: [PATCH] Fix: add missing sys/types.h header - -The musl C library requires inclusion of sys/types.h for mode_t. - -Signed-off-by: Baruch Siach ---- -Patch status: sent upstream -(http://lists.lttng.org/pipermail/lttng-dev/2016-March/025594.html) - - src/common/runas.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/common/runas.h b/src/common/runas.h -index 2c5565af3646..ac1143eecf84 100644 ---- a/src/common/runas.h -+++ b/src/common/runas.h -@@ -19,6 +19,7 @@ - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -+#include - #include - #include - --- -2.7.0 - diff --git a/bsp/buildroot/package/lttng-tools/Config.in b/bsp/buildroot/package/lttng-tools/Config.in index dd72cc68..187e424b 100644 --- a/bsp/buildroot/package/lttng-tools/Config.in +++ b/bsp/buildroot/package/lttng-tools/Config.in @@ -2,7 +2,6 @@ config BR2_PACKAGE_LTTNG_TOOLS bool "lttng-tools" # liburcu only works on some architectures and requires thread support depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS - depends on BR2_USE_WCHAR # util-linux depends on BR2_TOOLCHAIN_HAS_THREADS depends on !BR2_STATIC_LIBS # uses dlfcn select BR2_PACKAGE_LIBURCU @@ -28,6 +27,6 @@ config BR2_PACKAGE_LTTNG_TOOLS http://lttng.org -comment "lttng-tools needs a toolchain w/ threads, wchar, dynamic library" +comment "lttng-tools needs a toolchain w/ threads, dynamic library" depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS - depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/bsp/buildroot/package/lttng-tools/lttng-tools.hash b/bsp/buildroot/package/lttng-tools/lttng-tools.hash index f05b0e38..4f3d2837 100644 --- a/bsp/buildroot/package/lttng-tools/lttng-tools.hash +++ b/bsp/buildroot/package/lttng-tools/lttng-tools.hash @@ -1,2 +1,3 @@ -# Locally generated -sha256 0c799fb21dfa42475feaa1507ded934608b2e531039b46c40e944a5b81c7b21c lttng-tools-2.7.1.tar.bz2 +# From http://lttng.org/files/lttng-tools/lttng-tools-2.9.3.tar.bz2.{md5,sha1} +md5 19fdcc5e9c307ef66581a2743a08a541 lttng-tools-2.9.3.tar.bz2 +sha1 78fdc9b7fd15f33ac60ea08320d679ce66e18bf7 lttng-tools-2.9.3.tar.bz2 diff --git a/bsp/buildroot/package/lttng-tools/lttng-tools.mk b/bsp/buildroot/package/lttng-tools/lttng-tools.mk index e5b12079..2df2dffa 100644 --- a/bsp/buildroot/package/lttng-tools/lttng-tools.mk +++ b/bsp/buildroot/package/lttng-tools/lttng-tools.mk @@ -4,26 +4,20 @@ # ################################################################################ -LTTNG_TOOLS_VERSION = 2.7.1 +LTTNG_TOOLS_VERSION = 2.9.3 LTTNG_TOOLS_SITE = http://lttng.org/files/lttng-tools LTTNG_TOOLS_SOURCE = lttng-tools-$(LTTNG_TOOLS_VERSION).tar.bz2 LTTNG_TOOLS_LICENSE = GPLv2+, LGPLv2.1+ (include/lttng/*, src/lib/lttng-ctl/*) LTTNG_TOOLS_LICENSE_FILES = gpl-2.0.txt lgpl-2.1.txt LICENSE -LTTNG_TOOLS_CONF_OPTS += --with-xml-prefix=$(STAGING_DIR)/usr -# Patching configure.ac -LTTNG_TOOLS_AUTORECONF = YES +LTTNG_TOOLS_CONF_OPTS += --disable-man-pages -# The host-lttng-babeltrace technically isn't a required build -# dependency. However, having the babeltrace utilities built for the -# host is very useful, since those tools allow to convert the binary -# trace format into an human readable format. -LTTNG_TOOLS_DEPENDENCIES = liburcu libxml2 popt host-lttng-babeltrace util-linux +LTTNG_TOOLS_DEPENDENCIES = liburcu libxml2 popt util-linux ifeq ($(BR2_PACKAGE_LTTNG_LIBUST),y) -LTTNG_TOOLS_CONF_OPTS += --enable-lttng-ust +LTTNG_TOOLS_CONF_OPTS += --with-lttng-ust LTTNG_TOOLS_DEPENDENCIES += lttng-libust else -LTTNG_TOOLS_CONF_OPTS += --disable-lttng-ust +LTTNG_TOOLS_CONF_OPTS += --without-lttng-ust endif $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/lua-csnappy/lua-csnappy.hash b/bsp/buildroot/package/lua-csnappy/lua-csnappy.hash index 2864c3fd..13636349 100644 --- a/bsp/buildroot/package/lua-csnappy/lua-csnappy.hash +++ b/bsp/buildroot/package/lua-csnappy/lua-csnappy.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 3504789c7832f4ed3d7aef47ba9d62940985cde7556284db2233842bfb7d8876 lua-csnappy-0.1.3-1.src.rock +sha256 855331feb8e09a32eea8366ab9bcd4386db6392de82383f08ae5e59adbb7d8a6 lua-csnappy-0.1.4-1.src.rock diff --git a/bsp/buildroot/package/lua-csnappy/lua-csnappy.mk b/bsp/buildroot/package/lua-csnappy/lua-csnappy.mk index 60b92acf..07392591 100644 --- a/bsp/buildroot/package/lua-csnappy/lua-csnappy.mk +++ b/bsp/buildroot/package/lua-csnappy/lua-csnappy.mk @@ -4,7 +4,7 @@ # ################################################################################ -LUA_CSNAPPY_VERSION_UPSTREAM = 0.1.3 +LUA_CSNAPPY_VERSION_UPSTREAM = 0.1.4 LUA_CSNAPPY_VERSION = $(LUA_CSNAPPY_VERSION_UPSTREAM)-1 LUA_CSNAPPY_SUBDIR = lua-csnappy-$(LUA_CSNAPPY_VERSION_UPSTREAM) LUA_CSNAPPY_LICENSE = BSD-3c diff --git a/bsp/buildroot/package/lua-messagepack/lua-messagepack.hash b/bsp/buildroot/package/lua-messagepack/lua-messagepack.hash index b46b686f..7da34e13 100644 --- a/bsp/buildroot/package/lua-messagepack/lua-messagepack.hash +++ b/bsp/buildroot/package/lua-messagepack/lua-messagepack.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 be6827c93383c8d7214c9ac9b7a62ab04186db4c6c2a3a7b36036157784f58b8 lua-messagepack-0.3.4-1.src.rock -sha256 5ab74601696973a66802de1fec614859db0d93d5fa960fac0f70cb04a490e5e5 lua-messagepack-lua53-0.3.4-1.src.rock +sha256 a8aac195dc835101a025385b4c5b596de6602c4ced85e0df35b7f52e6aa6ee5d lua-messagepack-0.4.0-1.src.rock +sha256 85a3eef21e10eb6c3ebf584ce950610fc10457746a4b8dbcbcab4b626f7d3265 lua-messagepack-lua53-0.4.0-1.src.rock diff --git a/bsp/buildroot/package/lua-messagepack/lua-messagepack.mk b/bsp/buildroot/package/lua-messagepack/lua-messagepack.mk index 18a4e4ab..15fc1825 100644 --- a/bsp/buildroot/package/lua-messagepack/lua-messagepack.mk +++ b/bsp/buildroot/package/lua-messagepack/lua-messagepack.mk @@ -4,7 +4,7 @@ # ################################################################################ -LUA_MESSAGEPACK_VERSION_UPSTREAM = 0.3.4 +LUA_MESSAGEPACK_VERSION_UPSTREAM = 0.4.0 ifeq ($(BR2_PACKAGE_LUA_5_3),y) LUA_MESSAGEPACK_VERSION = lua53-$(LUA_MESSAGEPACK_VERSION_UPSTREAM)-1 else diff --git a/bsp/buildroot/package/lua/5.3.3/0012-fix-loop-parser.patch b/bsp/buildroot/package/lua/5.3.3/0012-fix-loop-parser.patch deleted file mode 100644 index 7b321e5d..00000000 --- a/bsp/buildroot/package/lua/5.3.3/0012-fix-loop-parser.patch +++ /dev/null @@ -1,31 +0,0 @@ -Expression list with four or more expressions in a 'for' loop can crash the interpreter. - -Fetch from: https://www.lua.org/bugs.html#5.3.3-1 - -Signed-off-by: Francois Perrad - ---- a/src/lparser.c -+++ b/src/lparser.c -@@ -323,6 +323,8 @@ - luaK_nil(fs, reg, extra); - } - } -+ if (nexps > nvars) -+ ls->fs->freereg -= nexps - nvars; /* remove extra values */ - } - - -@@ -1160,11 +1162,8 @@ - int nexps; - checknext(ls, '='); - nexps = explist(ls, &e); -- if (nexps != nvars) { -+ if (nexps != nvars) - adjust_assign(ls, nvars, nexps, &e); -- if (nexps > nvars) -- ls->fs->freereg -= nexps - nvars; /* remove extra values */ -- } - else { - luaK_setoneret(ls->fs, &e); /* close last expression */ - luaK_storevar(ls->fs, &lh->v, &e); --- diff --git a/bsp/buildroot/package/lua/5.3.3/0001-root-path.patch b/bsp/buildroot/package/lua/5.3.4/0001-root-path.patch similarity index 95% rename from bsp/buildroot/package/lua/5.3.3/0001-root-path.patch rename to bsp/buildroot/package/lua/5.3.4/0001-root-path.patch index d8ef8d07..a44c55c9 100644 --- a/bsp/buildroot/package/lua/5.3.3/0001-root-path.patch +++ b/bsp/buildroot/package/lua/5.3.4/0001-root-path.patch @@ -6,7 +6,7 @@ Index: b/src/luaconf.h =================================================================== --- a/src/luaconf.h +++ b/src/luaconf.h -@@ -188,7 +188,7 @@ +@@ -200,7 +200,7 @@ #else /* }{ */ diff --git a/bsp/buildroot/package/lua/5.3.3/0002-shared-libs-for-lua.patch b/bsp/buildroot/package/lua/5.3.4/0002-shared-libs-for-lua.patch similarity index 100% rename from bsp/buildroot/package/lua/5.3.3/0002-shared-libs-for-lua.patch rename to bsp/buildroot/package/lua/5.3.4/0002-shared-libs-for-lua.patch diff --git a/bsp/buildroot/package/lua/5.3.3/0004-lua-pc.patch b/bsp/buildroot/package/lua/5.3.4/0004-lua-pc.patch similarity index 98% rename from bsp/buildroot/package/lua/5.3.3/0004-lua-pc.patch rename to bsp/buildroot/package/lua/5.3.4/0004-lua-pc.patch index edf7ec33..615a7db8 100644 --- a/bsp/buildroot/package/lua/5.3.3/0004-lua-pc.patch +++ b/bsp/buildroot/package/lua/5.3.4/0004-lua-pc.patch @@ -14,7 +14,7 @@ Index: b/etc/lua.pc +# grep '^V=' ../Makefile +V= 5.3 +# grep '^R=' ../Makefile -+R= 5.3.3 ++R= 5.3.4 + +# grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/' +prefix= /usr diff --git a/bsp/buildroot/package/lua/5.3.3/0011-linenoise.patch b/bsp/buildroot/package/lua/5.3.4/0011-linenoise.patch similarity index 97% rename from bsp/buildroot/package/lua/5.3.3/0011-linenoise.patch rename to bsp/buildroot/package/lua/5.3.4/0011-linenoise.patch index f3ced2b2..574e6c8f 100644 --- a/bsp/buildroot/package/lua/5.3.3/0011-linenoise.patch +++ b/bsp/buildroot/package/lua/5.3.4/0011-linenoise.patch @@ -8,7 +8,7 @@ Index: b/src/lua.c =================================================================== --- a/src/lua.c +++ b/src/lua.c -@@ -83,6 +83,13 @@ +@@ -85,6 +85,13 @@ #define lua_saveline(L,line) ((void)L, add_history(line)) #define lua_freeline(L,b) ((void)L, free(b)) diff --git a/bsp/buildroot/package/lua/lua.hash b/bsp/buildroot/package/lua/lua.hash index 04459e9e..32e7472c 100644 --- a/bsp/buildroot/package/lua/lua.hash +++ b/bsp/buildroot/package/lua/lua.hash @@ -1,6 +1,6 @@ # Hashes from: http://www.lua.org/ftp/ -md5 703f75caa4fdf4a911c1a72e67a27498 lua-5.3.3.tar.gz -sha1 a0341bc3d1415b814cc738b2ec01ae56045d64ef lua-5.3.3.tar.gz +md5 53a9c68bcc0eda58bdc2095ad5cdfc63 lua-5.3.4.tar.gz +sha1 79790cfd40e09ba796b01a571d4d63b52b1cd950 lua-5.3.4.tar.gz md5 913fdb32207046b273fdb17aad70be13 lua-5.2.4.tar.gz sha1 ef15259421197e3d85b7d6e4871b8c26fd82c1cf lua-5.2.4.tar.gz diff --git a/bsp/buildroot/package/lua/lua.mk b/bsp/buildroot/package/lua/lua.mk index be332843..5ef61e03 100644 --- a/bsp/buildroot/package/lua/lua.mk +++ b/bsp/buildroot/package/lua/lua.mk @@ -5,7 +5,7 @@ ################################################################################ ifeq ($(BR2_PACKAGE_LUA_5_3),y) -LUA_VERSION = 5.3.3 +LUA_VERSION = 5.3.4 else ifeq ($(BR2_PACKAGE_LUA_5_2),y) LUA_VERSION = 5.2.4 @@ -66,7 +66,7 @@ HOST_LUA_CFLAGS = -Wall -fPIC -DLUA_USE_DLOPEN -DLUA_USE_POSIX HOST_LUA_MYLIBS = -ldl define LUA_BUILD_CMDS - $(MAKE) \ + $(TARGET_MAKE_ENV) $(MAKE) \ CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" \ CFLAGS="$(TARGET_CFLAGS) $(LUA_CFLAGS)" \ MYLIBS="$(LUA_MYLIBS)" AR="$(TARGET_CROSS)ar rcu" \ @@ -75,7 +75,7 @@ define LUA_BUILD_CMDS endef define HOST_LUA_BUILD_CMDS - $(MAKE) \ + $(HOST_MAKE_ENV) $(MAKE) \ CFLAGS="$(HOST_LUA_CFLAGS)" \ MYLDFLAGS="$(HOST_LDFLAGS)" \ MYLIBS="$(HOST_LUA_MYLIBS)" \ @@ -84,17 +84,17 @@ define HOST_LUA_BUILD_CMDS endef define LUA_INSTALL_STAGING_CMDS - $(MAKE) INSTALL_TOP="$(STAGING_DIR)/usr" -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP="$(STAGING_DIR)/usr" -C $(@D) install $(INSTALL) -m 0644 -D $(@D)/etc/lua.pc \ $(STAGING_DIR)/usr/lib/pkgconfig/lua.pc endef define LUA_INSTALL_TARGET_CMDS - $(MAKE) INSTALL_TOP="$(TARGET_DIR)/usr" -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP="$(TARGET_DIR)/usr" -C $(@D) install endef define HOST_LUA_INSTALL_CMDS - $(MAKE) INSTALL_TOP="$(HOST_DIR)/usr" -C $(@D) install + $(HOST_MAKE_ENV) $(MAKE) INSTALL_TOP="$(HOST_DIR)/usr" -C $(@D) install $(INSTALL) -m 0644 -D $(@D)/etc/lua.pc \ $(HOST_DIR)/usr/lib/pkgconfig/lua.pc endef diff --git a/bsp/buildroot/package/luafilesystem/luafilesystem.mk b/bsp/buildroot/package/luafilesystem/luafilesystem.mk index 5826e1ef..a54ae236 100644 --- a/bsp/buildroot/package/luafilesystem/luafilesystem.mk +++ b/bsp/buildroot/package/luafilesystem/luafilesystem.mk @@ -6,6 +6,7 @@ LUAFILESYSTEM_VERSION = 1.6.3-1 LUAFILESYSTEM_LICENSE = MIT +LUAFILESYSTEM_LICENSE_FILES = luafilesystem/LICENSE LUAFILESYSTEM_SUBDIR = luafilesystem $(eval $(luarocks-package)) diff --git a/bsp/buildroot/package/luajit/Config.in b/bsp/buildroot/package/luajit/Config.in index f9285e8a..380f2472 100644 --- a/bsp/buildroot/package/luajit/Config.in +++ b/bsp/buildroot/package/luajit/Config.in @@ -4,7 +4,7 @@ config BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS (BR2_x86_64 && BR2_HOSTARCH='x86_64') || \ BR2_powerpc || BR2_arm || BR2_armeb || \ ((BR2_mips || BR2_mipsel) && !BR2_MIPS_SOFT_FLOAT && \ - !BR2_mips_32r6 && !BR2_mips_64r6) + !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6) config BR2_PACKAGE_LUAJIT bool "luajit" diff --git a/bsp/buildroot/package/luajit/luajit.mk b/bsp/buildroot/package/luajit/luajit.mk index 81a26603..d3ef3b75 100644 --- a/bsp/buildroot/package/luajit/luajit.mk +++ b/bsp/buildroot/package/luajit/luajit.mk @@ -36,7 +36,7 @@ endif # We unfortunately can't use TARGET_CONFIGURE_OPTS, because the luajit # build system uses non conventional variable names. define LUAJIT_BUILD_CMDS - $(MAKE) PREFIX="/usr" \ + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" \ STATIC_CC="$(TARGET_CC)" \ DYNAMIC_CC="$(TARGET_CC) -fPIC" \ TARGET_LD="$(TARGET_CC)" \ @@ -52,11 +52,11 @@ define LUAJIT_BUILD_CMDS endef define LUAJIT_INSTALL_STAGING_CMDS - $(MAKE) PREFIX="/usr" DESTDIR="$(STAGING_DIR)" LDCONFIG=true -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" DESTDIR="$(STAGING_DIR)" LDCONFIG=true -C $(@D) install endef define LUAJIT_INSTALL_TARGET_CMDS - $(MAKE) PREFIX="/usr" DESTDIR="$(TARGET_DIR)" LDCONFIG=true -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" DESTDIR="$(TARGET_DIR)" LDCONFIG=true -C $(@D) install endef define LUAJIT_INSTALL_SYMLINK @@ -66,13 +66,13 @@ LUAJIT_POST_INSTALL_TARGET_HOOKS += LUAJIT_INSTALL_SYMLINK # host-efl package needs host-luajit to be linked dynamically. define HOST_LUAJIT_BUILD_CMDS - $(MAKE) PREFIX="$(HOST_DIR)/usr" BUILDMODE=dynamic \ + $(HOST_MAKE_ENV) $(MAKE) PREFIX="$(HOST_DIR)/usr" BUILDMODE=dynamic \ TARGET_LDFLAGS="$(HOST_LDFLAGS)" \ -C $(@D) amalg endef define HOST_LUAJIT_INSTALL_CMDS - $(MAKE) PREFIX="$(HOST_DIR)/usr" LDCONFIG=true -C $(@D) install + $(HOST_MAKE_ENV) $(MAKE) PREFIX="$(HOST_DIR)/usr" LDCONFIG=true -C $(@D) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/luarocks/luarocks.hash b/bsp/buildroot/package/luarocks/luarocks.hash index 4d9840a3..fb01993f 100644 --- a/bsp/buildroot/package/luarocks/luarocks.hash +++ b/bsp/buildroot/package/luarocks/luarocks.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 68e38feeb66052e29ad1935a71b875194ed8b9c67c2223af5f4d4e3e2464ed97 luarocks-2.3.0.tar.gz +sha256 0e1ec34583e1b265e0fbafb64c8bd348705ad403fe85967fd05d3a659f74d2e5 luarocks-2.4.2.tar.gz diff --git a/bsp/buildroot/package/luarocks/luarocks.mk b/bsp/buildroot/package/luarocks/luarocks.mk index eddd4354..d18056a5 100644 --- a/bsp/buildroot/package/luarocks/luarocks.mk +++ b/bsp/buildroot/package/luarocks/luarocks.mk @@ -4,7 +4,7 @@ # ################################################################################ -LUAROCKS_VERSION = 2.3.0 +LUAROCKS_VERSION = 2.4.2 LUAROCKS_SITE = http://luarocks.org/releases LUAROCKS_LICENSE = MIT LUAROCKS_LICENSE_FILES = COPYING @@ -60,4 +60,7 @@ define LUAROCKS_FINALIZE_TARGET rm -rf $(TARGET_DIR)/usr/lib/luarocks endef -LUAROCKS_TARGET_FINALIZE_HOOKS += LUAROCKS_FINALIZE_TARGET +# Apply to global variable directly, as pkg-generic does not +ifneq ($(BR2_PACKAGE_LUAJIT)$(BR2_PACKAGE_LUA),) +TARGET_FINALIZE_HOOKS += LUAROCKS_FINALIZE_TARGET +endif diff --git a/bsp/buildroot/package/luv/Config.in b/bsp/buildroot/package/luv/Config.in index 787d1626..e9d01099 100644 --- a/bsp/buildroot/package/luv/Config.in +++ b/bsp/buildroot/package/luv/Config.in @@ -1,14 +1,16 @@ config BR2_PACKAGE_LUV bool "luv" select BR2_PACKAGE_LIBUV - depends on BR2_TOOLCHAIN_HAS_THREADS # libuv + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv depends on BR2_USE_MMU # libuv depends on !BR2_STATIC_LIBS # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv help libuv bindings for LuaJIT and Lua. https://github.com/luvit/luv -comment "luv needs a toolchain w/ threads, dynamic library" - depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS +comment "luv needs a toolchain w/ NPTL, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/bsp/buildroot/package/luvi/Config.in b/bsp/buildroot/package/luvi/Config.in index 2f01f5c2..a9dd2ef7 100644 --- a/bsp/buildroot/package/luvi/Config.in +++ b/bsp/buildroot/package/luvi/Config.in @@ -1,9 +1,10 @@ config BR2_PACKAGE_LUVI bool "luvi" - depends on BR2_TOOLCHAIN_HAS_THREADS # libuv + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv depends on BR2_USE_MMU # libuv depends on !BR2_STATIC_LIBS # libuv depends on BR2_PACKAGE_LUAJIT + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv select BR2_PACKAGE_LIBUV select BR2_PACKAGE_LUV help @@ -22,9 +23,10 @@ config BR2_PACKAGE_LUVI https://github.com/luvit/luvi -comment "luvi needs a toolchain w/ threads, dynamic library" - depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS +comment "luvi needs a toolchain w/ NPTL, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 comment "luvi needs LuaJIT" depends on !BR2_PACKAGE_LUAJIT diff --git a/bsp/buildroot/package/lvm2/Config.in b/bsp/buildroot/package/lvm2/Config.in index b3a65936..23dff707 100644 --- a/bsp/buildroot/package/lvm2/Config.in +++ b/bsp/buildroot/package/lvm2/Config.in @@ -3,6 +3,8 @@ config BR2_PACKAGE_LVM2 depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_USE_MMU # needs fork() depends on !BR2_STATIC_LIBS # It fails to build statically + # http://lists.busybox.net/pipermail/buildroot/2016-August/170592.html + depends on !BR2_TOOLCHAIN_USES_MUSL help This is LVM2, the rewrite of The Linux Logical Volume Manager. LVM supports enterprise level volume management of disk and disk @@ -34,6 +36,6 @@ config BR2_PACKAGE_LVM2_APP_LIBRARY endif -comment "lvm2 needs a toolchain w/ threads, dynamic library" +comment "lvm2 needs a glibc or uClibc toolchain w/ threads, dynamic library" depends on BR2_USE_MMU - depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL diff --git a/bsp/buildroot/package/lvm2/lvm2.hash b/bsp/buildroot/package/lvm2/lvm2.hash index 65945a1f..3619af87 100644 --- a/bsp/buildroot/package/lvm2/lvm2.hash +++ b/bsp/buildroot/package/lvm2/lvm2.hash @@ -1,2 +1,2 @@ # From ftp://sources.redhat.com/pub/lvm2/releases/sha512.sum -sha512 9544bb7706488ac128d477af7294bcfd7b7e47cb0b1d604ea52c4545d6c3a5a71311945994dd1114cb1ce086d2006a35ef1d8b0fdd3082dfe5cc468cb0168057 LVM2.2.02.162.tgz +sha512 ebff909e1c81919967373c55c7a95ba13ef4e0536b8ef1c28ed7e1c1eb9b9fd406a649d93b141822b24675ebece5a722247737c4e869fb7fb5eeb881a7f9102d LVM2.2.02.168.tgz diff --git a/bsp/buildroot/package/lvm2/lvm2.mk b/bsp/buildroot/package/lvm2/lvm2.mk index 8a51120e..a2d484bc 100644 --- a/bsp/buildroot/package/lvm2/lvm2.mk +++ b/bsp/buildroot/package/lvm2/lvm2.mk @@ -4,7 +4,7 @@ # ################################################################################ -LVM2_VERSION = 2.02.162 +LVM2_VERSION = 2.02.168 LVM2_SOURCE = LVM2.$(LVM2_VERSION).tgz LVM2_SITE = ftp://sources.redhat.com/pub/lvm2/releases LVM2_INSTALL_STAGING = YES @@ -20,8 +20,8 @@ LVM2_CONF_OPTS += \ --enable-dmeventd # LVM2 uses autoconf, but not automake, and the build system does not -# take into account the CC passed at configure time. -LVM2_MAKE_ENV = CC="$(TARGET_CC)" +# take into account the toolchain passed at configure time. +LVM2_MAKE_ENV = $(TARGET_CONFIGURE_OPTS) ifeq ($(BR2_PACKAGE_READLINE),y) LVM2_DEPENDENCIES += readline diff --git a/bsp/buildroot/package/lxc/0001-drop-werror.patch b/bsp/buildroot/package/lxc/0001-drop-werror.patch deleted file mode 100644 index d2a8673a..00000000 --- a/bsp/buildroot/package/lxc/0001-drop-werror.patch +++ /dev/null @@ -1,16 +0,0 @@ -Don't do -Werror it breaks builds on some scenarios with trivialities. - -Signed-off-by: Gustavo Zacarias - -diff -Nura lxc-lxc-1.0.4/configure.ac lxc-lxc-1.0.4.orig/configure.ac ---- lxc-lxc-1.0.4.orig/configure.ac 2014-07-04 10:31:19.821029891 -0300 -+++ lxc-lxc-1.0.4/configure.ac 2014-06-13 14:07:45.000000000 -0300 -@@ -560,7 +560,7 @@ - LXC_CHECK_TLS - - if test "x$GCC" = "xyes"; then -- CFLAGS="$CFLAGS -Wall -Werror" -+ CFLAGS="$CFLAGS -Wall" - fi - - # Files requiring some variable expansion diff --git a/bsp/buildroot/package/lxc/0002-Fix-redefinition-of-struct-in6_addr.patch b/bsp/buildroot/package/lxc/0002-Fix-redefinition-of-struct-in6_addr.patch deleted file mode 100644 index b48ece38..00000000 --- a/bsp/buildroot/package/lxc/0002-Fix-redefinition-of-struct-in6_addr.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 245bba9aadf8e7aea487b6fbd851f86c75524552 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=B6rg=20Krause?= -Date: Thu, 19 May 2016 21:51:27 +0200 -Subject: [PATCH] Fix redefinition of struct in6_addr -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -struct in6_addr is both defined in the C library header -and the Linux kernel header . - -lxc_user_nic.c includes both and . The -later one includes . - -This breaks build with the musl libc: - error: redefinition of ‘struct in6_addr’ - -As lxc_user_nic.c does not use any references from it -is safe to remove this header. - -Upstream status: Pending -https://github.com/lxc/lxc/pull/1029 - -Signed-off-by: Jörg Krause ---- - src/lxc/lxc_user_nic.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/lxc/lxc_user_nic.c b/src/lxc/lxc_user_nic.c -index 87780ca..0cb38ba 100644 ---- a/src/lxc/lxc_user_nic.c -+++ b/src/lxc/lxc_user_nic.c -@@ -41,7 +41,6 @@ - #include - #include - #include --#include - #include - #include - #include --- -2.8.2 - diff --git a/bsp/buildroot/package/lxc/lxc.hash b/bsp/buildroot/package/lxc/lxc.hash index 74701016..f80c88d6 100644 --- a/bsp/buildroot/package/lxc/lxc.hash +++ b/bsp/buildroot/package/lxc/lxc.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 9588ad1b04e114ee7370f690c65131e28098b28d2521d97c73557d11897ed0be lxc-1.1.5.tar.gz +sha256 1c09c075f06ec029f86fa6370c7d379494ff4c66a129eda17af7b7b41e055f5d lxc-2.0.7.tar.gz diff --git a/bsp/buildroot/package/lxc/lxc.mk b/bsp/buildroot/package/lxc/lxc.mk index 81909695..455814b9 100644 --- a/bsp/buildroot/package/lxc/lxc.mk +++ b/bsp/buildroot/package/lxc/lxc.mk @@ -4,17 +4,24 @@ # ################################################################################ -LXC_VERSION = 1.1.5 +LXC_VERSION = 2.0.7 LXC_SITE = https://linuxcontainers.org/downloads/lxc LXC_LICENSE = LGPLv2.1+ LXC_LICENSE_FILES = COPYING LXC_DEPENDENCIES = libcap host-pkgconf -# we're patching configure.ac -LXC_AUTORECONF = YES +LXC_INSTALL_STAGING = YES + LXC_CONF_OPTS = --disable-apparmor --with-distro=buildroot \ - --disable-lua --disable-python \ + --disable-python --disable-werror \ $(if $(BR2_PACKAGE_BASH),,--disable-bash) +ifeq ($(BR2_PACKAGE_GNUTLS),y) +LXC_CONF_OPTS += --enable-gnutls +LXC_DEPENDENCIES += gnutls +else +LXC_CONF_OPTS += --disable-gnutls +endif + ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) LXC_CONF_OPTS += --enable-seccomp LXC_DEPENDENCIES += libseccomp @@ -22,4 +29,15 @@ else LXC_CONF_OPTS += --disable-seccomp endif +ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y) +LXC_CONF_OPTS += --enable-lua +LXC_DEPENDENCIES += luainterpreter +ifeq ($(BR2_PACKAGE_LUAJIT),y) +# By default, lxc will only search for lua.pc +LXC_CONF_OPTS += --with-lua-pc=luajit +endif +else +LXC_CONF_OPTS += --disable-lua +endif + $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/lz4/lz4.mk b/bsp/buildroot/package/lz4/lz4.mk index a5a41d35..9d7f56bb 100644 --- a/bsp/buildroot/package/lz4/lz4.mk +++ b/bsp/buildroot/package/lz4/lz4.mk @@ -18,25 +18,25 @@ LZ4_POST_PATCH_HOOKS += LZ4_DISABLE_SHARED endif define HOST_LZ4_BUILD_CMDS - $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) endef define HOST_LZ4_INSTALL_CMDS - $(MAKE) $(HOST_CONFIGURE_OPTS) PREFIX=$(HOST_DIR)/usr \ + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) PREFIX=$(HOST_DIR)/usr \ install -C $(@D) endef define LZ4_BUILD_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)/lib + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)/lib endef define LZ4_INSTALL_STAGING_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) DESTDIR=$(STAGING_DIR) \ + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) DESTDIR=$(STAGING_DIR) \ PREFIX=/usr install -C $(@D) endef define LZ4_INSTALL_TARGET_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) DESTDIR=$(TARGET_DIR) \ + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) DESTDIR=$(TARGET_DIR) \ PREFIX=/usr install -C $(@D)/lib endef diff --git a/bsp/buildroot/package/lzip/Config.in b/bsp/buildroot/package/lzip/Config.in index f20d0e5d..821cd262 100644 --- a/bsp/buildroot/package/lzip/Config.in +++ b/bsp/buildroot/package/lzip/Config.in @@ -11,4 +11,4 @@ config BR2_PACKAGE_LZIP bzip2, and is better than both from a data recovery perspective. Lzip is a clean implementation of the LZMA algorithm. - http://savannah.nongnu.org/projects/lzip + http://www.nongnu.org/lzip/lzip.html diff --git a/bsp/buildroot/package/lzip/lzip.hash b/bsp/buildroot/package/lzip/lzip.hash index 7b83e3e6..8855231f 100644 --- a/bsp/buildroot/package/lzip/lzip.hash +++ b/bsp/buildroot/package/lzip/lzip.hash @@ -1,2 +1,4 @@ +# From http://lists.nongnu.org/archive/html/lzip-bug/2016-06/msg00002.html +sha1 ef42f3209d02c3b3c217a61c8f127bcb8747b128 lzip-1.18.tar.gz # Locally calculated after checking pgp signature -sha256 7cd3fcda68fc9900efcf7784313e3bdd1303fef1a0546db9723f5e5564dd05b6 lzip-1.15.tar.gz +sha256 47f9882a104ab05532f467a7b8f4ddbb898fa2f1e8d9d468556d6c2d04db14dd lzip-1.18.tar.gz diff --git a/bsp/buildroot/package/lzip/lzip.mk b/bsp/buildroot/package/lzip/lzip.mk index 7b1fdf48..db04862c 100644 --- a/bsp/buildroot/package/lzip/lzip.mk +++ b/bsp/buildroot/package/lzip/lzip.mk @@ -4,35 +4,35 @@ # ################################################################################ -LZIP_VERSION = 1.15 +LZIP_VERSION = 1.18 LZIP_SITE = http://download.savannah.gnu.org/releases/lzip -LZIP_LICENSE = GPLv3+ +LZIP_LICENSE = GPLv2+ LZIP_LICENSE_FILES = COPYING define LZIP_CONFIGURE_CMDS - (cd $(@D); ./configure --prefix=/usr \ + (cd $(@D); $(TARGET_MAKE_ENV) ./configure --prefix=/usr \ $(TARGET_CONFIGURE_OPTS) ) endef define HOST_LZIP_CONFIGURE_CMDS - (cd $(@D); ./configure --prefix=/usr \ + (cd $(@D); $(HOST_MAKE_ENV) ./configure --prefix=/usr \ $(HOST_CONFIGURE_OPTS) ) endef define LZIP_BUILD_CMDS - $(MAKE) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) endef define HOST_LZIP_BUILD_CMDS - $(MAKE) -C $(@D) + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) endef define LZIP_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install endef define HOST_LZIP_INSTALL_CMDS - $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) install + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) install endef # It's not autotools-based diff --git a/bsp/buildroot/package/lzlib/lzlib.mk b/bsp/buildroot/package/lzlib/lzlib.mk index 91f380af..f468a1c8 100644 --- a/bsp/buildroot/package/lzlib/lzlib.mk +++ b/bsp/buildroot/package/lzlib/lzlib.mk @@ -6,7 +6,7 @@ LZLIB_VERSION = 0.4.3 LZLIB_SITE = $(call github,LuaDist,lzlib,$(LZLIB_VERSION)) -LZLIB_DEPENDENCIES = zlib +LZLIB_DEPENDENCIES = lua zlib LZLIB_LICENSE = MIT LZLIB_CONF_OPTS = -DINSTALL_CMOD="/usr/lib/lua/$(LUAINTERPRETER_ABIVER)" \ -DINSTALL_LMOD="/usr/share/lua/$(LUAINTERPRETER_ABIVER)" diff --git a/bsp/buildroot/package/lzop/0002-use-static-inlines-as-the-external-inline-definition.patch b/bsp/buildroot/package/lzop/0002-use-static-inlines-as-the-external-inline-definition.patch new file mode 100644 index 00000000..f6d076a9 --- /dev/null +++ b/bsp/buildroot/package/lzop/0002-use-static-inlines-as-the-external-inline-definition.patch @@ -0,0 +1,102 @@ +From ecccbcf66da53779d88e38e2af7f82eff8dde7f8 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 16 Aug 2015 10:35:47 -0700 +Subject: [PATCH] use static inlines as the external inline definition has + changed with gcc5 + +[Patch from https://raw.githubusercontent.com/openembedded/openembedded-core/master/meta/recipes-support/lzop/lzop/0001-use-static-inlines-as-the-external-inline-definition.patch] +Signed-off-by: Khem Raj +Signed-off-by: Peter Korsgaard +--- +Upstream-Status: Pending + + src/miniacc.h | 24 ++++++++---------------- + 1 file changed, 8 insertions(+), 16 deletions(-) + +diff --git a/src/miniacc.h b/src/miniacc.h +index 09e6f0c..cae98d1 100644 +--- a/src/miniacc.h ++++ b/src/miniacc.h +@@ -2880,8 +2880,7 @@ typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t); + #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline) + #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC) + #if !defined(ACC_UA_GET_LE16) +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp); +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) { ++static __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) { + __acc_ua_volatile const acc_uint16e_t* p = (__acc_ua_volatile const acc_uint16e_t*) pp; + unsigned long v; + __asm__ __volatile__("lhbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p)); +@@ -2890,8 +2889,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const + #define ACC_UA_GET_LE16(p) __ACC_UA_GET_LE16(p) + #endif + #if !defined(ACC_UA_SET_LE16) +-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v); +-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) { ++static __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) { + __acc_ua_volatile acc_uint16e_t* p = (__acc_ua_volatile acc_uint16e_t*) pp; + __asm__ __volatile__("sthbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v)); + } +@@ -2916,8 +2914,7 @@ extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsi + #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline) + #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC) + #if !defined(ACC_UA_GET_LE32) +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp); +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) { ++static __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) { + __acc_ua_volatile const acc_uint32e_t* p = (__acc_ua_volatile const acc_uint32e_t*) pp; + unsigned long v; + __asm__ __volatile__("lwbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p)); +@@ -2926,8 +2923,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const + #define ACC_UA_GET_LE32(p) __ACC_UA_GET_LE32(p) + #endif + #if !defined(ACC_UA_SET_LE32) +-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v); +-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) { ++static __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) { + __acc_ua_volatile acc_uint32e_t* p = (__acc_ua_volatile acc_uint32e_t*) pp; + __asm__ __volatile__("stwbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v)); + } +@@ -3307,8 +3303,7 @@ typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t); + #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline) + #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC) + #if !defined(ACC_UA_GET_LE16) +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp); +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) { ++static __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) { + __acc_ua_volatile const acc_uint16e_t* p = (__acc_ua_volatile const acc_uint16e_t*) pp; + unsigned long v; + __asm__ __volatile__("lhbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p)); +@@ -3317,8 +3312,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const + #define ACC_UA_GET_LE16(p) __ACC_UA_GET_LE16(p) + #endif + #if !defined(ACC_UA_SET_LE16) +-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v); +-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) { ++static __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) { + __acc_ua_volatile acc_uint16e_t* p = (__acc_ua_volatile acc_uint16e_t*) pp; + __asm__ __volatile__("sthbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v)); + } +@@ -3343,8 +3337,7 @@ extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsi + #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline) + #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC) + #if !defined(ACC_UA_GET_LE32) +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp); +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) { ++static __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) { + __acc_ua_volatile const acc_uint32e_t* p = (__acc_ua_volatile const acc_uint32e_t*) pp; + unsigned long v; + __asm__ __volatile__("lwbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p)); +@@ -3353,8 +3346,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const + #define ACC_UA_GET_LE32(p) __ACC_UA_GET_LE32(p) + #endif + #if !defined(ACC_UA_SET_LE32) +-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v); +-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) { ++static __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) { + __acc_ua_volatile acc_uint32e_t* p = (__acc_ua_volatile acc_uint32e_t*) pp; + __asm__ __volatile__("stwbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v)); + } +-- +2.5.0 + diff --git a/bsp/buildroot/package/m4/m4.hash b/bsp/buildroot/package/m4/m4.hash index 38214dc9..79c36c87 100644 --- a/bsp/buildroot/package/m4/m4.hash +++ b/bsp/buildroot/package/m4/m4.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 f0543c3beb51fa6b3337d8025331591e0e18d8ec2886ed391f1aade43477d508 m4-1.4.17.tar.xz +sha256 f2c1e86ca0a404ff281631bdc8377638992744b175afb806e25871a24a934e07 m4-1.4.18.tar.xz diff --git a/bsp/buildroot/package/m4/m4.mk b/bsp/buildroot/package/m4/m4.mk index 9b5d2d1f..d53f7cbd 100644 --- a/bsp/buildroot/package/m4/m4.mk +++ b/bsp/buildroot/package/m4/m4.mk @@ -4,7 +4,7 @@ # ################################################################################ -M4_VERSION = 1.4.17 +M4_VERSION = 1.4.18 M4_SOURCE = m4-$(M4_VERSION).tar.xz M4_SITE = $(BR2_GNU_MIRROR)/m4 M4_LICENSE = GPLv3+ diff --git a/bsp/buildroot/package/madplay/madplay.mk b/bsp/buildroot/package/madplay/madplay.mk index 2606ac8d..6b138197 100644 --- a/bsp/buildroot/package/madplay/madplay.mk +++ b/bsp/buildroot/package/madplay/madplay.mk @@ -11,6 +11,14 @@ MADPLAY_LICENSE_FILES = COPYING COPYRIGHT MADPLAY_LIBTOOL_PATCH = NO MADPLAY_DEPENDENCIES = libmad libid3tag $(if $(BR2_PACKAGE_GETTEXT),gettext) +# Workaround a bug in uClibc-ng, which exposes madvise() but doesn't +# provide the corresponding MADV_* definitions. Bug reported at +# http://mailman.uclibc-ng.org/pipermail/devel/2016-December/001306.html. madvise() +# is anyway useless on noMMU. +ifeq ($(BR2_USE_MMU),) +MADPLAY_CONF_ENV += ac_cv_func_madvise=no +endif + # Check if ALSA is built, then we should configure after alsa-lib so # ./configure can find alsa-lib. ifeq ($(BR2_PACKAGE_MADPLAY_ALSA),y) diff --git a/bsp/buildroot/package/makedevs/Config.in b/bsp/buildroot/package/makedevs/Config.in deleted file mode 100644 index 923150dd..00000000 --- a/bsp/buildroot/package/makedevs/Config.in +++ /dev/null @@ -1,5 +0,0 @@ -config BR2_PACKAGE_MAKEDEVS - bool "makedevs" - help - The makedevs utility allows to create a set of device files - according to a configuration file. diff --git a/bsp/buildroot/package/makedevs/makedevs.c b/bsp/buildroot/package/makedevs/makedevs.c index cacb144e..7092b147 100644 --- a/bsp/buildroot/package/makedevs/makedevs.c +++ b/bsp/buildroot/package/makedevs/makedevs.c @@ -599,6 +599,8 @@ int main(int argc, char **argv) } else { dev_t rdev; + unsigned i; + char *full_name_inc; if (type == 'p') { mode |= S_IFIFO; @@ -614,43 +616,24 @@ int main(int argc, char **argv) goto loop; } - if (count > 0) { - int i; - char *full_name_inc; - - full_name_inc = xmalloc(strlen(full_name) + 8); - for (i = 0; i < count; i++) { - sprintf(full_name_inc, "%s%d", full_name, start + i); - rdev = makedev(major, minor + i * increment); - if (mknod(full_name_inc, mode, rdev) == -1) { - bb_perror_msg("line %d: Couldnt create node %s", linenum, full_name_inc); - ret = EXIT_FAILURE; - } - else if (chown(full_name_inc, uid, gid) == -1) { - bb_perror_msg("line %d: chown failed for %s", linenum, full_name_inc); - ret = EXIT_FAILURE; - } - if ((mode != -1) && (chmod(full_name_inc, mode) < 0)){ - bb_perror_msg("line %d: chmod failed for %s", linenum, full_name_inc); - ret = EXIT_FAILURE; - } - } - free(full_name_inc); - } else { - rdev = makedev(major, minor); - if (mknod(full_name, mode, rdev) == -1) { - bb_perror_msg("line %d: Couldnt create node %s", linenum, full_name); + full_name_inc = xmalloc(strlen(full_name) + sizeof(int)*3 + 2); + if (count) + count--; + for (i = start; i <= start + count; i++) { + sprintf(full_name_inc, count ? "%s%u" : "%s", full_name, i); + rdev = makedev(major, minor + (i - start) * increment); + if (mknod(full_name_inc, mode, rdev) < 0) { + bb_perror_msg("line %d: can't create node %s", linenum, full_name_inc); ret = EXIT_FAILURE; - } - else if (chown(full_name, uid, gid) == -1) { - bb_perror_msg("line %d: chown failed for %s", linenum, full_name); + } else if (chown(full_name_inc, uid, gid) < 0) { + bb_perror_msg("line %d: can't chown %s", linenum, full_name_inc); ret = EXIT_FAILURE; - } - if ((mode != -1) && (chmod(full_name, mode) < 0)){ - bb_perror_msg("line %d: chmod failed for %s", linenum, full_name); + } else if (chmod(full_name_inc, mode) < 0) { + bb_perror_msg("line %d: can't chmod %s", linenum, full_name_inc); ret = EXIT_FAILURE; } } + free(full_name_inc); } loop: free(line); diff --git a/bsp/buildroot/package/makedevs/makedevs.mk b/bsp/buildroot/package/makedevs/makedevs.mk index 95933c4f..9bd684f0 100644 --- a/bsp/buildroot/package/makedevs/makedevs.mk +++ b/bsp/buildroot/package/makedevs/makedevs.mk @@ -15,15 +15,6 @@ HOST_MAKEDEVS_CFLAGS += -DEXTENDED_ATTRIBUTES HOST_MAKEDEVS_LDFLAGS += -lcap endif -define MAKEDEVS_BUILD_CMDS - $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ - package/makedevs/makedevs.c -o $(@D)/makedevs -endef - -define MAKEDEVS_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 755 $(@D)/makedevs $(TARGET_DIR)/usr/sbin/makedevs -endef - define HOST_MAKEDEVS_BUILD_CMDS $(HOSTCC) $(HOST_MAKEDEVS_CFLAGS) package/makedevs/makedevs.c \ -o $(@D)/makedevs $(HOST_MAKEDEVS_LDFLAGS) @@ -33,5 +24,4 @@ define HOST_MAKEDEVS_INSTALL_CMDS $(INSTALL) -D -m 755 $(@D)/makedevs $(HOST_DIR)/usr/bin/makedevs endef -$(eval $(generic-package)) $(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/mariadb/0001-add-extra-check-for-librt.patch b/bsp/buildroot/package/mariadb/0001-add-extra-check-for-librt.patch new file mode 100644 index 00000000..26bff754 --- /dev/null +++ b/bsp/buildroot/package/mariadb/0001-add-extra-check-for-librt.patch @@ -0,0 +1,27 @@ +From e6244400dfd3547531a3a3289fadbbe19873f096 Mon Sep 17 00:00:00 2001 +From: Ryan Coe +Date: Thu, 27 Oct 2016 20:33:21 -0700 +Subject: [PATCH] add extra check for librt + +Signed-off-by: Ryan Coe +--- + configure.cmake | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/configure.cmake b/configure.cmake +index 896226de954f4642a238ca6a72e0930590dc1681..77ca485fb05e6b63bb69f9561b4eabfaa208a419 100644 +--- a/configure.cmake ++++ b/configure.cmake +@@ -126,6 +126,9 @@ IF(UNIX) + IF(NOT LIBRT) + MY_SEARCH_LIBS(clock_gettime rt LIBRT) + ENDIF() ++ IF(NOT LIBRT) ++ MY_SEARCH_LIBS(posix_spawn_file_actions_addclose rt LIBRT) ++ ENDIF() + FIND_PACKAGE(Threads) + + SET(CMAKE_REQUIRED_LIBRARIES +-- +2.9.3 + diff --git a/bsp/buildroot/package/mariadb/S97mysqld b/bsp/buildroot/package/mariadb/S97mysqld new file mode 100644 index 00000000..62357fa8 --- /dev/null +++ b/bsp/buildroot/package/mariadb/S97mysqld @@ -0,0 +1,77 @@ +#!/bin/sh +# +# mysql +# + +MYSQL_LIB="/var/lib/mysql" +MYSQL_RUN="/run/mysql" +MYSQL_PID="$MYSQL_RUN/mysqld.pid" +MYSQL_BIN="/usr/bin" + +wait_for_ready() { + WAIT_DELAY=5 + while [ $WAIT_DELAY -gt 0 ]; do + if $MYSQL_BIN/mysqladmin ping > /dev/null 2>&1; then + return 0 + fi + sleep 1 + : $((WAIT_DELAY -= 1)) + done + return 1 +} + +start() { + if [ `ls -1 $MYSQL_LIB | wc -l` = 0 ] ; then + printf "Creating mysql system tables ... " + $MYSQL_BIN/mysql_install_db --basedir=/usr --user=mysql \ + --datadir=$MYSQL_LIB > /dev/null 2>&1 + if [ $? != 0 ]; then + echo "FAIL" + exit 1 + fi + echo "OK" + fi + + # mysqld runs as user mysql, but /run is only writable by root + # so create a subdirectory for mysql. + install -d -o mysql -g root -m 0755 $MYSQL_RUN + + # We don't use start-stop-daemon because mysqld has its own + # wrapper script. + printf "Starting mysql ... " + $MYSQL_BIN/mysqld_safe --pid-file=$MYSQL_PID --user=mysql \ + > /dev/null 2>&1 & + wait_for_ready + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping mysql ... " + if [ -f $MYSQL_PID ]; then + kill `cat $MYSQL_PID` > /dev/null 2>&1 + [ $? = 0 ] && echo "OK" || echo "FAIL" + else + echo "FAIL" + fi +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac diff --git a/bsp/buildroot/package/mariadb/mariadb.hash b/bsp/buildroot/package/mariadb/mariadb.hash new file mode 100644 index 00000000..3d6520f3 --- /dev/null +++ b/bsp/buildroot/package/mariadb/mariadb.hash @@ -0,0 +1,5 @@ +# From https://downloads.mariadb.org/mariadb/10.1.21/ +sha1 f9ccaa9881b98eeef68f4dbcf5ab9653c903819f mariadb-10.1.21.tar.gz + +# Locally computed +sha256 5a816355781ea22a6c65a436d8162f19bd292ec90e2b7d9499c031ae4a659490 mariadb-10.1.21.tar.gz diff --git a/bsp/buildroot/package/mariadb/mariadb.mk b/bsp/buildroot/package/mariadb/mariadb.mk new file mode 100644 index 00000000..aa4afc5b --- /dev/null +++ b/bsp/buildroot/package/mariadb/mariadb.mk @@ -0,0 +1,116 @@ +################################################################################ +# +# mariadb +# +################################################################################ + +MARIADB_VERSION = 10.1.21 +MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERSION)/source +MARIADB_LICENSE = GPLv2 (server), GPLv2 with FLOSS exception (GPL client library), LGPLv2 (LGPL client library) +MARIADB_LICENSE_FILES = README COPYING COPYING.LESSER +MARIADB_INSTALL_STAGING = YES +MARIADB_PROVIDES = mysql + +MARIADB_DEPENDENCIES = \ + host-mariadb \ + ncurses \ + openssl \ + zlib \ + libaio \ + libxml2 \ + readline + +# We won't need unit tests +MARIADB_CONF_OPTS += -DWITH_UNIT_TESTS=0 + +# Mroonga needs libstemmer. Some work still needs to be done before it can be +# included in buildroot. Disable it for now. +MARIADB_CONF_OPTS += -DWITHOUT_MROONGA=1 + +# This value is determined automatically during straight compile by compiling +# and running a test code. You cannot do that during cross-compile. However the +# stack grows downward in most if not all modern systems. The only exception I +# am aware of is PA-RISC which is not supported by buildroot. Therefore it makes +# sense to hardcode the value. If an arch is added the stack of which grows up +# one should expect unpredictable behavior at run time. +MARIADB_CONF_OPTS += -DSTACK_DIRECTION=-1 + +# Jemalloc was added for TokuDB. Since its configure script seems somewhat broken +# when it comes to cross-compilation we shall disable it and also disable TokuDB. +MARIADB_CONF_OPTS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1 + +# Make it explicit that we are cross-compiling +MARIADB_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1 + +# Explicitly disable dtrace to avoid detection of a host version +MARIADB_CONF_OPTS += -DENABLE_DTRACE=0 + +ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y) +MARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=ON +else +MARIADB_CONF_OPTS += -DWITHOUT_SERVER=ON +endif + +MARIADB_CONF_OPTS += \ + -DINSTALL_DOCDIR=share/doc/mariadb-$(MARIADB_VERSION) \ + -DINSTALL_DOCREADMEDIR=share/doc/mariadb-$(MARIADB_VERSION) \ + -DINSTALL_MANDIR=share/man \ + -DINSTALL_MYSQLSHAREDIR=share/mysql \ + -DINSTALL_MYSQLTESTDIR=share/mysql/test \ + -DINSTALL_PLUGINDIR=lib/mysql/plugin \ + -DINSTALL_SBINDIR=sbin \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_SQLBENCHDIR=share/mysql/bench \ + -DINSTALL_SUPPORTFILESDIR=share/mysql \ + -DMYSQL_DATADIR=/var/lib/mysql \ + -DMYSQL_UNIX_ADDR=$(MYSQL_SOCKET) + +# Some helpers must be compiled for host in order to crosscompile mariadb for +# the target. They are then included by import_executables.cmake which is +# generated during the build of the host helpers. It is not necessary to build +# the whole host package, only the "import_executables" target. +# -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake +# must then be passed to cmake during target build. +# see also https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/ +HOST_MARIADB_MAKE_OPTS = import_executables + +MARIADB_CONF_OPTS += \ + -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake + +# Don't install host-mariadb. We just need to build import_executable +# Therefore only run 'true' and do nothing, not even the default action. +HOST_MARIADB_INSTALL_CMDS = true + +ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y) +define MARIADB_USERS + mysql -1 mysql -1 * /var/lib/mysql - - MySQL Server +endef + +define MARIADB_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/mariadb/S97mysqld \ + $(TARGET_DIR)/etc/init.d/S97mysqld +endef + +define MARIADB_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/mariadb/mysqld.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mysqld.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/mysqld.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service +endef +endif + +define MARIADB_POST_INSTALL + mkdir -p $(TARGET_DIR)/var/lib/mysql + $(INSTALL) -D -m 644 $(TARGET_DIR)/usr/share/mysql/my-small.cnf \ + $(TARGET_DIR)/etc/mysql/my.cnf + # We don't need this on the target as it's only useful in staging + $(RM) $(TARGET_DIR)/usr/bin/mysql_config + # Remove test suite + $(RM) -r $(TARGET_DIR)/usr/share/mysql/test +endef + +MARIADB_POST_INSTALL_TARGET_HOOKS += MARIADB_POST_INSTALL + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/bsp/buildroot/package/mariadb/mysqld.service b/bsp/buildroot/package/mariadb/mysqld.service new file mode 100644 index 00000000..cd308310 --- /dev/null +++ b/bsp/buildroot/package/mariadb/mysqld.service @@ -0,0 +1,13 @@ +[Unit] +Description=MySQL database server + +[Service] +ExecStartPre=/bin/sh -c 'test "`ls -1 /var/lib/mysql | wc -l`" != "0" || mysql_install_db --basedir=/usr --datadir=/var/lib/mysql' +ExecStart=/usr/bin/mysqld_safe +Restart=always +User=mysql +RuntimeDirectory=mysql +RuntimeDirectoryMode=0755 + +[Install] +WantedBy=multi-user.target diff --git a/bsp/buildroot/package/matchbox-lib/matchbox-lib.mk b/bsp/buildroot/package/matchbox-lib/matchbox-lib.mk index d43e2b8c..451279e6 100644 --- a/bsp/buildroot/package/matchbox-lib/matchbox-lib.mk +++ b/bsp/buildroot/package/matchbox-lib/matchbox-lib.mk @@ -21,8 +21,8 @@ endef MATCHBOX_LIB_POST_INSTALL_STAGING_HOOKS += MATCHBOX_LIB_POST_INSTALL_FIXES -ifeq ($(BR2_PACKAGE_X11R7_LIBXCOMPOSITE),y) -ifeq ($(BR2_PACKAGE_X11R7_LIBXPM),y) +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y) MATCHBOX_LIB_DEPENDENCIES += xlib_libXpm endif endif diff --git a/bsp/buildroot/package/mbedtls/Config.in b/bsp/buildroot/package/mbedtls/Config.in index 24f0f489..ed63f2da 100644 --- a/bsp/buildroot/package/mbedtls/Config.in +++ b/bsp/buildroot/package/mbedtls/Config.in @@ -17,4 +17,16 @@ config BR2_PACKAGE_MBEDTLS_PROGRAMS This option enables the installation and the build of mbed TLS companion programs. +config BR2_PACKAGE_MBEDTLS_COMPRESSION + bool "enable compression support" + select BR2_PACKAGE_ZLIB + help + Enable support for compression of the content data before it + enters the secure channel as described in RFC 3749. + + Warning: TLS compression may make you vulnerable to the CRIME + attack. You should not enable it unless you know for sure CRIME + and similar attacks are not applicable to your particular + situation. + endif diff --git a/bsp/buildroot/package/mbedtls/mbedtls.hash b/bsp/buildroot/package/mbedtls/mbedtls.hash index eebbfe85..5f9786c2 100644 --- a/bsp/buildroot/package/mbedtls/mbedtls.hash +++ b/bsp/buildroot/package/mbedtls/mbedtls.hash @@ -1,2 +1,2 @@ -# From https://tls.mbed.org/tech-updates/releases/mbedtls-2.2.1-2.1.4-1.3.16-and-polarssl.1.2.19-released -sha256 6ddd5ca2e7dfb43d2fd750400856246fc1c98344dabf01b1594eb2f9880ef7ce mbedtls-2.2.1-apache.tgz +# From https://tls.mbed.org/tech-updates/releases/mbedtls-2.3.0-2.1.5-and-1.3.17-released +sha256 c1c3559ed39f7a1b1550c4cf4ccb918bf239301a3311d98dda92bed8a25b7f0d mbedtls-2.4.0-apache.tgz diff --git a/bsp/buildroot/package/mbedtls/mbedtls.mk b/bsp/buildroot/package/mbedtls/mbedtls.mk index 994a3f40..198879da 100644 --- a/bsp/buildroot/package/mbedtls/mbedtls.mk +++ b/bsp/buildroot/package/mbedtls/mbedtls.mk @@ -5,7 +5,7 @@ ################################################################################ MBEDTLS_SITE = https://tls.mbed.org/code/releases -MBEDTLS_VERSION = 2.2.1 +MBEDTLS_VERSION = 2.4.0 MBEDTLS_SOURCE = mbedtls-$(MBEDTLS_VERSION)-apache.tgz MBEDTLS_CONF_OPTS = \ -DENABLE_PROGRAMS=$(if $(BR2_PACKAGE_MBEDTLS_PROGRAMS),ON,OFF) \ @@ -39,9 +39,14 @@ MBEDTLS_CONF_OPTS += \ -DUSE_SHARED_MBEDTLS_LIBRARY=ON -DUSE_STATIC_MBEDTLS_LIBRARY=OFF endif -ifeq ($(BR2_PACKAGE_ZLIB),y) +ifeq ($(BR2_PACKAGE_MBEDTLS_COMPRESSION),y) MBEDTLS_CONF_OPTS += -DENABLE_ZLIB_SUPPORT=ON MBEDTLS_DEPENDENCIES += zlib +define MBEDTLS_ENABLE_ZLIB + $(SED) "s://#define MBEDTLS_ZLIB_SUPPORT:#define MBEDTLS_ZLIB_SUPPORT:" \ + $(@D)/include/mbedtls/config.h +endef +MBEDTLS_POST_PATCH_HOOKS += MBEDTLS_ENABLE_ZLIB else MBEDTLS_CONF_OPTS += -DENABLE_ZLIB_SUPPORT=OFF endif @@ -60,7 +65,7 @@ endef # MIPS R6 asm is not yet supported ifeq ($(BR2_ENABLE_DEBUG)$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_ARM_INSTRUCTIONS_THUMB2),yy) MBEDTLS_POST_CONFIGURE_HOOKS += MBEDTLS_DISABLE_ASM -else ifeq ($(BR2_microblaze)$(BR2_mips_32r6)$(BR2_mips_64r6),y) +else ifeq ($(BR2_microblaze)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) MBEDTLS_POST_CONFIGURE_HOOKS += MBEDTLS_DISABLE_ASM endif diff --git a/bsp/buildroot/package/mc/mc.hash b/bsp/buildroot/package/mc/mc.hash index 0d22d80c..a8116d02 100644 --- a/bsp/buildroot/package/mc/mc.hash +++ b/bsp/buildroot/package/mc/mc.hash @@ -1,2 +1,2 @@ -# Hash from http://ftp.midnight-commander.org/mc-4.8.17.sha256: -sha256 0447bdddc0baa81866e66f50f9a545d29d6eebb68b0ab46c98d8fddd2bf4e44d mc-4.8.17.tar.xz +# Hash from http://ftp.midnight-commander.org/mc-4.8.18.sha256: +sha256 f7636815c987c1719c4f5de2dcd156a0e7d097b1d10e4466d2bdead343d5bece mc-4.8.18.tar.xz diff --git a/bsp/buildroot/package/mc/mc.mk b/bsp/buildroot/package/mc/mc.mk index 808f81c3..ff4c8ad2 100644 --- a/bsp/buildroot/package/mc/mc.mk +++ b/bsp/buildroot/package/mc/mc.mk @@ -4,7 +4,7 @@ # ################################################################################ -MC_VERSION = 4.8.17 +MC_VERSION = 4.8.18 MC_SOURCE = mc-$(MC_VERSION).tar.xz MC_SITE = http://ftp.midnight-commander.org MC_LICENSE = GPLv3+ diff --git a/bsp/buildroot/package/mediastreamer/Config.in b/bsp/buildroot/package/mediastreamer/Config.in index 396f7e46..7e62bf2e 100644 --- a/bsp/buildroot/package/mediastreamer/Config.in +++ b/bsp/buildroot/package/mediastreamer/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_MEDIASTREAMER bool "mediastreamer" select BR2_PACKAGE_ORTP - depends on BR2_INSTALL_LIBSTDCPP # until fixed + depends on BR2_INSTALL_LIBSTDCPP # ortp depends on BR2_TOOLCHAIN_HAS_THREADS # ortp help Mediastreamer is a powerful and lightweighted streaming diff --git a/bsp/buildroot/package/mediastreamer/mediastreamer.hash b/bsp/buildroot/package/mediastreamer/mediastreamer.hash index 21964a86..0f1ac77c 100644 --- a/bsp/buildroot/package/mediastreamer/mediastreamer.hash +++ b/bsp/buildroot/package/mediastreamer/mediastreamer.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 0dbf8d4f721a04db9ec0982e98a4e852ad2d3acbcbd25edd96a66164a980f2e7 mediastreamer-2.12.1.tar.gz +sha256 1144849c0c96abafb1153adf56109f0f195a9e4a53cf28cb611bbca7a9012c1a mediastreamer-2.14.0.tar.gz +sha256 90091ab0aa7a77381ab1ca5d88cdfa4e7f62505fb452a2bea0f70054d9d1aece 26f884bf977977041fe6f98a0af186be1580bf22.patch diff --git a/bsp/buildroot/package/mediastreamer/mediastreamer.mk b/bsp/buildroot/package/mediastreamer/mediastreamer.mk index a12bfb4b..b4f0c52c 100644 --- a/bsp/buildroot/package/mediastreamer/mediastreamer.mk +++ b/bsp/buildroot/package/mediastreamer/mediastreamer.mk @@ -4,7 +4,7 @@ # ################################################################################ -MEDIASTREAMER_VERSION = 2.12.1 +MEDIASTREAMER_VERSION = 2.14.0 MEDIASTREAMER_SITE = http://download.savannah.nongnu.org/releases/linphone/mediastreamer MEDIASTREAMER_INSTALL_STAGING = YES MEDIASTREAMER_DEPENDENCIES = host-intltool host-pkgconf ortp host-gettext @@ -13,6 +13,13 @@ MEDIASTREAMER_CONF_OPTS = --disable-tests --disable-glx --disable-strict MEDIASTREAMER_LICENSE = GPLv2+ MEDIASTREAMER_LICENSE_FILES = COPYING +# fix compilation issue with latest bctoolbox (touches configure.ac) +MEDIASTREAMER_PATCH = \ + https://github.com/BelledonneCommunications/mediastreamer2/commit/26f884bf977977041fe6f98a0af186be1580bf22.patch + +# patching configure.ac +MEDIASTREAMER_AUTORECONF = YES + ifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER)$(BR2_PACKAGE_ALSA_LIB_PCM),yy) MEDIASTREAMER_CONF_OPTS += --enable-alsa MEDIASTREAMER_DEPENDENCIES += alsa-lib diff --git a/bsp/buildroot/package/memcached/memcached.hash b/bsp/buildroot/package/memcached/memcached.hash index ab57b511..11cac3a5 100644 --- a/bsp/buildroot/package/memcached/memcached.hash +++ b/bsp/buildroot/package/memcached/memcached.hash @@ -1,4 +1,4 @@ -# From http://www.memcached.org/files/memcached-1.4.29.tar.gz.sha1 -sha1 8994b4d0dbcc8d536f3d6cd4763489a3c51ca44b memcached-1.4.29.tar.gz +# From http://www.memcached.org/files/memcached-1.4.34.tar.gz.sha1 +sha1 7c7214f5183c6e20c22b243e21ed1ffddb91497e memcached-1.4.34.tar.gz # Calculated based on the hash above -sha256 c61a3a7f9c82e574559797bbf4bb01ad8b79e436ca80b8e46f5b51ae39b03d0b memcached-1.4.29.tar.gz +sha256 5064c87f91a37d822dfeab8768490c55fe686a742f07f67c7121101e48d87c79 memcached-1.4.34.tar.gz diff --git a/bsp/buildroot/package/memcached/memcached.mk b/bsp/buildroot/package/memcached/memcached.mk index 42742ff9..caebe028 100644 --- a/bsp/buildroot/package/memcached/memcached.mk +++ b/bsp/buildroot/package/memcached/memcached.mk @@ -4,7 +4,7 @@ # ################################################################################ -MEMCACHED_VERSION = 1.4.29 +MEMCACHED_VERSION = 1.4.34 MEMCACHED_SITE = http://www.memcached.org/files MEMCACHED_DEPENDENCIES = libevent MEMCACHED_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' diff --git a/bsp/buildroot/package/memstat/memstat.mk b/bsp/buildroot/package/memstat/memstat.mk index 7ee4d608..e11b4ae6 100644 --- a/bsp/buildroot/package/memstat/memstat.mk +++ b/bsp/buildroot/package/memstat/memstat.mk @@ -11,7 +11,7 @@ MEMSTAT_LICENSE = GPL MEMSTAT_LICENSE_FILES = debian/copyright define MEMSTAT_BUILD_CMDS - $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" CFLAGS="$(TARGET_CFLAGS)" \ + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" CFLAGS="$(TARGET_CFLAGS)" \ -C $(@D) memstat endef diff --git a/bsp/buildroot/package/memtester/memtester.mk b/bsp/buildroot/package/memtester/memtester.mk index d12babca..802c1e49 100644 --- a/bsp/buildroot/package/memtester/memtester.mk +++ b/bsp/buildroot/package/memtester/memtester.mk @@ -13,11 +13,11 @@ MEMTESTER_TARGET_INSTALL_OPTS = INSTALLPATH=$(TARGET_DIR)/usr define MEMTESTER_BUILD_CMDS $(SED) "s,^cc,$(TARGET_CC)," $(@D)/conf-* - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) endef define MEMTESTER_INSTALL_TARGET_CMDS - $(MAKE) $(MEMTESTER_TARGET_INSTALL_OPTS) -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) $(MEMTESTER_TARGET_INSTALL_OPTS) -C $(@D) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/mesa3d-headers/mesa3d-headers.mk b/bsp/buildroot/package/mesa3d-headers/mesa3d-headers.mk index c3b57e4e..35b1a714 100644 --- a/bsp/buildroot/package/mesa3d-headers/mesa3d-headers.mk +++ b/bsp/buildroot/package/mesa3d-headers/mesa3d-headers.mk @@ -12,7 +12,7 @@ endif # Not possible to directly refer to mesa3d variables, because of # first/second expansion trickery... -MESA3D_HEADERS_VERSION = 12.0.1 +MESA3D_HEADERS_VERSION = 13.0.4 MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz MESA3D_HEADERS_SITE = ftp://ftp.freedesktop.org/pub/mesa/$(MESA3D_HEADERS_VERSION) MESA3D_HEADERS_LICENSE = MIT, SGI, Khronos @@ -47,7 +47,7 @@ define MESA3D_HEADERS_INSTALL_DRI_PC $(INSTALL) -D -m 0644 $(@D)/include/GL/internal/dri_interface.h \ $(STAGING_DIR)/usr/include/GL/internal/dri_interface.h $(INSTALL) -D -m 0644 $(@D)/src/mesa/drivers/dri/dri.pc \ - $(STAGING_DIR)/usr/lib/pkg-config/dri.pc + $(STAGING_DIR)/usr/lib/pkgconfig/dri.pc endef endif # Xorg @@ -62,10 +62,6 @@ ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) MESA3D_HEADERS_DIRS += GLES GLES2 endif -ifeq ($(BR2_PACKAGE_HAS_LIBOPENVG),y) -MESA3D_HEADERS_DIRS += VG -endif - define MESA3D_HEADERS_BUILD_CMDS $(MESA3D_HEADERS_BUILD_DRI_PC) endef diff --git a/bsp/buildroot/package/mesa3d/0004-Fix-endianess-detection-with-musl-based-toolchains.patch b/bsp/buildroot/package/mesa3d/0004-Fix-endianess-detection-with-musl-based-toolchains.patch new file mode 100644 index 00000000..656705b4 --- /dev/null +++ b/bsp/buildroot/package/mesa3d/0004-Fix-endianess-detection-with-musl-based-toolchains.patch @@ -0,0 +1,65 @@ +From 61b076689b6308b1c9d0d84ee8654a47e65e67ae Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Fri, 4 Nov 2016 19:44:37 +0100 +Subject: [PATCH 1/1] Fix endianess detection with musl-based toolchains + +Musl does not define __GLIBC__ and will not provide a __MUSL__ macro: +http://wiki.musl-libc.org/wiki/FAQ#Q:_why_is_there_no_MUSL_macro_.3F + +This patch checks for the presence of endian.h and promotes the result +to src/amd/Makefile.addrlib.am which executes the broken build command. +Fixes compile errors detected by the autobuilder infrastructure of the +buildroot project: + +http://autobuild.buildroot.net/results/e27/e27a9a95f72dba3076549beb2a2ccfdbea2fcfee/ +http://autobuild.buildroot.net/results/e27/e27a9a95f72dba3076549beb2a2ccfdbea2fcfee/ + +Patch sent upstream: https://patchwork.freedesktop.org/patch/119961/ + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 1 + + src/amd/Makefile.addrlib.am | 1 + + src/util/u_endian.h | 2 +- + 3 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 4761c59..7991b52 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -786,6 +786,7 @@ fi + AC_HEADER_MAJOR + AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"]) + AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"]) ++AC_CHECK_HEADER([endian.h], [DEFINES="$DEFINES -DHAVE_ENDIAN_H"]) + AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"]) + AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"]) + +diff --git a/src/amd/Makefile.addrlib.am b/src/amd/Makefile.addrlib.am +index 64823fc..4e2fb1d 100644 +--- a/src/amd/Makefile.addrlib.am ++++ b/src/amd/Makefile.addrlib.am +@@ -28,6 +28,7 @@ addrlib_libamdgpu_addrlib_la_CPPFLAGS = \ + -I$(srcdir)/addrlib/core \ + -I$(srcdir)/addrlib/inc/chip/r800 \ + -I$(srcdir)/addrlib/r800/chip \ ++ $(DEFINES) \ + -DBRAHMA_BUILD=1 + + addrlib_libamdgpu_addrlib_la_CXXFLAGS = \ +diff --git a/src/util/u_endian.h b/src/util/u_endian.h +index b9d563d..266fb4a 100644 +--- a/src/util/u_endian.h ++++ b/src/util/u_endian.h +@@ -27,7 +27,7 @@ + #ifndef U_ENDIAN_H + #define U_ENDIAN_H + +-#if defined(__GLIBC__) || defined(ANDROID) ++#if defined(__GLIBC__) || defined(ANDROID) || defined(HAVE_ENDIAN_H) + #include + + #if __BYTE_ORDER == __LITTLE_ENDIAN +-- +2.10.1 + diff --git a/bsp/buildroot/package/mesa3d/0005-configure.ac-invert-order-for-wayland-scanner-check.patch b/bsp/buildroot/package/mesa3d/0005-configure.ac-invert-order-for-wayland-scanner-check.patch new file mode 100644 index 00000000..e32031ec --- /dev/null +++ b/bsp/buildroot/package/mesa3d/0005-configure.ac-invert-order-for-wayland-scanner-check.patch @@ -0,0 +1,39 @@ +From 60ee5191a0c074251862a15b12afdc9db0b2df38 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Thu, 17 Nov 2016 15:36:54 -0300 +Subject: [PATCH] configure.ac: invert order for wayland-scanner check + +When cross-compiling the .pc file might point to the wrong +wayland-scanner binary (target rather than host) resulting in a +non-executable and wrong scanner. +Try searching the PATH first, and if that fails fall back into +pkg-config. + +Signed-off-by: Gustavo Zacarias +--- + configure.ac | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 5f30ae8..461792e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2025,11 +2025,11 @@ if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then + AC_MSG_ERROR([cannot build egl state tracker without EGL library]) + fi + +-PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], +- WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, +- WAYLAND_SCANNER='') ++AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner]) + if test "x$WAYLAND_SCANNER" = x; then +- AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner]) ++ PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], ++ WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, ++ WAYLAND_SCANNER='') + fi + + # Do per-EGL platform setups and checks +-- +2.7.3 + diff --git a/bsp/buildroot/package/mesa3d/Config.in b/bsp/buildroot/package/mesa3d/Config.in index 45ca69c4..bbab9537 100644 --- a/bsp/buildroot/package/mesa3d/Config.in +++ b/bsp/buildroot/package/mesa3d/Config.in @@ -6,6 +6,7 @@ menuconfig BR2_PACKAGE_MESA3D depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL select BR2_PACKAGE_LIBDRM select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_HAS_LIBGL if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XPROTO_DRI2PROTO if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XPROTO_GLPROTO if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XPROTO_XF86DRIPROTO if BR2_PACKAGE_XORG7 @@ -21,21 +22,20 @@ menuconfig BR2_PACKAGE_MESA3D if BR2_PACKAGE_MESA3D -# inform the .mk file of gallium or dri driver selection +# inform the .mk file of gallium, dri or vulkan driver selection config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER select BR2_PACKAGE_MESA3D_DRIVER bool config BR2_PACKAGE_MESA3D_DRI_DRIVER select BR2_PACKAGE_MESA3D_DRIVER - select BR2_PACKAGE_HAS_LIBGL if BR2_PACKAGE_XORG7 select BR2_PACKAGE_XLIB_LIBXSHMFENCE if BR2_PACKAGE_XPROTO_DRI3PROTO select BR2_PACKAGE_XPROTO_PRESENTPROTO if BR2_PACKAGE_XPROTO_DRI3PROTO bool -config BR2_PACKAGE_PROVIDES_LIBGL - default "mesa3d" if BR2_PACKAGE_MESA3D_DRI_DRIVER && \ - BR2_PACKAGE_XORG7 +config BR2_PACKAGE_MESA3D_VULKAN_DRIVER + bool + select BR2_PACKAGE_MESA3D_DRIVER config BR2_PACKAGE_MESA3D_DRIVER bool @@ -136,6 +136,29 @@ config BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON help Legacy Radeon driver for R100 series GPUs. +comment "Vulkan drivers" + +config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL + bool "Vulkan Intel driver" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # memfd.h + depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert + depends on BR2_PACKAGE_XORG7 # xproto_dri3proto + # We need a SHA1 implementation. If either openssl or + # libgcrypt are already part of the build, we'll use one of + # them, otherwise, use the small libsha1 library. + select BR2_PACKAGE_LIBSHA1 if (!BR2_PACKAGE_OPENSSL && !BR2_PACKAGE_LIBGCRYPT) + select BR2_PACKAGE_MESA3D_DRI_DRIVER_I965 + select BR2_PACKAGE_MESA3D_VULKAN_DRIVER + select BR2_PACKAGE_XPROTO_DRI3PROTO + help + Vulkan driver for Intel hardware from Ivy Bridge onward. + +comment "intel vulkan depends on X.org and needs a glibc toolchain w/ headers >= 3.18" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 || \ + !BR2_TOOLCHAIN_USES_GLIBC || !BR2_PACKAGE_XORG7 + comment "Off-screen Rendering" config BR2_PACKAGE_MESA3D_OSMESA @@ -150,6 +173,7 @@ comment "Additional API Support" config BR2_PACKAGE_MESA3D_OPENGL_EGL bool "OpenGL EGL" select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBEGL_WAYLAND help Use the Khronos EGL APIs. EGL is a window manager for OpenGL applications similar to GLX, for X, and WGL, for Windows. @@ -163,6 +187,9 @@ config BR2_PACKAGE_MESA3D_OPENGL_ES endif # BR2_PACKAGE_MESA3D_DRIVER +config BR2_PACKAGE_PROVIDES_LIBGL + default "mesa3d" if BR2_PACKAGE_XORG7 + config BR2_PACKAGE_PROVIDES_LIBEGL default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_EGL diff --git a/bsp/buildroot/package/mesa3d/mesa3d.hash b/bsp/buildroot/package/mesa3d/mesa3d.hash index fa01128c..b3c4b777 100644 --- a/bsp/buildroot/package/mesa3d/mesa3d.hash +++ b/bsp/buildroot/package/mesa3d/mesa3d.hash @@ -1,2 +1,2 @@ -# From https://lists.freedesktop.org/archives/mesa-announce/2016-July/000227.html -sha256 bab24fb79f78c876073527f515ed871fc9c81d816f66c8a0b051d8d653896389 mesa-12.0.1.tar.xz +# From https://lists.freedesktop.org/archives/mesa-announce/2017-February/000294.html +sha256 a95d7ce8f7bd5f88585e4be3144a341236d8c0fc91f6feaec59bb8ba3120e726 mesa-13.0.4.tar.xz diff --git a/bsp/buildroot/package/mesa3d/mesa3d.mk b/bsp/buildroot/package/mesa3d/mesa3d.mk index 19dec49f..0c68dedf 100644 --- a/bsp/buildroot/package/mesa3d/mesa3d.mk +++ b/bsp/buildroot/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 12.0.1 +MESA3D_VERSION = 13.0.4 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = ftp://ftp.freedesktop.org/pub/mesa/$(MESA3D_VERSION) MESA3D_LICENSE = MIT, SGI, Khronos @@ -41,13 +41,6 @@ MESA3D_DEPENDENCIES += libsha1 MESA3D_CONF_OPTS += --with-sha1=libsha1 endif -ifeq ($(BR2_PACKAGE_HAS_UDEV),y) -MESA3D_DEPENDENCIES += udev -MESA3D_CONF_OPTS += --disable-sysfs -else -MESA3D_CONF_OPTS += --enable-sysfs -endif - ifeq ($(BR2_PACKAGE_XORG7),y) MESA3D_DEPENDENCIES += \ xproto_xf86driproto \ @@ -86,6 +79,8 @@ MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I915) += i915 MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I965) += i965 MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU) += nouveau MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += radeon +# Vulkan Drivers +MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL) += intel ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),) MESA3D_CONF_OPTS += \ @@ -109,16 +104,20 @@ endif ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y) MESA3D_DEPENDENCIES += xlib_libXxf86vm endif -# libGL is only provided for a full xorg stack -ifeq ($(BR2_PACKAGE_XORG7),y) -MESA3D_PROVIDES += libgl -endif MESA3D_CONF_OPTS += \ --enable-shared-glapi \ --enable-driglx-direct \ --with-dri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y)) endif +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),) +MESA3D_CONF_OPTS += \ + --without-vulkan-drivers +else +MESA3D_CONF_OPTS += \ + --with-vulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y)) +endif + # APIs ifeq ($(BR2_PACKAGE_MESA3D_OSMESA),y) @@ -135,6 +134,17 @@ MESA3D_CONF_OPTS += --enable-opengl --enable-dri # we do not need libva support in mesa3d, therefore disable this option MESA3D_CONF_OPTS += --disable-va +# libGL is only provided for a full xorg stack +ifeq ($(BR2_PACKAGE_XORG7),y) +MESA3D_PROVIDES += libgl +else +define MESA3D_REMOVE_OPENGL_HEADERS + rm -rf $(STAGING_DIR)/usr/include/GL/ +endef + +MESA3D_POST_INSTALL_STAGING_HOOKS += MESA3D_REMOVE_OPENGL_HEADERS +endif + ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) MESA3D_PROVIDES += libegl ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y) diff --git a/bsp/buildroot/package/mfgtools/Config.in.host b/bsp/buildroot/package/mfgtools/Config.in.host new file mode 100644 index 00000000..1cb5a7f0 --- /dev/null +++ b/bsp/buildroot/package/mfgtools/Config.in.host @@ -0,0 +1,14 @@ +comment "mfgtools needs host gcc >= 4.8" + depends on !BR2_HOST_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_HOST_MFGTOOLS + bool "host mfgtools" + depends on BR2_arm + depends on BR2_HOST_GCC_AT_LEAST_4_8 # needs C++11 + help + This package contains the Freescale manufacturing tool. + It is designed to program firmware to i.MX boards during + production. The communication is done over USB using the + Freescale UTP protocol. + + https://github.com/NXPmicro/mfgtools diff --git a/bsp/buildroot/package/mfgtools/mfgtools.hash b/bsp/buildroot/package/mfgtools/mfgtools.hash new file mode 100644 index 00000000..e73a7fa1 --- /dev/null +++ b/bsp/buildroot/package/mfgtools/mfgtools.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 6ce93a33c269282df305cf7e517d2d14fde78203537d8ea75b064966afe48464 mfgtools-b219fc219a35c365010897ed093c40750f8cdac6.tar.gz diff --git a/bsp/buildroot/package/mfgtools/mfgtools.mk b/bsp/buildroot/package/mfgtools/mfgtools.mk new file mode 100644 index 00000000..cc243524 --- /dev/null +++ b/bsp/buildroot/package/mfgtools/mfgtools.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# mfgtools +# +################################################################################ + +MFGTOOLS_VERSION = b219fc219a35c365010897ed093c40750f8cdac6 +MFGTOOLS_SITE = $(call github,NXPmicro,mfgtools,$(MFGTOOLS_VERSION)) +MFGTOOLS_SUBDIR = MfgToolLib +MFGTOOLS_LICENSE = BSD-3c or CPOL +MFGTOOLS_LICENSE_FILES = LICENSE CPOL.htm +HOST_MFGTOOLS_DEPENDENCIES = host-libusb + +HOST_MFGTOOLS_CFLAGS = \ + $(HOST_CFLAGS) $(HOST_LDFLAGS) -std=c++11 -lpthread \ + -L$(@D)/MfgToolLib -lMfgToolLib -I$(@D)/MfgToolLib \ + -lusb-1.0 -I$(HOST_DIR)/usr/include/libusb-1.0 \ + -fpermissive -Wno-write-strings + +define HOST_MFGTOOLS_CLI_BUILD + $(HOST_CONFIGURE_OPTS) $(MAKE) CC="$(HOSTCXX)" \ + CFLAGS="$(HOST_MFGTOOLS_CFLAGS)" -C $(@D)/TestPrgm +endef + +HOST_MFGTOOLS_POST_BUILD_HOOKS += HOST_MFGTOOLS_CLI_BUILD + +define HOST_MFGTOOLS_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/MfgToolLib/libMfgToolLib.so \ + $(HOST_DIR)/usr/lib/libMfgToolLib.so + $(INSTALL) -D -m 755 $(@D)/TestPrgm/mfgtoolcli \ + $(HOST_DIR)/usr/bin/mfgtoolcli +endef + +$(eval $(host-cmake-package)) diff --git a/bsp/buildroot/package/mfgtools/readme.txt b/bsp/buildroot/package/mfgtools/readme.txt new file mode 100644 index 00000000..d54781f1 --- /dev/null +++ b/bsp/buildroot/package/mfgtools/readme.txt @@ -0,0 +1,69 @@ +MfgTools Howto +============== + +1. Build your mfgtool image + +Make sure to enable the following Buildroot options: + +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_IMX_UUC=y +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y + +Also modify your kernel configuration to have: + +CONFIG_USB_GADGET=y +CONFIG_USB_MASS_STORAGE=y +CONFIG_FSL_UTP=y +CONFIG_MMC_BLOCK_MINORS=16 + +2. Go into the output and create the necessary folders + +$ cd output +$ mkdir -p "Profiles/Linux/OS Firmware/firmware" + +3. Create your XML update script named ucl2.xml + +You can find a sample XML at: + +$ wget https://storage.googleapis.com/boundarydevices.com/ucl2.xml \ + -O Profiles/Linux/OS\ Firmware/ucl2.xml + +4. Copy the U-Boot, Kernel and initramfs images to the appropriate +folder + +$ cp images/u-boot.imx images/zImage images/imx6q-sabrelite.dtb \ + images/rootfs.cpio.uboot Profiles/Linux/OS\ Firmware/firmware/ + +5. Copy the prebuilt binaries to be flashed + +Depending on your ucl2.xml file, the sample doesn't flash anything. + +6. Run the MfgTools client: + +$ ./host/usr/bin/mfgtoolcli -l mmc -s uboot_defconfig=imx \ + -s dtbname=imx6q-sabrelite.dtb -s initramfs=rootfs.cpio.uboot \ + -s mmc=1 -p 1 + +For more information about the tools options, please read the +"Manufacturing Tool V2 Quick Start Guide.docx" documentation contained +in every mfgtools package from NXP website[1]. + +Note: All the above commands require your Linux host user to have +permissions to access the USB devices. Please make sure to have udev +rules that allow the user to communicate with the BootROM IDs +(Freescale USB recovery) as well as the one used for the UTP Linux +image (0x066F:0x37FF). Using 'sudo' in front of the mfgtoolcli +command would also grant you the necessary permission but it is *not* +recommended. + +Also, if your U-Boot environment doesn't include mfgtools bootargs, +make sure to set the following: + +setenv bootargs "console=${console},${baudrate} g_mass_storage.stall=0 \ + g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F \ + g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber=\"\" \ + g_mass_storage.file=/fat" + +[1] http://www.nxp.com/products/software-and-tools/software-development-tools/i.mx-software-and-tools/i.mx-6-series-software-and-development-tool-resources:IMX6_SW diff --git a/bsp/buildroot/package/micropython-lib/Config.in b/bsp/buildroot/package/micropython-lib/Config.in index a7e017be..599af779 100644 --- a/bsp/buildroot/package/micropython-lib/Config.in +++ b/bsp/buildroot/package/micropython-lib/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_MICROPYTHON_LIB bool "micropython-lib" + select BR2_PACKAGE_PCRE # runtime depends on BR2_PACKAGE_MICROPYTHON help Core Python libraries ported to MicroPython. diff --git a/bsp/buildroot/package/micropython-lib/micropython-lib.hash b/bsp/buildroot/package/micropython-lib/micropython-lib.hash index 30d0cf88..bc0c22ef 100644 --- a/bsp/buildroot/package/micropython-lib/micropython-lib.hash +++ b/bsp/buildroot/package/micropython-lib/micropython-lib.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 e659444fadd755c1b5dbff091aa1b23a835e7361da3a32f38774bd39a15937ad micropython-lib-v1.0.tar.gz +sha256 eb696009ff8c33004211e484649b34edb14f3efb2ff618942bc8888716757a55 micropython-lib-v1.8.6.tar.gz diff --git a/bsp/buildroot/package/micropython-lib/micropython-lib.mk b/bsp/buildroot/package/micropython-lib/micropython-lib.mk index 4ed2120a..066572e5 100644 --- a/bsp/buildroot/package/micropython-lib/micropython-lib.mk +++ b/bsp/buildroot/package/micropython-lib/micropython-lib.mk @@ -4,7 +4,7 @@ # ################################################################################ -MICROPYTHON_LIB_VERSION = v1.0 +MICROPYTHON_LIB_VERSION = v1.8.6 MICROPYTHON_LIB_SITE = $(call github,micropython,micropython-lib,$(MICROPYTHON_LIB_VERSION)) MICROPYTHON_LIB_LICENSE = Python software foundation license v2 (some modules), MIT (everything else) MICROPYTHON_LIB_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/micropython/micropython.hash b/bsp/buildroot/package/micropython/micropython.hash index b3a7c22c..6ab7b10b 100644 --- a/bsp/buildroot/package/micropython/micropython.hash +++ b/bsp/buildroot/package/micropython/micropython.hash @@ -1,2 +1,2 @@ #locally computed -sha256 f8ea3faffa797de1a06c16c8f57c784c665b318ca08ac17f74dcbc95322d47de micropython-v1.6.tar.gz +sha256 55dd751c4c812809841fd06f4729b8341171c4b6c1dc28a9412455282554f8a5 micropython-v1.8.7.tar.gz diff --git a/bsp/buildroot/package/micropython/micropython.mk b/bsp/buildroot/package/micropython/micropython.mk index 853caa2c..8336fb43 100644 --- a/bsp/buildroot/package/micropython/micropython.mk +++ b/bsp/buildroot/package/micropython/micropython.mk @@ -4,7 +4,7 @@ # ################################################################################ -MICROPYTHON_VERSION = v1.6 +MICROPYTHON_VERSION = v1.8.7 MICROPYTHON_SITE = $(call github,micropython,micropython,$(MICROPYTHON_VERSION)) MICROPYTHON_LICENSE = MIT MICROPYTHON_LICENSE_FILES = LICENSE @@ -16,14 +16,23 @@ ifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_arm)$(BR2_armeb),) MICROPYTHON_CFLAGS = -DMICROPY_GCREGS_SETJMP=1 endif +# When building from a tarball we don't have some of the dependencies that are in +# the git repository as submodules +MICROPYTHON_MAKE_OPTS = MICROPY_PY_BTREE=0 +MICROPYTHON_MAKE_OPTS += MICROPY_PY_USSL=0 + define MICROPYTHON_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/unix \ + $(MICROPYTHON_MAKE_OPTS) \ CROSS_COMPILE=$(TARGET_CROSS) \ CFLAGS_EXTRA=$(MICROPYTHON_CFLAGS) endef define MICROPYTHON_INSTALL_TARGET_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/unix \ + $(MICROPYTHON_MAKE_OPTS) \ + CROSS_COMPILE=$(TARGET_CROSS) \ + CFLAGS_EXTRA=$(MICROPYTHON_CFLAGS) \ DESTDIR=$(TARGET_DIR) \ PREFIX=$(TARGET_DIR)/usr \ install diff --git a/bsp/buildroot/package/mii-diag/mii-diag.mk b/bsp/buildroot/package/mii-diag/mii-diag.mk index ae8defd9..6efd5be8 100644 --- a/bsp/buildroot/package/mii-diag/mii-diag.mk +++ b/bsp/buildroot/package/mii-diag/mii-diag.mk @@ -22,11 +22,11 @@ endef MII_DIAG_POST_PATCH_HOOKS = MII_DIAG_DEBIAN_PATCHES define MII_DIAG_BUILD_CMDS - $(MAKE) $(MII_DIAG_MAKE_OPTS) -C $(@D) mii-diag + $(TARGET_MAKE_ENV) $(MAKE) $(MII_DIAG_MAKE_OPTS) -C $(@D) mii-diag endef define MII_DIAG_INSTALL_TARGET_CMDS - $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install-mii-diag + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install-mii-diag endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/mimic/Config.in b/bsp/buildroot/package/mimic/Config.in new file mode 100644 index 00000000..79641d37 --- /dev/null +++ b/bsp/buildroot/package/mimic/Config.in @@ -0,0 +1,41 @@ +comment "mimic needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_MIMIC + bool "mimic" + depends on BR2_USE_WCHAR + help + Mimic is a fast, lightweight Text-to-speech engine developed + by Mycroft A.I. and VocaliD, based on Carnegie Mellon + University's Flite (Festival-Lite) software. Mimic takes in + text and reads it out loud to create a high quality voice. + + https://github.com/MycroftAI/mimic + +if BR2_PACKAGE_MIMIC + +choice + prompt "audio backend" + default BR2_PACKAGE_MIMIC_AUDIO_BACKEND_NONE + +config BR2_PACKAGE_MIMIC_AUDIO_BACKEND_NONE + bool "none" + help + With no backend, mimic will only be able to produce .wav + files. + +config BR2_PACKAGE_MIMIC_AUDIO_BACKEND_ALSA + bool "alsa" + depends on BR2_PACKAGE_ALSA_LIB + +config BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PORTAUDIO + bool "alsa via portaudio" + depends on BR2_PACKAGE_PORTAUDIO + +config BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PULSEAUDIO + bool "pulseaudio" + depends on BR2_PACKAGE_PULSEAUDIO + +endchoice + +endif # BR2_PACKAGE_MIMIC diff --git a/bsp/buildroot/package/mimic/mimic.hash b/bsp/buildroot/package/mimic/mimic.hash new file mode 100644 index 00000000..39d01654 --- /dev/null +++ b/bsp/buildroot/package/mimic/mimic.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 725003c9972d5b67c49d5ea6a89cb26b63414ff2c7adbbaf9200cf9eb55f80eb mimic-1.1.0.tar.gz diff --git a/bsp/buildroot/package/mimic/mimic.mk b/bsp/buildroot/package/mimic/mimic.mk new file mode 100644 index 00000000..2d246561 --- /dev/null +++ b/bsp/buildroot/package/mimic/mimic.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# mimic +# +################################################################################ + +MIMIC_VERSION = 1.1.0 +MIMIC_SITE = $(call github,MycroftAI,mimic,$(MIMIC_VERSION)) +MIMIC_LICENSE = MIT +MIMIC_LICENSE_FILES = COPYING + +MIMIC_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_ALSA),y) +MIMIC_AUDIO_BACKEND = alsa +MIMIC_DEPENDENCIES += alsa-lib +else ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PORTAUDIO),y) +MIMIC_AUDIO_BACKEND = portaudio +MIMIC_DEPENDENCIES += portaudio +else ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PULSEAUDIO),y) +MIMIC_AUDIO_BACKEND = pulseaudio +MIMIC_DEPENDENCIES += pulseaudio +else ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_NONE),y) +MIMIC_AUDIO_BACKEND = none +endif + +MIMIC_CONF_OPTS += --with-audio=$(MIMIC_AUDIO_BACKEND) + +$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/mkpasswd/Config.in.host b/bsp/buildroot/package/mkpasswd/Config.in.host new file mode 100644 index 00000000..93774bdf --- /dev/null +++ b/bsp/buildroot/package/mkpasswd/Config.in.host @@ -0,0 +1,2 @@ +config BR2_PACKAGE_HOST_MKPASSWD + bool "host mkpasswd" diff --git a/bsp/buildroot/package/mkpimage/mkpimage.c b/bsp/buildroot/package/mkpimage/mkpimage.c index 1a7a66d9..d7fe1b1b 100644 --- a/bsp/buildroot/package/mkpimage/mkpimage.c +++ b/bsp/buildroot/package/mkpimage/mkpimage.c @@ -12,7 +12,12 @@ #define VALIDATION_WORD 0x31305341 -#define MAX_IMAGE_SIZE (60 * 1024 - 4) +#define BRANCH_INST 0xea /* ARM opcode for "b" (unconditional branch) */ + +#define MAX_V0IMAGE_SIZE (60 * 1024 - 4) +/* Max size without authentication is 224 KB, due to memory used by + * the ROM boot code as a workspace out of the 256 KB of OCRAM */ +#define MAX_V1IMAGE_SIZE (224 * 1024 - 4) static int add_barebox_header; @@ -20,9 +25,21 @@ struct socfpga_header { uint8_t validation_word[4]; uint8_t version; uint8_t flags; - uint8_t program_length[2]; - uint8_t spare[2]; - uint8_t checksum[2]; + union { + struct { + uint8_t program_length[2]; + uint8_t spare[2]; + uint8_t checksum[2]; + uint8_t start_vector[4]; + } v0; + struct { + uint8_t header_length[2]; + uint8_t program_length[4]; + uint8_t entry_offset[4]; + uint8_t spare[2]; + uint8_t checksum[2]; + } v1; + }; }; static uint32_t bb_header[] = { @@ -45,7 +62,7 @@ static uint32_t bb_header[] = { 0x00000000, /* socfpga header */ 0x00000000, /* socfpga header */ 0x00000000, /* socfpga header */ - 0xea00006b, /* entry. b 0x200 */ + 0xea00006b, /* entry. b 0x200 (offset may be adjusted) */ }; static int read_full(int fd, void *buf, size_t size) @@ -84,7 +101,7 @@ static int write_full(int fd, void *buf, size_t size) return insize; } -static uint32_t crc_table[256] = { +static const uint32_t crc_table[256] = { 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, @@ -140,37 +157,94 @@ uint32_t crc32(uint32_t crc, void *_buf, int length) return crc; } -static int add_socfpga_header(void *buf, int size) +/* Create an ARM relative branch instuction + * branch is where the instruction will be placed and dest points to where + * it should branch too. */ +static void branch(uint8_t *branch, uint8_t *dest) +{ + int offset = dest - branch - 8; /* PC is offset +8 bytes on ARM */ + + branch[0] = (offset >> 2) & 0xff; /* instruction uses offset/4 */ + branch[1] = (offset >> 10) & 0xff; + branch[2] = (offset >> 18) & 0xff; + branch[3] = BRANCH_INST; +} + +/* start_addr is where the socfpga header's start instruction should branch to. + * It should be relative to the start of buf */ +static int add_socfpga_header(void *buf, size_t size, unsigned start_addr, unsigned version) { struct socfpga_header *header = buf + 0x40; - uint8_t *buf_header = buf + 0x40; + void *entry; + uint8_t *bufp, *sumendp; uint32_t *crc; unsigned checksum; - int length = size >> 2; - int i; if (size & 0x3) { fprintf(stderr, "%s: size must be multiple of 4\n", __func__); return -EINVAL; } + /* Absolute address of entry point in buf */ + entry = buf + start_addr; + if (version == 0) { + sumendp = &header->v0.checksum[0]; + } else { + sumendp = &header->v1.checksum[0]; + + /* The ROM loader can't handle a negative offset */ + if (entry < (void*)header) { + /* add a trampoline branch inst after end of the header */ + uint8_t *trampoline = (void*)(header + 1); + branch(trampoline, entry); + + /* and then make the trampoline the entry point */ + entry = trampoline; + } + /* Calculate start address as offset relative to start of header */ + start_addr = entry - (void*)header; + } + header->validation_word[0] = VALIDATION_WORD & 0xff; header->validation_word[1] = (VALIDATION_WORD >> 8) & 0xff; header->validation_word[2] = (VALIDATION_WORD >> 16) & 0xff; header->validation_word[3] = (VALIDATION_WORD >> 24) & 0xff; - header->version = 0; + header->version = version; header->flags = 0; - header->program_length[0] = length & 0xff; - header->program_length[1] = (length >> 8) & 0xff; - header->spare[0] = 0; - header->spare[1] = 0; + if (version == 0) { + header->v0.program_length[0] = (size >> 2) & 0xff; /* length in words */ + header->v0.program_length[1] = (size >> 10) & 0xff; + header->v0.spare[0] = 0; + header->v0.spare[1] = 0; + branch(header->v0.start_vector, entry); + } else { + header->v1.header_length[0] = (sizeof(*header) >> 0) & 0xff; + header->v1.header_length[1] = (sizeof(*header) >> 8) & 0xff; + header->v1.program_length[0] = (size >> 0) & 0xff; + header->v1.program_length[1] = (size >> 8) & 0xff; + header->v1.program_length[2] = (size >> 16) & 0xff; + header->v1.program_length[3] = (size >> 24) & 0xff; + header->v1.entry_offset[0] = (start_addr >> 0) & 0xff; + header->v1.entry_offset[1] = (start_addr >> 8) & 0xff; + header->v1.entry_offset[2] = (start_addr >> 16) & 0xff; + header->v1.entry_offset[3] = (start_addr >> 24) & 0xff; + header->v1.spare[0] = 0; + header->v1.spare[1] = 0; + } + + /* Sum from beginning of header to start of checksum field */ checksum = 0; - for (i = 0; i < sizeof(*header) - 2; i++) - checksum += buf_header[i]; + for (bufp = (uint8_t*)header; bufp < sumendp; bufp++) + checksum += *bufp; - header->checksum[0] = checksum & 0xff;; - header->checksum[1] = (checksum >> 8) & 0xff;; + if (version == 0) { + header->v0.checksum[0] = checksum & 0xff;; + header->v0.checksum[1] = (checksum >> 8) & 0xff;; + } else { + header->v1.checksum[0] = checksum & 0xff;; + header->v1.checksum[1] = (checksum >> 8) & 0xff;; + } crc = buf + size - sizeof(uint32_t); @@ -182,7 +256,7 @@ static int add_socfpga_header(void *buf, int size) static void usage(const char *prgname) { - fprintf(stderr, "usage: %s [OPTIONS] \n", prgname); + fprintf(stderr, "usage: %s [-hb] [-v version] -o \n", prgname); } int main(int argc, char *argv[]) @@ -192,16 +266,23 @@ int main(int argc, char *argv[]) struct stat s; void *buf; int fd; - int min_image_size = 80; - int max_image_size = MAX_IMAGE_SIZE; + int max_image_size, min_image_size = 80; int addsize = 0, pad; + unsigned int version = 0; - while ((opt = getopt(argc, argv, "o:hb")) != -1) { + while ((opt = getopt(argc, argv, "o:hbv:")) != -1) { switch (opt) { + case 'v': + version = atoi(optarg); + if (version > 1) { + printf("Versions supported: 0 or 1\n"); + usage(argv[0]); + exit(1); + } + break; case 'b': add_barebox_header = 1; min_image_size = 0; - max_image_size = MAX_IMAGE_SIZE - 512; addsize = 512; break; case 'h': @@ -211,15 +292,21 @@ int main(int argc, char *argv[]) outfile = optarg; break; default: + usage(argv[0]); exit(1); } } + if (version == 0) { + max_image_size = MAX_V0IMAGE_SIZE; + } else { + max_image_size = MAX_V1IMAGE_SIZE; + } + max_image_size -= addsize; - if (optind == argc) { + if (optind == argc || !outfile) { usage(argv[0]); exit(1); } - infile = argv[optind]; ret = stat(infile, &s); @@ -229,7 +316,8 @@ int main(int argc, char *argv[]) } if (s.st_size < min_image_size) { - fprintf(stderr, "input image too small. Minimum is 80 bytes\n"); + fprintf(stderr, "input image too small. Minimum is %d bytes\n", + min_image_size); exit(1); } @@ -240,7 +328,7 @@ int main(int argc, char *argv[]) } fd = open(infile, O_RDONLY); - if (fd < 0) { + if (fd == -1) { perror("open infile"); exit(1); } @@ -267,7 +355,8 @@ int main(int argc, char *argv[]) memcpy(buf, bb_header, sizeof(bb_header)); } - ret = add_socfpga_header(buf, s.st_size + 4 + addsize + pad); + ret = add_socfpga_header(buf, s.st_size + 4 + addsize + pad, addsize, + version); if (ret) exit(1); diff --git a/bsp/buildroot/package/mkpimage/mkpimage.mk b/bsp/buildroot/package/mkpimage/mkpimage.mk index c30a6809..04b2ef08 100644 --- a/bsp/buildroot/package/mkpimage/mkpimage.mk +++ b/bsp/buildroot/package/mkpimage/mkpimage.mk @@ -4,11 +4,11 @@ # ################################################################################ -# source included in the package -# came from barebox's repository: -# http://git.pengutronix.de/?p=barebox.git;a=blob;f=scripts/socfpga_mkimage.c;h=1a7a66d98841e9f52c3ea49c651286aa1412c9a5;hb=HEAD HOST_MKPIMAGE_LICENSE = GPLv2 +# source included in the package +# came from barebox's repository: +# https://git.pengutronix.de/cgit/barebox/tree/scripts/socfpga_mkimage.c?id=55d29525146dcd280987dfd565bfd34f08858fb3 define HOST_MKPIMAGE_BUILD_CMDS $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ package/mkpimage/mkpimage.c -o $(@D)/mkpimage diff --git a/bsp/buildroot/package/mksh/Config.in b/bsp/buildroot/package/mksh/Config.in new file mode 100644 index 00000000..55d1cc15 --- /dev/null +++ b/bsp/buildroot/package/mksh/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_MKSH + bool "mksh" + depends on BR2_USE_MMU # fork() + help + The MirBSD Korn Shell, + + mksh is a successor of pdksh but not affiliated with the + pdksh developers or contributors. mksh is not affiliated + with the AT&T Korn Shell, its past or present owners, + other than that both attempt to implement the Korn Shell + programming language. + + mksh targets users who desire a compact, fast, reliable, + secure shell not cut off modern extensions; a shell with + Unicode support; an actively developed, current, and + portable product; one with developers that listen to + their users’ requests and implement them if they + actually make sense. + + mksh aims to replace pdksh in all but very rare use cases + (such as support for checking the Unix mbox) and in all + operating environments + (thus including patches from pdksh on e.g. Debian). + + http://mirbsd.de/mksh diff --git a/bsp/buildroot/package/mksh/mksh.hash b/bsp/buildroot/package/mksh/mksh.hash new file mode 100644 index 00000000..e92acd93 --- /dev/null +++ b/bsp/buildroot/package/mksh/mksh.hash @@ -0,0 +1,4 @@ +# From http://www.mirbsd.org/mksh.htm#build +md5 be0a6fb93b4a5f927bcc1893bb6692f8 mksh-R54.tgz +# Calculated based on the hash above +sha256 8bce3837c386684aa7780f085f1a4dbd5e3e26fb5c528ee0d41ae29af7f39013 mksh-R54.tgz diff --git a/bsp/buildroot/package/mksh/mksh.mk b/bsp/buildroot/package/mksh/mksh.mk new file mode 100644 index 00000000..4d91bfcf --- /dev/null +++ b/bsp/buildroot/package/mksh/mksh.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# mksh +# +################################################################################ + +MKSH_VERSION = R54 +MKSH_SOURCE = mksh-$(MKSH_VERSION).tgz +MKSH_SITE = https://www.mirbsd.org/MirOS/dist/mir/mksh +# For MirOS License see https://www.mirbsd.org/TaC-mksh.txt +MKSH_LICENSE = MirOS, ISC +MKSH_LICENSE_FILES = mksh.1 + +define MKSH_BUILD_CMDS + cd $(@D) && $(TARGET_MAKE_ENV) \ + TARGET_OS=Linux $(TARGET_CONFIGURE_OPTS) \ + sh ./Build.sh +endef + +define MKSH_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/mksh $(TARGET_DIR)/bin/mksh +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/mmc-utils/mmc-utils.mk b/bsp/buildroot/package/mmc-utils/mmc-utils.mk index 82468bcc..7473a1b3 100644 --- a/bsp/buildroot/package/mmc-utils/mmc-utils.mk +++ b/bsp/buildroot/package/mmc-utils/mmc-utils.mk @@ -4,7 +4,7 @@ # ################################################################################ -MMC_UTILS_VERSION = d0b46442b50794217e53b2455c1344c548d9d088 +MMC_UTILS_VERSION = 2cb6695e8dec00d887bdd5309d1b57d836fcd214 MMC_UTILS_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git MMC_UTILS_LICENSE = GPLv2 diff --git a/bsp/buildroot/package/moarvm/Config.in b/bsp/buildroot/package/moarvm/Config.in index 3e0a1045..c318ab4b 100644 --- a/bsp/buildroot/package/moarvm/Config.in +++ b/bsp/buildroot/package/moarvm/Config.in @@ -1,23 +1,27 @@ config BR2_PACKAGE_MOARVM bool "moarvm" - depends on BR2_TOOLCHAIN_HAS_THREADS # libuv + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv depends on !BR2_STATIC_LIBS # libuv depends on BR2_USE_MMU # libuv depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS # libatomic_ops # needs AO_fetch_compare_and_swap, not implemented for sparcv8/sparcv9 depends on !BR2_sparc64 && !BR2_sparc + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv select BR2_PACKAGE_LIBUV select BR2_PACKAGE_LIBTOMMATH select BR2_PACKAGE_LIBATOMIC_OPS + # dyncall does not work on MIPS; libffi needs to be used. + # See: https://github.com/MoarVM/MoarVM/issues/222 + select BR2_PACKAGE_LIBFFI if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el help Short for "Metamodel On A Runtime", MoarVM is a virtual machine built especially for Rakudo Perl 6 and the NQP Compiler Toolchain. http://moarvm.com -comment "moarvm needs a toolchain w/ threads, dynamic library" - depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS +comment "moarvm needs a toolchain w/ NPTL, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS depends on BR2_USE_MMU depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS depends on !BR2_sparc64 && !BR2_sparc - + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/bsp/buildroot/package/moarvm/moarvm.hash b/bsp/buildroot/package/moarvm/moarvm.hash index f045f4fa..e6335ab7 100644 --- a/bsp/buildroot/package/moarvm/moarvm.hash +++ b/bsp/buildroot/package/moarvm/moarvm.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 6fe9000daada59535747f2557cc73573241ba8a6044271caf1647aa37be33c6d MoarVM-2016.04.tar.gz +sha256 2074693a42a7f31218bf69b70fd5b73d6fd1a1d0e31eaf3f528e204963e94c53 MoarVM-2017.01.tar.gz diff --git a/bsp/buildroot/package/moarvm/moarvm.mk b/bsp/buildroot/package/moarvm/moarvm.mk index ee58f766..b459474a 100644 --- a/bsp/buildroot/package/moarvm/moarvm.mk +++ b/bsp/buildroot/package/moarvm/moarvm.mk @@ -4,13 +4,13 @@ # ################################################################################ -MOARVM_VERSION = 2016.04 +MOARVM_VERSION = 2017.01 MOARVM_SITE = http://moarvm.com/releases MOARVM_SOURCE = MoarVM-$(MOARVM_VERSION).tar.gz MOARVM_LICENSE = Artistic-2.0 MOARVM_LICENSE_FILES = Artistic2.txt MOARVM_INSTALL_STAGING = YES -MOARVM_DEPENDENCIES = host-luajit libuv libtommath libatomic_ops +MOARVM_DEPENDENCIES = host-luajit host-pkgconf libuv libtommath libatomic_ops MOARVM_CONF_OPTS = \ --build=$(GNU_HOST_NAME) \ @@ -19,29 +19,35 @@ MOARVM_CONF_OPTS = \ --cc="$(TARGET_CC)" \ --ld="$(TARGET_CC)" \ --prefix="/usr" \ + --pkgconfig=$(PKG_CONFIG_HOST_BINARY) \ --lua=$(HOST_DIR)/usr/bin/luajit \ --has-libuv \ --has-libtommath \ --has-libatomic +ifeq ($(BR2_PACKAGE_LIBFFI),y) +MOARVM_CONF_OPTS += --has-libffi +MOARVM_DEPENDENCIES += libffi +endif + ifeq ($(BR2_ENDIAN),"BIG") MOARVM_CONF_OPTS += --big-endian endif define MOARVM_CONFIGURE_CMDS - (cd $(@D); perl Configure.pl $(MOARVM_CONF_OPTS)) + (cd $(@D); $(TARGET_MAKE_ENV) perl Configure.pl $(MOARVM_CONF_OPTS)) endef define MOARVM_BUILD_CMDS - $(MAKE) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) endef define MOARVM_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install endef define MOARVM_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash b/bsp/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash index 54c7a99d..5ab2e318 100644 --- a/bsp/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash +++ b/bsp/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash @@ -1,2 +1,2 @@ -# From http://ftp.gnome.org/pub/GNOME/sources/mobile-broadband-provider-info/20120614/mobile-broadband-provider-info-20120614.sha256sum -sha256 72507a732e0cd16cf27424bb094b1c7a03e2206c119ad124722a283e587755f1 mobile-broadband-provider-info-20120614.tar.xz +# From http://ftp.gnome.org/pub/GNOME/sources/mobile-broadband-provider-info/20151214/mobile-broadband-provider-info-20151214.sha256sum +sha256 8ae45d6f10fed9750e259935804c4f40a4372bb119f0504187e4221896b205a4 mobile-broadband-provider-info-20151214.tar.xz diff --git a/bsp/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk b/bsp/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk index f2a11363..1a68708d 100644 --- a/bsp/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk +++ b/bsp/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk @@ -4,7 +4,7 @@ # ################################################################################ -MOBILE_BROADBAND_PROVIDER_INFO_VERSION = 20120614 +MOBILE_BROADBAND_PROVIDER_INFO_VERSION = 20151214 MOBILE_BROADBAND_PROVIDER_INFO_SITE = http://ftp.gnome.org/pub/GNOME/sources/mobile-broadband-provider-info/$(MOBILE_BROADBAND_PROVIDER_INFO_VERSION) MOBILE_BROADBAND_PROVIDER_INFO_SOURCE = mobile-broadband-provider-info-$(MOBILE_BROADBAND_PROVIDER_INFO_VERSION).tar.xz MOBILE_BROADBAND_PROVIDER_INFO_LICENSE = Public domain diff --git a/bsp/buildroot/package/modem-manager/modem-manager.hash b/bsp/buildroot/package/modem-manager/modem-manager.hash index 9e834889..481f7dd4 100644 --- a/bsp/buildroot/package/modem-manager/modem-manager.hash +++ b/bsp/buildroot/package/modem-manager/modem-manager.hash @@ -1,2 +1,2 @@ -# Locally computed: -sha256 a94f4657a8fa6835e2734fcc6edf20aa8c8d452f62299d7748541021c3eb2445 ModemManager-1.6.0.tar.xz +# Locally computed +sha256 e4544398d9c166f8e13fe7c97149f262ad1fb48af980e0d4f9c34013920c6393 ModemManager-1.6.2.tar.xz diff --git a/bsp/buildroot/package/modem-manager/modem-manager.mk b/bsp/buildroot/package/modem-manager/modem-manager.mk index 252292a1..c74c2243 100644 --- a/bsp/buildroot/package/modem-manager/modem-manager.mk +++ b/bsp/buildroot/package/modem-manager/modem-manager.mk @@ -4,7 +4,7 @@ # ################################################################################ -MODEM_MANAGER_VERSION = 1.6.0 +MODEM_MANAGER_VERSION = 1.6.2 MODEM_MANAGER_SOURCE = ModemManager-$(MODEM_MANAGER_VERSION).tar.xz MODEM_MANAGER_SITE = http://www.freedesktop.org/software/ModemManager MODEM_MANAGER_LICENSE = GPLv2+ (programs, plugins), LGPLv2+ (libmm-glib) diff --git a/bsp/buildroot/package/mongoose/mongoose.mk b/bsp/buildroot/package/mongoose/mongoose.mk index 98f65255..7dfa1198 100644 --- a/bsp/buildroot/package/mongoose/mongoose.mk +++ b/bsp/buildroot/package/mongoose/mongoose.mk @@ -19,8 +19,8 @@ MONGOOSE_CFLAGS += -DNS_ENABLE_SSL -lssl -lcrypto -lz endif define MONGOOSE_BUILD_CMDS - $(TARGET_CC) -c $(@D)/mongoose.c $(MONGOOSE_CFLAGS) -o $(@D)/mongoose.o - $(TARGET_AR) rcs $(@D)/libmongoose.a $(@D)/mongoose.o + $(TARGET_MAKE_ENV) $(TARGET_CC) -c $(@D)/mongoose.c $(MONGOOSE_CFLAGS) -o $(@D)/mongoose.o + $(TARGET_MAKE_ENV) $(TARGET_AR) rcs $(@D)/libmongoose.a $(@D)/mongoose.o endef define MONGOOSE_INSTALL_STAGING_CMDS diff --git a/bsp/buildroot/package/mongrel2/Config.in b/bsp/buildroot/package/mongrel2/Config.in index bc9b79bd..796bae6d 100644 --- a/bsp/buildroot/package/mongrel2/Config.in +++ b/bsp/buildroot/package/mongrel2/Config.in @@ -7,10 +7,10 @@ config BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS default y if BR2_TOOLCHAIN_USES_UCLIBC && \ (BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_sparc || BR2_x86_64) -comment "mongrel2 needs a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library" +comment "mongrel2 needs a uClibc or glibc toolchain w/ C++, threads, dynamic library" depends on !BR2_INSTALL_LIBSTDCPP || \ - !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ - BR2_STATIC_LIBS || !BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS config BR2_PACKAGE_MONGREL2 bool "mongrel2" @@ -18,7 +18,6 @@ config BR2_PACKAGE_MONGREL2 select BR2_PACKAGE_ZEROMQ depends on BR2_INSTALL_LIBSTDCPP # zeromq depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq - depends on BR2_USE_WCHAR # zeromq -> util-linux depends on !BR2_STATIC_LIBS # uses dlopen() depends on BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS help diff --git a/bsp/buildroot/package/mongrel2/mongrel2.mk b/bsp/buildroot/package/mongrel2/mongrel2.mk index d0640c96..c69c1434 100644 --- a/bsp/buildroot/package/mongrel2/mongrel2.mk +++ b/bsp/buildroot/package/mongrel2/mongrel2.mk @@ -24,7 +24,7 @@ ifeq ($(BR2_ENABLE_DEBUG)$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_ARM_INSTRUCTIONS_THU MONGREL2_POST_CONFIGURE_HOOKS += MONGREL2_POLARSSL_DISABLE_ASM else ifeq ($(BR2_microblaze),y) MONGREL2_POST_CONFIGURE_HOOKS += MONGREL2_POLARSSL_DISABLE_ASM -else ifeq ($(BR2_mips_32r6)$(BR2_mips_64r6),y) +else ifeq ($(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) MONGREL2_POST_CONFIGURE_HOOKS += MONGREL2_POLARSSL_DISABLE_ASM endif diff --git a/bsp/buildroot/package/monit/monit.hash b/bsp/buildroot/package/monit/monit.hash index 04f87901..8eb02fce 100644 --- a/bsp/buildroot/package/monit/monit.hash +++ b/bsp/buildroot/package/monit/monit.hash @@ -1,2 +1,2 @@ -# From https://mmonit.com/monit/dist/monit-5.17.tar.gz.sha256: -sha256 2fbcdea79ae39228791a0aaa685ebbf650f2b58d086eaf77a33226e972cb216e monit-5.17.tar.gz +# From https://mmonit.com/monit/dist/monit-5.20.0.tar.gz.sha256: +sha256 ebac395ec50c1ae64d568db1260bc049d0e0e624c00e79d7b1b9a59c2679b98d monit-5.20.0.tar.gz diff --git a/bsp/buildroot/package/monit/monit.mk b/bsp/buildroot/package/monit/monit.mk index 1d5904b6..f4899c3c 100644 --- a/bsp/buildroot/package/monit/monit.mk +++ b/bsp/buildroot/package/monit/monit.mk @@ -4,7 +4,7 @@ # ################################################################################ -MONIT_VERSION = 5.17 +MONIT_VERSION = 5.20.0 MONIT_SITE = http://mmonit.com/monit/dist MONIT_LICENSE = AGPLv3 with OpenSSL exception MONIT_LICENSE_FILES = COPYING @@ -27,4 +27,11 @@ else MONIT_CONF_OPTS += --without-ssl endif +ifeq ($(BR2_PACKAGE_ZLIB),y) +MONIT_CONF_OPTS += --with-zlib +MONIT_DEPENDENCIES += zlib +else +MONIT_CONF_OPTS += --without-zlib +endif + $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/mono/mono.hash b/bsp/buildroot/package/mono/mono.hash index c275e15b..6719fec4 100644 --- a/bsp/buildroot/package/mono/mono.hash +++ b/bsp/buildroot/package/mono/mono.hash @@ -1,2 +1,2 @@ # sha256 locally computed -sha256 900c2cc25ee55adeec04e1ae889316efc127c82cc0c392f928421f19f8f5b633 mono-4.4.2.11.tar.bz2 +sha256 8965d107f4ebf4583ba1b50e0dcad39f0dc6adac8df7a083e9c5879ad93c0ea4 mono-4.6.2.16.tar.bz2 diff --git a/bsp/buildroot/package/mono/mono.mk b/bsp/buildroot/package/mono/mono.mk index 3d0b9bc7..20b92056 100644 --- a/bsp/buildroot/package/mono/mono.mk +++ b/bsp/buildroot/package/mono/mono.mk @@ -4,12 +4,12 @@ # ################################################################################ -MONO_VERSION = 4.4.2.11 +MONO_VERSION = 4.6.2.16 MONO_SITE = http://download.mono-project.com/sources/mono MONO_SOURCE = mono-$(MONO_VERSION).tar.bz2 -MONO_LICENSE = GPLv2 or MIT (compiler, tools), LGPLv2 (runtime libs), MIT (class libs) or commercial -MONO_LICENSE_FILES = LICENSE COPYING.LIB mcs/COPYING.LIB mcs/COPYING \ - eglib/COPYING external/Newtonsoft.Json/Tools/7-zip/copying.txt +MONO_LICENSE = GPLv2 or MIT (compiler, tools), MIT (libs) or commercial +MONO_LICENSE_FILES = LICENSE mcs/COPYING eglib/COPYING \ + external/Newtonsoft.Json/Tools/7-zip/copying.txt MONO_INSTALL_STAGING = YES ## Mono native @@ -22,7 +22,7 @@ MONO_CONF_OPTS = --disable-gtk-doc \ --with-mcs-docs=no \ --with-moonlight=no \ --with-ikvm-native=no \ - --enable-minimal=aot,profiler,debug \ + --enable-minimal=profiler,debug \ --disable-mcs-build \ --enable-static @@ -49,7 +49,7 @@ HOST_MONO_CONF_OPTS = --disable-gtk-doc \ --with-moonlight=no \ --disable-libraries \ --with-ikvm-native=no \ - --enable-minimal=aot,profiler,debug \ + --enable-minimal=profiler,debug \ --enable-static # ensure monolite is used diff --git a/bsp/buildroot/package/monolite/monolite.hash b/bsp/buildroot/package/monolite/monolite.hash index 44ec39a2..621e5e4f 100644 --- a/bsp/buildroot/package/monolite/monolite.hash +++ b/bsp/buildroot/package/monolite/monolite.hash @@ -1,2 +1,2 @@ # sha256 locally computed -sha256 885270da1b64670bffec9c8df1272ab88ff0b96186d2ebb61bdfa47a5586f987 monolite-140-latest.tar.gz +sha256 c01e9ba37d8d8f9ef68e08170b2582cc710a8a77756e2412dff298a39b3c4d2b monolite-149-latest.tar.gz diff --git a/bsp/buildroot/package/monolite/monolite.mk b/bsp/buildroot/package/monolite/monolite.mk index 91c01d79..d50d9f22 100644 --- a/bsp/buildroot/package/monolite/monolite.mk +++ b/bsp/buildroot/package/monolite/monolite.mk @@ -4,7 +4,7 @@ # ################################################################################ -MONOLITE_VERSION = 140 +MONOLITE_VERSION = 149 MONOLITE_SITE = http://download.mono-project.com/monolite/ MONOLITE_SOURCE = monolite-$(MONOLITE_VERSION)-latest.tar.gz MONOLITE_LICENSE = LGPLv2 or commercial diff --git a/bsp/buildroot/package/mosh/Config.in b/bsp/buildroot/package/mosh/Config.in index b4189ee1..d1fbd632 100644 --- a/bsp/buildroot/package/mosh/Config.in +++ b/bsp/buildroot/package/mosh/Config.in @@ -12,7 +12,7 @@ config BR2_PACKAGE_MOSH depends on BR2_USE_WCHAR select BR2_PACKAGE_PROTOBUF select BR2_PACKAGE_NCURSES - select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_NETTLE if !BR2_PACKAGE_OPENSSL select BR2_PACKAGE_ZLIB # runtime dependency select BR2_PACKAGE_OPENSSH if !BR2_PACKAGE_DROPBEAR_CLIENT diff --git a/bsp/buildroot/package/mosh/mosh.hash b/bsp/buildroot/package/mosh/mosh.hash index ab925b51..31f59c7f 100644 --- a/bsp/buildroot/package/mosh/mosh.hash +++ b/bsp/buildroot/package/mosh/mosh.hash @@ -1,2 +1,2 @@ -# From: http://mailman.mit.edu/pipermail/mosh-users/2015-July/000283.html -sha256 1af809e5d747c333a852fbf7acdbf4d354dc4bbc2839e3afe5cf798190074be3 mosh-1.2.5.tar.gz +# From https://mailman.mit.edu/pipermail/mosh-users/2016-August/000330.html +sha256 7e82b7fbfcc698c70f5843bb960dadb8e7bd7ac1d4d2151c9d979372ea850e85 mosh-1.2.6.tar.gz diff --git a/bsp/buildroot/package/mosh/mosh.mk b/bsp/buildroot/package/mosh/mosh.mk index f8c45e8c..2cd358b3 100644 --- a/bsp/buildroot/package/mosh/mosh.mk +++ b/bsp/buildroot/package/mosh/mosh.mk @@ -4,12 +4,20 @@ # ################################################################################ -MOSH_VERSION = 1.2.5 +MOSH_VERSION = 1.2.6 MOSH_SITE = https://mosh.mit.edu -MOSH_DEPENDENCIES = zlib ncurses protobuf openssl host-pkgconf +MOSH_DEPENDENCIES = zlib ncurses protobuf host-pkgconf MOSH_LICENSE = GPLv3+ with exception MOSH_LICENSE_FILES = COPYING COPYING.iOS +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MOSH_CONF_OPTS += --with-crypto-library=openssl +MOSH_DEPENDENCIES += openssl +else +MOSH_CONF_OPTS += --with-crypto-library=nettle +MOSH_DEPENDENCIES += nettle +endif + # help the detection of the SSP support: mosh configure.ac doesn't do # a link test, so it doesn't detect when the toolchain doesn't have # libssp. diff --git a/bsp/buildroot/package/mosquitto/Config.in b/bsp/buildroot/package/mosquitto/Config.in index 50937d05..1e6418a4 100644 --- a/bsp/buildroot/package/mosquitto/Config.in +++ b/bsp/buildroot/package/mosquitto/Config.in @@ -1,6 +1,7 @@ config BR2_PACKAGE_MOSQUITTO bool "mosquitto" depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_STATIC_LIBS # builds .so help Mosquitto is an open source message broker that implements @@ -15,4 +16,5 @@ config BR2_PACKAGE_MOSQUITTO comment "mosquitto needs a toolchain w/ dynamic library" depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on BR2_STATIC_LIBS diff --git a/bsp/buildroot/package/mosquitto/mosquitto.hash b/bsp/buildroot/package/mosquitto/mosquitto.hash index 68dac00f..b0b860f9 100644 --- a/bsp/buildroot/package/mosquitto/mosquitto.hash +++ b/bsp/buildroot/package/mosquitto/mosquitto.hash @@ -1,2 +1,2 @@ -# From https://www.eclipse.org/downloads/download.php?file=/mosquitto/source/mosquitto-1.4.9.tar.gz -sha512 5994159d9a8da248a877f3032f36ca9a865d9b4efaafac329620864049992a77d414e02252cbbfef89ea2c37dc761b1885a89e19fc8e82b2a42d38f31e761d4d mosquitto-1.4.9.tar.gz +# From https://www.eclipse.org/downloads/download.php?file=/mosquitto/source/mosquitto-1.4.10.tar.gz +sha512 fe5d6d7196a137a496ba6881c77d852396baefb4f0b83ccd9a22175fc05b09e48a09ea249e30ec7db966e11de134ebcc4e2e9b1fd40b31dc59fb0fa2f60b75a1 mosquitto-1.4.10.tar.gz diff --git a/bsp/buildroot/package/mosquitto/mosquitto.mk b/bsp/buildroot/package/mosquitto/mosquitto.mk index f2ede6c9..96607f32 100644 --- a/bsp/buildroot/package/mosquitto/mosquitto.mk +++ b/bsp/buildroot/package/mosquitto/mosquitto.mk @@ -4,7 +4,7 @@ # ################################################################################ -MOSQUITTO_VERSION = 1.4.9 +MOSQUITTO_VERSION = 1.4.10 MOSQUITTO_SITE = http://mosquitto.org/files/source MOSQUITTO_LICENSE = EPLv1.0 or EDLv1.0 MOSQUITTO_LICENSE_FILES = LICENSE.txt epl-v10 edl-v10 diff --git a/bsp/buildroot/package/motion/0001-configure.ac-use-given-CFLAGS-LIBS-for-mysqlclient-l.patch b/bsp/buildroot/package/motion/0001-configure.ac-use-given-CFLAGS-LIBS-for-mysqlclient-l.patch new file mode 100644 index 00000000..4211fe67 --- /dev/null +++ b/bsp/buildroot/package/motion/0001-configure.ac-use-given-CFLAGS-LIBS-for-mysqlclient-l.patch @@ -0,0 +1,31 @@ +From 5a1081d36bf2861ffc882354c583a0eb6b0ee3d5 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 25 Oct 2016 21:27:41 +0200 +Subject: [PATCH] configure.ac: use given CFLAGS/LIBS for mysqlclient library + check + +Needed for static linking of mysql with enabled libz. + +Signed-off-by: Peter Seiderer +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 5782fd6..aa5d9dd 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -618,8 +618,8 @@ else + #LDFLAGS="-L$MYSQL_LIBDIR" + saved_CFLAGS=$CFLAGS + saved_LIBS=$LIBS +- CFLAGS="-I$MYSQL_INCDIR" +- LIBS="-L$MYSQL_LIBDIR" ++ CFLAGS="-I$MYSQL_INCDIR $CFLAGS" ++ LIBS="-L$MYSQL_LIBDIR $LIBS" + AC_CHECK_LIB(mysqlclient,mysql_init,[ + TEMP_LIBS="$TEMP_LIBS -L$MYSQL_LIBDIR -lmysqlclient -lz" + TEMP_CFLAGS="$TEMP_CFLAGS -I$MYSQL_INCDIR" +-- +2.8.1 + diff --git a/bsp/buildroot/package/motion/0002-Rename-base64_encode.patch b/bsp/buildroot/package/motion/0002-Rename-base64_encode.patch new file mode 100644 index 00000000..8b063092 --- /dev/null +++ b/bsp/buildroot/package/motion/0002-Rename-base64_encode.patch @@ -0,0 +1,116 @@ +From 0da5428bdfe67eb17ee03f22f68e66b044abdf70 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 30 Oct 2016 19:30:46 +0100 +Subject: [PATCH] Rename base64_encode + +base64_encode is already defined in gnutls so rename it as +motion_base64_encode to prevent a definition clash when linking +statically with gnutls + +Fixes: + - http://autobuild.buildroot.org/results/592672b8826f4c731c50d29725da964d876573c4 + +Applied upstream: + - https://github.com/Motion-Project/motion/commit/cc3c25527d4bada0fe98a734fa2df29f8d6cf1ad + +Signed-off-by: Fabrice Fontaine +--- + netcam.c | 4 ++-- + netcam_wget.c | 4 ++-- + netcam_wget.h | 2 +- + stream.c | 4 ++-- + webhttpd.c | 4 ++-- + 5 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/netcam.c b/netcam.c +index a9df33a..38d4ca3 100644 +--- a/netcam.c ++++ b/netcam.c +@@ -2019,7 +2019,7 @@ static int netcam_http_build_url(netcam_context_ptr netcam, struct url_t *url) + else + ptr = url->userpass; + +- /* base64_encode needs up to 3 additional chars. */ ++ /* motion_base64_encode needs up to 3 additional chars. */ + if (ptr) { + userpass = mymalloc(strlen(ptr) + 3); + strcpy(userpass, ptr); +@@ -2045,7 +2045,7 @@ static int netcam_http_build_url(netcam_context_ptr netcam, struct url_t *url) + /* Allocate space for the base64-encoded string. */ + encuserpass = mymalloc(BASE64_LENGTH(strlen(userpass)) + 1); + /* Fill in the value. */ +- base64_encode(userpass, encuserpass, strlen(userpass)); ++ motion_base64_encode(userpass, encuserpass, strlen(userpass)); + /* Now create the last part (authorization) of the request. */ + request_pass = mymalloc(strlen(connect_auth_req) + + strlen(encuserpass) + 1); +diff --git a/netcam_wget.c b/netcam_wget.c +index 4491760..f5c1dc2 100644 +--- a/netcam_wget.c ++++ b/netcam_wget.c +@@ -210,13 +210,13 @@ int skip_lws(const char *string) + + + /** +- * base64_encode ++ * motion_base64_encode + * + * Encode the string S of length LENGTH to base64 format and place it + * to STORE. STORE will be 0-terminated, and must point to a writable + * buffer of at least 1+BASE64_LENGTH(length) bytes. + */ +-void base64_encode(const char *s, char *store, int length) ++void motion_base64_encode(const char *s, char *store, int length) + { + /* Conversion table. */ + static const char tbl[64] = { +diff --git a/netcam_wget.h b/netcam_wget.h +index 9a091bf..e9b02b5 100644 +--- a/netcam_wget.h ++++ b/netcam_wget.h +@@ -72,7 +72,7 @@ int rbuf_read_bufferful(netcam_context_ptr); + /* How many bytes it will take to store LEN bytes in base64. */ + #define BASE64_LENGTH(len) (4 * (((len) + 2) / 3)) + +-void base64_encode(const char *, char *, int); ++void motion_base64_encode(const char *, char *, int); + char *strdupdelim(const char *, const char *); + int http_process_type(const char *, void *); + +diff --git a/stream.c b/stream.c +index 04e67ee..ca201ac 100644 +--- a/stream.c ++++ b/stream.c +@@ -211,10 +211,10 @@ static void* handle_basic_auth(void* param) + + authentication = mymalloc(BASE64_LENGTH(auth_size) + 1); + userpass = mymalloc(auth_size + 4); +- /* base64_encode can read 3 bytes after the end of the string, initialize it. */ ++ /* motion_base64_encode can read 3 bytes after the end of the string, initialize it. */ + memset(userpass, 0, auth_size + 4); + strcpy(userpass, p->conf->stream_authentication); +- base64_encode(userpass, authentication, auth_size); ++ motion_base64_encode(userpass, authentication, auth_size); + free(userpass); + + if (strcmp(auth, authentication)) { +diff --git a/webhttpd.c b/webhttpd.c +index 6df2d11..36e8beb 100644 +--- a/webhttpd.c ++++ b/webhttpd.c +@@ -2616,10 +2616,10 @@ void httpd_run(struct context **cnt) + + authentication = mymalloc(BASE64_LENGTH(auth_size) + 1); + userpass = mymalloc(auth_size + 4); +- /* base64_encode can read 3 bytes after the end of the string, initialize it */ ++ /* motion_base64_encode can read 3 bytes after the end of the string, initialize it */ + memset(userpass, 0, auth_size + 4); + strcpy(userpass, cnt[0]->conf.webcontrol_authentication); +- base64_encode(userpass, authentication, auth_size); ++ motion_base64_encode(userpass, authentication, auth_size); + free(userpass); + } + +-- +2.5.0 + diff --git a/bsp/buildroot/package/motion/Config.in b/bsp/buildroot/package/motion/Config.in new file mode 100644 index 00000000..a27e7f9f --- /dev/null +++ b/bsp/buildroot/package/motion/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_MOTION + bool "motion" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_JPEG + help + Motion is a program that monitors the video signal from + cameras. It is able to detect if a significant part of + the picture has changed; in other words, it can detect motion. + + libv4l has to be selected to be able to use a local camera. + + https://motion-project.github.io + +comment "motion needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/motion/S99motion b/bsp/buildroot/package/motion/S99motion new file mode 100644 index 00000000..36bfc238 --- /dev/null +++ b/bsp/buildroot/package/motion/S99motion @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME=motion +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/bsp/buildroot/package/motion/motion.hash b/bsp/buildroot/package/motion/motion.hash new file mode 100644 index 00000000..e8591179 --- /dev/null +++ b/bsp/buildroot/package/motion/motion.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 2f67669a09ce0481ecd987028dae1c5cb135dfdc3c254c06ab7c9ca0c6c183f0 motion-release-4.0.1.tar.gz diff --git a/bsp/buildroot/package/motion/motion.mk b/bsp/buildroot/package/motion/motion.mk new file mode 100644 index 00000000..d76b5470 --- /dev/null +++ b/bsp/buildroot/package/motion/motion.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# motion +# +################################################################################ + +MOTION_VERSION = release-4.0.1 +MOTION_SITE = $(call github,Motion-Project,motion,$(MOTION_VERSION)) +MOTION_LICENSE = GPLv2 +MOTION_LICENSE_FILES = COPYING +MOTION_DEPENDENCIES = host-pkgconf jpeg +# From git and patched configure.ac +MOTION_AUTORECONF = YES + +# motion does not use any specific function of jpeg-turbo, so just relies on +# jpeg selection +MOTION_CONF_OPTS += --without-jpeg-turbo --without-optimizecpu + +ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) +MOTION_DEPENDENCIES += ffmpeg +MOTION_CONF_OPTS += --with-ffmpeg +else +MOTION_CONF_OPTS += --without-ffmpeg +endif + +ifeq ($(BR2_PACKAGE_MYSQL),y) +MOTION_DEPENDENCIES += mysql +MOTION_CONF_OPTS += \ + --with-mysql \ + --with-mysql-include=$(STAGING_DIR)/usr/include/mysql \ + --with-mysql-lib=$(STAGING_DIR)/usr/lib +# static link of mysql needs -lz +ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_ZLIB),yy) +MOTION_CONF_ENV += LIBS="-lz" +endif +else +MOTION_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +MOTION_DEPENDENCIES += postgresql +MOTION_CONF_OPTS += \ + --with-pgsql \ + --with-pgsql-include=$(STAGING_DIR)/usr/include \ + --with-pgsql-lib=$(STAGING_DIR)/usr/lib +else +MOTION_CONF_OPTS += --without-pgsql +endif + +ifeq ($(BR2_PACKAGE_SDL),y) +MOTION_DEPENDENCIES += sdl +MOTION_CONF_OPTS += --with-sdl=$(STAGING_DIR)/usr +# overwrite ac_cv_path_CONFIG_SDL in case sdl development is +# installed on the host +MOTION_CONF_ENV += ac_cv_path_CONFIG_SDL=$(STAGING_DIR)/usr/bin/sdl-config +else +MOTION_CONF_OPTS += --without-sdl +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +MOTION_DEPENDENCIES += sqlite +MOTION_CONF_OPTS += --with-sqlite3 +else +MOTION_CONF_OPTS += --without-sqlite3 +endif + +# Do not use default install target as it installs many unneeded files and +# directories: docs, examples and init scripts +define MOTION_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/motion-dist.conf \ + $(TARGET_DIR)/etc/motion.conf + $(INSTALL) -D -m 0755 $(@D)/motion $(TARGET_DIR)/usr/bin/motion +endef + +define MOTION_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/motion/S99motion \ + $(TARGET_DIR)/etc/init.d/S99motion +endef + +define MOTION_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/motion/motion.service \ + $(TARGET_DIR)/usr/lib/systemd/system/motion.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/motion.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/motion.service +endef + +$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/motion/motion.service b/bsp/buildroot/package/motion/motion.service new file mode 100644 index 00000000..c788cd64 --- /dev/null +++ b/bsp/buildroot/package/motion/motion.service @@ -0,0 +1,10 @@ +[Unit] +Description=Motion camera monitoring system +After=network.target + +[Service] +ExecStart=/usr/bin/motion +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/bsp/buildroot/package/mpd-mpc/mpd-mpc.hash b/bsp/buildroot/package/mpd-mpc/mpd-mpc.hash index b4003867..83368937 100644 --- a/bsp/buildroot/package/mpd-mpc/mpd-mpc.hash +++ b/bsp/buildroot/package/mpd-mpc/mpd-mpc.hash @@ -1,2 +1,2 @@ -# Locally computed -sha256 45a2be0a6dea65ed43f631294c24e74b83c8ee66d1ba6ab47d0744ddb1e62064 mpc-0.27.tar.xz +# Locally calculated after checking pgp signature +sha256 a4337d06c85dc81a638821d30fce8a137a58d13d510be34a11c1cce95cabc547 mpc-0.28.tar.xz diff --git a/bsp/buildroot/package/mpd-mpc/mpd-mpc.mk b/bsp/buildroot/package/mpd-mpc/mpd-mpc.mk index f5e95999..d9aa1f87 100644 --- a/bsp/buildroot/package/mpd-mpc/mpd-mpc.mk +++ b/bsp/buildroot/package/mpd-mpc/mpd-mpc.mk @@ -5,7 +5,7 @@ ################################################################################ MPD_MPC_VERSION_MAJOR = 0 -MPD_MPC_VERSION = $(MPD_MPC_VERSION_MAJOR).27 +MPD_MPC_VERSION = $(MPD_MPC_VERSION_MAJOR).28 MPD_MPC_SITE = http://www.musicpd.org/download/mpc/$(MPD_MPC_VERSION_MAJOR) MPD_MPC_SOURCE = mpc-$(MPD_MPC_VERSION).tar.xz MPD_MPC_LICENSE = GPLv2+ diff --git a/bsp/buildroot/package/mpd/0002-thread-Name-include-stdio.h-for-prctl-as-well.patch b/bsp/buildroot/package/mpd/0002-thread-Name-include-stdio.h-for-prctl-as-well.patch deleted file mode 100644 index 1943623e..00000000 --- a/bsp/buildroot/package/mpd/0002-thread-Name-include-stdio.h-for-prctl-as-well.patch +++ /dev/null @@ -1,28 +0,0 @@ -From a0a9fed68126eb24e04af924c0d46351ff5eeb0f Mon Sep 17 00:00:00 2001 -From: Gustavo Zacarias -Date: Mon, 26 Jan 2015 09:55:04 -0300 -Subject: [PATCH] thread/Name: include stdio.h for prctl as well - -We're still using snprintf so we need it, otherwise it leads to build -failure. - -Signed-off-by: Gustavo Zacarias ---- - src/thread/Name.hxx | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/thread/Name.hxx b/src/thread/Name.hxx -index a99208d..8f9d7d3 100644 ---- a/src/thread/Name.hxx -+++ b/src/thread/Name.hxx -@@ -25,6 +25,7 @@ - # include - #elif defined(HAVE_PRCTL) - # include -+# include - # ifdef PR_SET_NAME - # define HAVE_THREAD_NAME - # endif --- -2.6.4 - diff --git a/bsp/buildroot/package/mpd/Config.in b/bsp/buildroot/package/mpd/Config.in index 82bbd8d2..8eabbbc7 100644 --- a/bsp/buildroot/package/mpd/Config.in +++ b/bsp/buildroot/package/mpd/Config.in @@ -1,13 +1,14 @@ menuconfig BR2_PACKAGE_MPD bool "mpd" depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_WCHAR # libglib2, flac - depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 - depends on BR2_USE_MMU # libglib2 - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + depends on BR2_USE_WCHAR # flac + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork depends on BR2_TOOLCHAIN_HAS_ATOMIC + # 0.19.x could be built with GCC 4.6, but for simplicity we require + # the same toolchain dependencies for all versions. + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 select BR2_PACKAGE_BOOST - select BR2_PACKAGE_LIBGLIB2 select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE select BR2_PACKAGE_MPD_TREMOR if !(BR2_PACKAGE_MPD_MAD || BR2_PACKAGE_MPD_MPG123 || BR2_PACKAGE_MPD_VORBIS || BR2_PACKAGE_MPD_WAVPACK || BR2_PACKAGE_MPD_FLAC || BR2_PACKAGE_MPD_MUSEPACK || BR2_PACKAGE_MPD_FFMPEG) help @@ -20,6 +21,24 @@ menuconfig BR2_PACKAGE_MPD if BR2_PACKAGE_MPD +# Hidden config symbols to select the branch 0.20 by default and fallback +# to branch 0.19 for toolchains affected by GCC bug PR 64735. This way we +# keep support for mpd on some architectures, like ARMv5, until GCC 7 is +# released, which will fix this issue. +config BR2_PACKAGE_MPD_VERSION_STRING + string + default "0.20" if !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + default "0.19" + +config BR2_PACKAGE_MPD_VERSION_0_20 + bool + default y if BR2_PACKAGE_MPD_VERSION_STRING = "0.20" + +config BR2_PACKAGE_MPD_VERSION_0_19 + bool + default y if BR2_PACKAGE_MPD_VERSION_STRING = "0.19" + select BR2_PACKAGE_LIBGLIB2 + comment "Archive plugins" config BR2_PACKAGE_MPD_BZIP2 @@ -315,8 +334,8 @@ config BR2_PACKAGE_MPD_UPNP endif -comment "mpd needs a toolchain w/ C++, threads, wchar, gcc >= 4.6" +comment "mpd needs a toolchain w/ C++, threads, wchar, gcc >= 4.9" depends on BR2_USE_MMU depends on BR2_TOOLCHAIN_HAS_ATOMIC depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ - !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/bsp/buildroot/package/mpd/mpd.hash b/bsp/buildroot/package/mpd/mpd.hash index 2395cb7b..ecd78e97 100644 --- a/bsp/buildroot/package/mpd/mpd.hash +++ b/bsp/buildroot/package/mpd/mpd.hash @@ -1,2 +1,3 @@ # Locally calculated after checking pgp signature -sha256 487ec8ad2b1c1c193c2a7c8975a8b8fe2e4f0335bcc2e9356b2b34a0179fb2f7 mpd-0.19.17.tar.xz +sha256 712b25351c12616630c580204e1c3dcba3ae2993a56cff1c346c87e334d69728 mpd-0.20.4.tar.xz +sha256 8305b8bc026f4b6bde28b8dd09bfdddbe5590acf36358eed4d083a396e301730 mpd-0.19.21.tar.xz diff --git a/bsp/buildroot/package/mpd/mpd.mk b/bsp/buildroot/package/mpd/mpd.mk index 845b749d..8e71ae21 100644 --- a/bsp/buildroot/package/mpd/mpd.mk +++ b/bsp/buildroot/package/mpd/mpd.mk @@ -4,15 +4,23 @@ # ################################################################################ -MPD_VERSION_MAJOR = 0.19 -MPD_VERSION = $(MPD_VERSION_MAJOR).17 +MPD_VERSION_MAJOR = $(call qstrip,$(BR2_PACKAGE_MPD_VERSION_STRING)) +ifeq ($(BR2_PACKAGE_MPD_VERSION_0_20),y) +MPD_VERSION = $(MPD_VERSION_MAJOR).4 +else +MPD_VERSION = $(MPD_VERSION_MAJOR).21 +endif MPD_SOURCE = mpd-$(MPD_VERSION).tar.xz MPD_SITE = http://www.musicpd.org/download/mpd/$(MPD_VERSION_MAJOR) -MPD_DEPENDENCIES = host-pkgconf boost libglib2 +MPD_DEPENDENCIES = host-pkgconf boost MPD_LICENSE = GPLv2+ MPD_LICENSE_FILES = COPYING MPD_AUTORECONF = YES +ifeq ($(BR2_PACKAGE_MPD_VERSION_0_19),y) +MPD_DEPENDENCIES += libglib2 +endif + # Some options need an explicit --disable or --enable # Zeroconf support depends on libdns_sd from avahi. @@ -222,7 +230,10 @@ endif ifeq ($(BR2_PACKAGE_MPD_TREMOR),y) MPD_DEPENDENCIES += tremor -MPD_CONF_OPTS += --with-tremor +# Help mpd to find tremor in static linking scenarios +MPD_CONF_ENV += \ + TREMOR_LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs vorbisidec`" +MPD_CONF_OPTS += --with-tremor=$(STAGING_DIR)/usr endif ifeq ($(BR2_PACKAGE_MPD_TWOLAME),y) diff --git a/bsp/buildroot/package/mpfr/0001-Fix-obsolete-ARC-asm-constraints.patch b/bsp/buildroot/package/mpfr/0001-Fix-obsolete-ARC-asm-constraints.patch new file mode 100644 index 00000000..12590cfd --- /dev/null +++ b/bsp/buildroot/package/mpfr/0001-Fix-obsolete-ARC-asm-constraints.patch @@ -0,0 +1,37 @@ +mpfr-longlong.h: Fix obsolete ARC asm constraints + +This patch replaces obsolete ARC "J" asm constraint with +up-to-date "Cal" constraint. +The patch should be applied to upstream "mpfr" library and +after that it should be removed from buildroot as soon as +mpfr version with current fix will come up. + +Signed-off-by: Vlad Zakharov +Signed-off-by: Claudiu Zissulescu +--- +Index: /src/mpfr-longlong.h +=================================================================== +--- /src/mpfr-longlong.h (revision 10963) ++++ /src/mpfr-longlong.h (working copy) +@@ -416,17 +416,17 @@ + : "=r" (sh), \ + "=&r" (sl) \ + : "r" ((USItype) (ah)), \ +- "rIJ" ((USItype) (bh)), \ ++ "rICal" ((USItype) (bh)), \ + "%r" ((USItype) (al)), \ +- "rIJ" ((USItype) (bl))) ++ "rICal" ((USItype) (bl))) + #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ + __asm__ ("sub.f\t%1, %4, %5\n\tsbc\t%0, %2, %3" \ + : "=r" (sh), \ + "=&r" (sl) \ + : "r" ((USItype) (ah)), \ +- "rIJ" ((USItype) (bh)), \ ++ "rICal" ((USItype) (bh)), \ + "r" ((USItype) (al)), \ +- "rIJ" ((USItype) (bl))) ++ "rICal" ((USItype) (bl))) + #endif + + #if defined (__arm__) && (defined (__thumb2__) || !defined (__thumb__)) \ diff --git a/bsp/buildroot/package/mpfr/mpfr.hash b/bsp/buildroot/package/mpfr/mpfr.hash index a8b642be..d2c32f2a 100644 --- a/bsp/buildroot/package/mpfr/mpfr.hash +++ b/bsp/buildroot/package/mpfr/mpfr.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 761413b16d749c53e2bfd2b1dfaa3b027b0e793e404b90b5fbaeef60af6517f5 mpfr-3.1.4.tar.xz +sha256 015fde82b3979fbe5f83501986d328331ba8ddf008c1ff3da3c238f49ca062bc mpfr-3.1.5.tar.xz diff --git a/bsp/buildroot/package/mpfr/mpfr.mk b/bsp/buildroot/package/mpfr/mpfr.mk index cc1034c1..bb78ccc8 100644 --- a/bsp/buildroot/package/mpfr/mpfr.mk +++ b/bsp/buildroot/package/mpfr/mpfr.mk @@ -4,7 +4,7 @@ # ################################################################################ -MPFR_VERSION = 3.1.4 +MPFR_VERSION = 3.1.5 MPFR_SITE = http://www.mpfr.org/mpfr-$(MPFR_VERSION) MPFR_SOURCE = mpfr-$(MPFR_VERSION).tar.xz MPFR_LICENSE = LGPLv3+ diff --git a/bsp/buildroot/package/mpg123/mpg123.hash b/bsp/buildroot/package/mpg123/mpg123.hash index bf1e8c79..fa558094 100644 --- a/bsp/buildroot/package/mpg123/mpg123.hash +++ b/bsp/buildroot/package/mpg123/mpg123.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 4073d9c60a43872f6f5a3a322f5ea21ab7f0869d2ed25e79c3eb8521fa3c32d4 mpg123-1.23.6.tar.bz2 +sha256 de2303c8ecb65593e39815c0a2f2f2d91f708c43b85a55fdd1934c82e677cf8e mpg123-1.23.8.tar.bz2 diff --git a/bsp/buildroot/package/mpg123/mpg123.mk b/bsp/buildroot/package/mpg123/mpg123.mk index 2e7bdc52..27c46dcb 100644 --- a/bsp/buildroot/package/mpg123/mpg123.mk +++ b/bsp/buildroot/package/mpg123/mpg123.mk @@ -4,7 +4,7 @@ # ################################################################################ -MPG123_VERSION = 1.23.6 +MPG123_VERSION = 1.23.8 MPG123_SOURCE = mpg123-$(MPG123_VERSION).tar.bz2 MPG123_SITE = http://downloads.sourceforge.net/project/mpg123/mpg123/$(MPG123_VERSION) MPG123_CONF_OPTS = --disable-lfs-alias diff --git a/bsp/buildroot/package/mplayer/Config.in b/bsp/buildroot/package/mplayer/Config.in index 76bb6f07..a10ad26b 100644 --- a/bsp/buildroot/package/mplayer/Config.in +++ b/bsp/buildroot/package/mplayer/Config.in @@ -3,9 +3,12 @@ config BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS default y # Those architectures are not supported by MPlayer depends on !(BR2_bfin || BR2_sh2a || BR2_sh4a || BR2_sh4aeb \ - || BR2_m68k || BR2_microblaze || BR2_nios2) + || BR2_m68k || BR2_microblaze || BR2_nios2 || BR2_or1k) # Broken support for +--- + waftools/detections/compiler.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/waftools/detections/compiler.py b/waftools/detections/compiler.py +index 5bbba87..50836a2 100644 +--- a/waftools/detections/compiler.py ++++ b/waftools/detections/compiler.py +@@ -43,7 +43,8 @@ def __add_gcc_flags__(ctx): + "-Wno-switch", "-Wparentheses", "-Wpointer-arith", + "-Wno-pointer-sign", + # GCC bug 66425 +- "-Wno-unused-result"] ++ "-Wno-unused-result", ++ "-std=gnu99"] + + def __add_clang_flags__(ctx): + ctx.env.CFLAGS += ["-Wno-logical-op-parentheses", "-fcolor-diagnostics", +-- +2.10.0.297.gf6727b0 + diff --git a/bsp/buildroot/package/mpv/0002-wscript-improve-stdatomic-check.patch b/bsp/buildroot/package/mpv/0002-wscript-improve-stdatomic-check.patch deleted file mode 100644 index c2a307e9..00000000 --- a/bsp/buildroot/package/mpv/0002-wscript-improve-stdatomic-check.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 5a635a0066b10d2ba25e0ce78cc57b2be619371c Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Mon, 8 Aug 2016 23:34:32 +0200 -Subject: [PATCH] wscript: improve stdatomic check - -The current stdatomic check verifies the availability of the function by -calling atomic_load(). It also uses this test to check if linking -against libatomic is needed or not. - -Unfortunately, on specific architectures (namely SPARC), using -atomic_load() does *not* require linking against libatomic, while other -atomic operations do. Due to this, mpv's wscript concludes that -stdatomic is available, and that linking against libatomic is not -needed, causing the following link failure: - -[190/190] Linking build/mpv -audio/out/ao.c.13.o: In function `ao_query_and_reset_events': -/home/peko/autobuild/instance-0/output/build/mpv-0.18.1/build/../audio/out/ao.c:399: undefined reference to `__atomic_fetch_and_4' - -In order to fix this, the stdatomic check is adjusted to call -atomic_fetch_add() instead, which does require libatomic. Thanks to -this, the wscript realizes that linking against libatomic is needed, and -the build works fine. - -Signed-off-by: Thomas Petazzoni ---- -Submitted upstream: https://github.com/mpv-player/mpv/pull/3403 - - wscript | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/wscript b/wscript -index a18df6f..4c49caf 100644 ---- a/wscript -+++ b/wscript -@@ -154,7 +154,7 @@ main_dependencies = [ - 'func': check_libs(['atomic'], - check_statement('stdatomic.h', - 'atomic_int_least64_t test = ATOMIC_VAR_INIT(123);' -- 'int test2 = atomic_load(&test)')) -+ 'atomic_fetch_add(&test, 1)')) - }, { - 'name': 'atomic-builtins', - 'desc': 'compiler support for __atomic built-ins', --- -2.7.4 - diff --git a/bsp/buildroot/package/mpv/Config.in b/bsp/buildroot/package/mpv/Config.in index 25288a43..6e115aed 100644 --- a/bsp/buildroot/package/mpv/Config.in +++ b/bsp/buildroot/package/mpv/Config.in @@ -3,6 +3,9 @@ config BR2_PACKAGE_MPV depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8 + # ARC toolchain issue + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE select BR2_PACKAGE_FFMPEG select BR2_PACKAGE_FFMPEG_SWSCALE @@ -17,5 +20,7 @@ config BR2_PACKAGE_MPV comment "mpv needs a toolchain w/ threads, gcc >= 4.5" depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8 depends on !BR2_TOOLCHAIN_HAS_THREADS || \ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC diff --git a/bsp/buildroot/package/mpv/mpv.hash b/bsp/buildroot/package/mpv/mpv.hash index 8a2f44b8..0e7aab70 100644 --- a/bsp/buildroot/package/mpv/mpv.hash +++ b/bsp/buildroot/package/mpv/mpv.hash @@ -1,3 +1,2 @@ # Locally calculated -sha256 e413d57fec4ad43b9f9b848f38d13fb921313fc9a4a64bf1e906c8d0f7a46329 v0.18.1.tar.gz -sha256 01bf2beab2106d1558800c8709bc2c8e496d3da4a2ca343fe091f22fca60c98b waf-1.8.12 +sha256 8aeefe5970587dfc454d2b89726b603f156bd7a9ae427654eef0d60c68d94998 v0.23.0.tar.gz diff --git a/bsp/buildroot/package/mpv/mpv.mk b/bsp/buildroot/package/mpv/mpv.mk index d2ed3f2a..5b83b6d9 100644 --- a/bsp/buildroot/package/mpv/mpv.mk +++ b/bsp/buildroot/package/mpv/mpv.mk @@ -4,17 +4,17 @@ # ################################################################################ -MPV_VERSION = 0.18.1 -MPV_WAF_VERSION = 1.8.12 +MPV_VERSION = 0.23.0 MPV_SITE = https://github.com/mpv-player/mpv/archive MPV_SOURCE = v$(MPV_VERSION).tar.gz -MPV_EXTRA_DOWNLOADS = https://waf.io/waf-$(MPV_WAF_VERSION) MPV_DEPENDENCIES = \ host-pkgconf ffmpeg zlib \ $(if $(BR2_PACKAGE_LIBICONV),libiconv) MPV_LICENSE = GPLv2+ MPV_LICENSE_FILES = LICENSE +MPV_NEEDS_EXTERNAL_WAF = YES + # Some of these options need testing and/or tweaks MPV_CONF_OPTS = \ --prefix=/usr \ @@ -23,7 +23,6 @@ MPV_CONF_OPTS = \ --disable-cdda \ --disable-cocoa \ --disable-coreaudio \ - --disable-libguess \ --disable-libv4l2 \ --disable-opensles \ --disable-rpi \ @@ -45,7 +44,7 @@ endif # GBM support is provided by mesa3d when EGL=y ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) MPV_CONF_OPTS += --enable-gbm -MPV_DEPENDENIES += mesa3d +MPV_DEPENDENCIES += mesa3d else MPV_CONF_OPTS += --disable-gbm endif @@ -123,14 +122,6 @@ else MPV_CONF_OPTS += --disable-drm endif -# libenca support -ifeq ($(BR2_PACKAGE_LIBENCA),y) -MPV_CONF_OPTS += --enable-enca -MPV_DEPENDENCIES += libenca -else -MPV_CONF_OPTS += --disable-enca -endif - # LUA support, only for lua51/lua52/luajit # This enables the controller (OSD) together with libass ifeq ($(BR2_PACKAGE_LUA_5_1)$(BR2_PACKAGE_LUA_5_2)$(BR2_PACKAGE_LUAJIT),y) @@ -235,28 +226,4 @@ else MPV_CONF_OPTS += --disable-x11 endif -define MPV_COPY_WAF - $(INSTALL) -m 0755 $(DL_DIR)/waf-$(MPV_WAF_VERSION) $(@D)/waf -endef -MPV_POST_EXTRACT_HOOKS += MPV_COPY_WAF - -define MPV_CONFIGURE_CMDS - cd $(@D); \ - $(TARGET_CONFIGURE_OPTS) \ - ./waf configure $(MPV_CONF_OPTS) -endef - -define MPV_BUILD_CMDS - cd $(@D); \ - $(TARGET_MAKE_ENV) \ - ./waf build -endef - -define MPV_INSTALL_TARGET_CMDS - cd $(@D); \ - $(TARGET_MAKE_ENV) \ - DESTDIR=$(TARGET_DIR) \ - ./waf install -endef - -$(eval $(generic-package)) +$(eval $(waf-package)) diff --git a/bsp/buildroot/package/mrouted/mrouted.mk b/bsp/buildroot/package/mrouted/mrouted.mk index 01b4a9f3..2969e36c 100644 --- a/bsp/buildroot/package/mrouted/mrouted.mk +++ b/bsp/buildroot/package/mrouted/mrouted.mk @@ -17,11 +17,11 @@ define MROUTED_CONFIGURE_CMDS endef define MROUTED_BUILD_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) endef define MROUTED_INSTALL_TARGET_CMDS - $(MAKE) prefix=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) prefix=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/mtd/Config.in b/bsp/buildroot/package/mtd/Config.in index 8be5eff5..2e6cdbbe 100644 --- a/bsp/buildroot/package/mtd/Config.in +++ b/bsp/buildroot/package/mtd/Config.in @@ -62,10 +62,6 @@ config BR2_PACKAGE_MTD_MKFSUBIFS select BR2_PACKAGE_LZO select BR2_PACKAGE_UTIL_LINUX select BR2_PACKAGE_UTIL_LINUX_LIBUUID - depends on BR2_USE_WCHAR # util-linux - -comment "mkfs.ubifs needs a toolchain w/ wchar" - depends on !BR2_USE_WCHAR config BR2_PACKAGE_MTD_MTD_DEBUG bool "mtd_debug" diff --git a/bsp/buildroot/package/mtdev2tuio/mtdev2tuio.mk b/bsp/buildroot/package/mtdev2tuio/mtdev2tuio.mk index 7b00221c..d2e70408 100644 --- a/bsp/buildroot/package/mtdev2tuio/mtdev2tuio.mk +++ b/bsp/buildroot/package/mtdev2tuio/mtdev2tuio.mk @@ -13,7 +13,7 @@ MTDEV2TUIO_LICENSE_FILES = COPYING # mtdev2tuio Makefile misuses $(LD) as gcc, so we need to override LD # here. Liblo uses log(3), so we need to link with -lm define MTDEV2TUIO_BUILD_CMDS - $(MAKE) \ + $(TARGET_MAKE_ENV) $(MAKE) \ $(TARGET_CONFIGURE_OPTS) \ LD="$(TARGET_CC)" \ LIBS="-lmtdev -llo -lm" \ diff --git a/bsp/buildroot/package/musl/0001-avoid-kernel-if_ether.h.patch b/bsp/buildroot/package/musl/0001-avoid-kernel-if_ether.h.patch new file mode 100644 index 00000000..8efbcc84 --- /dev/null +++ b/bsp/buildroot/package/musl/0001-avoid-kernel-if_ether.h.patch @@ -0,0 +1,30 @@ +From 3984adc4976de7553f51e0cf4de1e18c373b332b Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 15 Dec 2016 15:10:19 +0200 +Subject: [PATCH] Avoid redefinition of struct ethhdr + +This is a workaround to the if_ether.h conflict between musl and the kernel. +Both define struct ethhdr. + +Signed-off-by: Baruch Siach +--- + include/netinet/if_ether.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/include/netinet/if_ether.h b/include/netinet/if_ether.h +index 11ee65823f93..cfe1949d3371 100644 +--- a/include/netinet/if_ether.h ++++ b/include/netinet/if_ether.h +@@ -1,6 +1,9 @@ + #ifndef _NETINET_IF_ETHER_H + #define _NETINET_IF_ETHER_H + ++/* Suppress kernel if_ether.h header inclusion */ ++#define _LINUX_IF_ETHER_H ++ + #include + #include + +-- +2.10.2 + diff --git a/bsp/buildroot/package/musl/0001-fix-regression-in-tcsetattr-on-all-mips-archs.patch b/bsp/buildroot/package/musl/0001-fix-regression-in-tcsetattr-on-all-mips-archs.patch deleted file mode 100644 index 73ccae44..00000000 --- a/bsp/buildroot/package/musl/0001-fix-regression-in-tcsetattr-on-all-mips-archs.patch +++ /dev/null @@ -1,67 +0,0 @@ -From cff5747c74c41b22f1ce1340978b1c226a8cdf32 Mon Sep 17 00:00:00 2001 -From: Rich Felker -Date: Wed, 13 Jul 2016 15:04:30 -0400 -Subject: [PATCH] fix regression in tcsetattr on all mips archs - -revert commit 8c316e9e49d37ad92c2e7493e16166a2afca419f. it was wrong -and does not match how the kernel API works. - -Signed-off-by: Rich Felker -Signed-off-by: Waldemar Brodkorb ---- - arch/mips/bits/termios.h | 6 +++--- - arch/mips64/bits/termios.h | 6 +++--- - arch/mipsn32/bits/termios.h | 6 +++--- - 3 files changed, 9 insertions(+), 9 deletions(-) - -diff --git a/arch/mips/bits/termios.h b/arch/mips/bits/termios.h -index f559f76..6a1205d 100644 ---- a/arch/mips/bits/termios.h -+++ b/arch/mips/bits/termios.h -@@ -141,9 +141,9 @@ struct termios { - #define TCOFLUSH 1 - #define TCIOFLUSH 2 - --#define TCSANOW 0x540e --#define TCSADRAIN 0x540f --#define TCSAFLUSH 0x5410 -+#define TCSANOW 0 -+#define TCSADRAIN 1 -+#define TCSAFLUSH 2 - - #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) - #define EXTA 0000016 -diff --git a/arch/mips64/bits/termios.h b/arch/mips64/bits/termios.h -index f559f76..6a1205d 100644 ---- a/arch/mips64/bits/termios.h -+++ b/arch/mips64/bits/termios.h -@@ -141,9 +141,9 @@ struct termios { - #define TCOFLUSH 1 - #define TCIOFLUSH 2 - --#define TCSANOW 0x540e --#define TCSADRAIN 0x540f --#define TCSAFLUSH 0x5410 -+#define TCSANOW 0 -+#define TCSADRAIN 1 -+#define TCSAFLUSH 2 - - #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) - #define EXTA 0000016 -diff --git a/arch/mipsn32/bits/termios.h b/arch/mipsn32/bits/termios.h -index f559f76..6a1205d 100644 ---- a/arch/mipsn32/bits/termios.h -+++ b/arch/mipsn32/bits/termios.h -@@ -141,9 +141,9 @@ struct termios { - #define TCOFLUSH 1 - #define TCIOFLUSH 2 - --#define TCSANOW 0x540e --#define TCSADRAIN 0x540f --#define TCSAFLUSH 0x5410 -+#define TCSANOW 0 -+#define TCSADRAIN 1 -+#define TCSAFLUSH 2 - - #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) - #define EXTA 0000016 diff --git a/bsp/buildroot/package/musl/Config.in b/bsp/buildroot/package/musl/Config.in index 18ae69d2..2775313a 100644 --- a/bsp/buildroot/package/musl/Config.in +++ b/bsp/buildroot/package/musl/Config.in @@ -3,6 +3,7 @@ config BR2_PACKAGE_MUSL depends on BR2_TOOLCHAIN_USES_MUSL default y select BR2_PACKAGE_LINUX_HEADERS - select BR2_TOOLCHAIN_HAS_SSP + # SSP broken on i386/ppc: http://www.openwall.com/lists/musl/2016/12/04/2 + select BR2_TOOLCHAIN_HAS_SSP if !(BR2_i386 || BR2_powerpc) # Compatibility headers: cdefs.h, queue.h select BR2_PACKAGE_MUSL_COMPAT_HEADERS diff --git a/bsp/buildroot/package/musl/musl.hash b/bsp/buildroot/package/musl/musl.hash index 8ef4defa..f3f37410 100644 --- a/bsp/buildroot/package/musl/musl.hash +++ b/bsp/buildroot/package/musl/musl.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 97e447c7ee2a7f613186ec54a93054fe15469fe34d7d323080f7ef38f5ecb0fa musl-1.1.15.tar.gz +sha256 937185a5e5d721050306cf106507a006c3f1f86d86cd550024ea7be909071011 musl-1.1.16.tar.gz diff --git a/bsp/buildroot/package/musl/musl.mk b/bsp/buildroot/package/musl/musl.mk index ea1ce6d9..6d560339 100644 --- a/bsp/buildroot/package/musl/musl.mk +++ b/bsp/buildroot/package/musl/musl.mk @@ -4,7 +4,7 @@ # ################################################################################ -MUSL_VERSION = 1.1.15 +MUSL_VERSION = 1.1.16 MUSL_SITE = http://www.musl-libc.org/releases MUSL_LICENSE = MIT MUSL_LICENSE_FILES = COPYRIGHT diff --git a/bsp/buildroot/package/mutt/mutt.hash b/bsp/buildroot/package/mutt/mutt.hash index baee6206..460cd5f0 100644 --- a/bsp/buildroot/package/mutt/mutt.hash +++ b/bsp/buildroot/package/mutt/mutt.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 98b26cecc6b1713082fc880344fa345c20bd7ded6459abe18c84429c7cf8ed20 mutt-1.6.1.tar.gz +sha256 e9c6f88e83d48690033f0d862a70293ac746286b77241554f5448bc23bd0d6df mutt-1.7.1.tar.gz diff --git a/bsp/buildroot/package/mutt/mutt.mk b/bsp/buildroot/package/mutt/mutt.mk index e6ea6e40..cd44ca10 100644 --- a/bsp/buildroot/package/mutt/mutt.mk +++ b/bsp/buildroot/package/mutt/mutt.mk @@ -4,7 +4,7 @@ # ################################################################################ -MUTT_VERSION = 1.6.1 +MUTT_VERSION = 1.7.1 MUTT_SITE = https://bitbucket.org/mutt/mutt/downloads MUTT_LICENSE = GPLv2+ MUTT_LICENSE_FILES = GPL diff --git a/bsp/buildroot/package/mxml/mxml.hash b/bsp/buildroot/package/mxml/mxml.hash index 310e2cae..90392755 100644 --- a/bsp/buildroot/package/mxml/mxml.hash +++ b/bsp/buildroot/package/mxml/mxml.hash @@ -1,4 +1,4 @@ # From http://www.msweet.org/downloads.php?L+Z3 -md5 e21cad0f7aacd18f942aa0568a8dee19 mxml-2.9.tar.gz +md5 8804c961a24500a95690ef287d150abe mxml-2.10.tar.gz # Locally computed -sha256 cded54653c584b24c4a78a7fa1b3b4377d49ac4f451ddf170ebbc8161d85ff92 mxml-2.9.tar.gz +sha256 267ff58b64ddc767170d71dab0c729c06f45e1df9a9b6f75180b564f09767891 mxml-2.10.tar.gz diff --git a/bsp/buildroot/package/mxml/mxml.mk b/bsp/buildroot/package/mxml/mxml.mk index 7e9b4d6c..f36c75ca 100644 --- a/bsp/buildroot/package/mxml/mxml.mk +++ b/bsp/buildroot/package/mxml/mxml.mk @@ -4,7 +4,7 @@ # ################################################################################ -MXML_VERSION = 2.9 +MXML_VERSION = 2.10 MXML_SITE = http://www.msweet.org/files/project3 MXML_LICENSE = LGPLv2+ with exceptions MXML_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/mysql/Config.in b/bsp/buildroot/package/mysql/Config.in index 7133892b..69ad5865 100644 --- a/bsp/buildroot/package/mysql/Config.in +++ b/bsp/buildroot/package/mysql/Config.in @@ -1,24 +1,75 @@ config BR2_PACKAGE_MYSQL - bool "MySQL" + bool "mysql support" depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_MMU # fork() depends on BR2_TOOLCHAIN_HAS_THREADS + help + Select the desired mysql provider. + +if BR2_PACKAGE_MYSQL + +choice + prompt "mysql variant" + default BR2_PACKAGE_ORACLE_MYSQL + help + Select either the oracle mysql server or the mariadb server + +config BR2_PACKAGE_MARIADB + bool "mariadb" + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + select BR2_PACKAGE_LIBAIO + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_HAS_MYSQL + help + MariaDB is one of the most popular database servers in the world. + It's made by the original developers of MySQL and guaranteed to + stay open source. + + http://www.mariadb.org/ + +config BR2_PACKAGE_ORACLE_MYSQL + bool "oracle mysql" select BR2_PACKAGE_NCURSES select BR2_PACKAGE_READLINE + select BR2_PACKAGE_HAS_MYSQL help The MySQL Open Source Database System http://www.mysql.com/ -if BR2_PACKAGE_MYSQL +endchoice -config BR2_PACKAGE_MYSQL_SERVER - bool "MySQL server" +if BR2_PACKAGE_MARIADB + +config BR2_PACKAGE_MARIADB_SERVER + bool "mariadb server" + help + Install the mariadb server on the target. + +endif + +if BR2_PACKAGE_ORACLE_MYSQL + +config BR2_PACKAGE_ORACLE_MYSQL_SERVER + bool "oracle mysql server" help Install the MySQL server on the target. endif -comment "MySQL needs a toolchain w/ C++, threads" +config BR2_PACKAGE_HAS_MYSQL + bool + +config BR2_PACKAGE_PROVIDES_MYSQL + string + default "mariadb" if BR2_PACKAGE_MARIADB + default "oracle-mysql" if BR2_PACKAGE_ORACLE_MYSQL + +endif + +comment "mysql needs a toolchain w/ C++, threads" depends on BR2_USE_MMU depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/mysql/mysql.mk b/bsp/buildroot/package/mysql/mysql.mk index 534bd97d..d6556256 100644 --- a/bsp/buildroot/package/mysql/mysql.mk +++ b/bsp/buildroot/package/mysql/mysql.mk @@ -4,128 +4,4 @@ # ################################################################################ -MYSQL_VERSION_MAJOR = 5.1 -MYSQL_VERSION = $(MYSQL_VERSION_MAJOR).73 -MYSQL_SOURCE = mysql-$(MYSQL_VERSION).tar.gz -MYSQL_SITE = http://downloads.skysql.com/archives/mysql-$(MYSQL_VERSION_MAJOR) -MYSQL_INSTALL_STAGING = YES -MYSQL_DEPENDENCIES = readline ncurses -MYSQL_AUTORECONF = YES -MYSQL_LICENSE = GPLv2 -MYSQL_LICENSE_FILES = README COPYING - -MYSQL_CONF_ENV = \ - ac_cv_sys_restartable_syscalls=yes \ - ac_cv_path_PS=/bin/ps \ - ac_cv_FIND_PROC="/bin/ps p \$\$PID | grep -v grep | grep mysqld > /dev/null" \ - ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes \ - ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no \ - ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes \ - mysql_cv_new_rl_interface=yes - -MYSQL_CONF_OPTS = \ - --without-ndb-binlog \ - --without-docs \ - --without-man \ - --without-libedit \ - --without-readline \ - --with-low-memory \ - --enable-thread-safe-client \ - --disable-mysql-maintainer-mode - -# host-mysql only installs what is needed to build mysql, i.e. the -# gen_lex_hash tool, and it only builds the parts that are needed to -# create this tool -HOST_MYSQL_DEPENDENCIES = host-zlib host-ncurses - -HOST_MYSQL_CONF_OPTS = \ - --with-embedded-server \ - --disable-mysql-maintainer-mode - -define HOST_MYSQL_BUILD_CMDS - $(MAKE) -C $(@D)/include my_config.h - $(MAKE) -C $(@D)/mysys libmysys.a - $(MAKE) -C $(@D)/strings libmystrings.a - $(MAKE) -C $(@D)/vio libvio.a - $(MAKE) -C $(@D)/dbug libdbug.a - $(MAKE) -C $(@D)/regex libregex.a - $(MAKE) -C $(@D)/sql gen_lex_hash -endef - -define HOST_MYSQL_INSTALL_CMDS - $(INSTALL) -m 0755 $(@D)/sql/gen_lex_hash $(HOST_DIR)/usr/bin/ -endef - -ifeq ($(BR2_PACKAGE_OPENSSL),y) -MYSQL_DEPENDENCIES += openssl -endif - -ifeq ($(BR2_PACKAGE_ZLIB),y) -MYSQL_DEPENDENCIES += zlib -endif - -ifeq ($(BR2_PACKAGE_MYSQL_SERVER),y) -MYSQL_DEPENDENCIES += host-mysql host-bison - -MYSQL_CONF_OPTS += \ - --localstatedir=/var/mysql \ - --with-atomic-ops=up \ - --with-embedded-server \ - --without-query-cache \ - --without-plugin-partition \ - --without-plugin-daemon_example \ - --without-plugin-ftexample \ - --without-plugin-archive \ - --without-plugin-blackhole \ - --without-plugin-example \ - --without-plugin-federated \ - --without-plugin-ibmdb2i \ - --without-plugin-innobase \ - --without-plugin-innodb_plugin \ - --without-plugin-ndbcluster - -# Debugging is only available for the server, so no need for -# this if-block outside of the server if-block -ifeq ($(BR2_ENABLE_DEBUG),y) -MYSQL_CONF_OPTS += --with-debug=full -else -MYSQL_CONF_OPTS += --without-debug -endif - -define MYSQL_USERS - mysql -1 nogroup -1 * /var/mysql - - MySQL daemon -endef - -define MYSQL_ADD_FOLDER - $(INSTALL) -d $(TARGET_DIR)/var/mysql -endef - -MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_ADD_FOLDER - -define MYSQL_INSTALL_INIT_SYSV - $(INSTALL) -D -m 0755 package/mysql/S97mysqld \ - $(TARGET_DIR)/etc/init.d/S97mysqld -endef - -define MYSQL_INSTALL_INIT_SYSTEMD - $(INSTALL) -D -m 644 package/mysql/mysqld.service \ - $(TARGET_DIR)/usr/lib/systemd/system/mysqld.service - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants - ln -sf ../../../../usr/lib/systemd/system/mysqld.service \ - $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service -endef - -else -MYSQL_CONF_OPTS += \ - --without-server -endif - - -define MYSQL_REMOVE_TEST_PROGS - rm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench -endef - -MYSQL_POST_INSTALL_TARGET_HOOKS += MYSQL_REMOVE_TEST_PROGS - -$(eval $(autotools-package)) -$(eval $(host-autotools-package)) +$(eval $(virtual-package)) diff --git a/bsp/buildroot/package/nano/nano.hash b/bsp/buildroot/package/nano/nano.hash index 40a69426..aa3e27b9 100644 --- a/bsp/buildroot/package/nano/nano.hash +++ b/bsp/buildroot/package/nano/nano.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 22f79cc635458e0c0d110d211576f1edc03b112a62d73b914826a46547a6ac27 nano-2.6.2.tar.xz +sha256 752170643039e2c95a433de357f0c70a8c4c4c561a90a7e7259a63e225b659b9 nano-2.7.4.tar.xz diff --git a/bsp/buildroot/package/nano/nano.mk b/bsp/buildroot/package/nano/nano.mk index 7800b583..4632bed3 100644 --- a/bsp/buildroot/package/nano/nano.mk +++ b/bsp/buildroot/package/nano/nano.mk @@ -4,8 +4,8 @@ # ################################################################################ -NANO_VERSION_MAJOR = 2.6 -NANO_VERSION = $(NANO_VERSION_MAJOR).2 +NANO_VERSION_MAJOR = 2.7 +NANO_VERSION = $(NANO_VERSION_MAJOR).4 NANO_SITE = https://www.nano-editor.org/dist/v$(NANO_VERSION_MAJOR) NANO_SOURCE = nano-$(NANO_VERSION).tar.xz NANO_LICENSE = GPLv3+ diff --git a/bsp/buildroot/package/nanocom/nanocom.mk b/bsp/buildroot/package/nanocom/nanocom.mk index 293dd091..caab3680 100644 --- a/bsp/buildroot/package/nanocom/nanocom.mk +++ b/bsp/buildroot/package/nanocom/nanocom.mk @@ -12,7 +12,7 @@ NANOCOM_LICENSE = GPLv2+ NANOCOM_LICENSE_FILES = COPYING define NANOCOM_BUILD_CMDS - $(MAKE) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" -C $(@D) endef define NANOCOM_INSTALL_TARGET_CMDS diff --git a/bsp/buildroot/package/ncftp/ncftp.hash b/bsp/buildroot/package/ncftp/ncftp.hash index 11695894..0a7c26c9 100644 --- a/bsp/buildroot/package/ncftp/ncftp.hash +++ b/bsp/buildroot/package/ncftp/ncftp.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 b4ebe2415761a5137cd1d313c8fc1352f26d8963cc9e9e354e29720aa2089d42 ncftp-3.2.5-src.tar.bz2 +sha256 7abd3e8f848f0efb4bb6a4bc5da58a59524d4378fc8d70a52adb0fe1fd00b89d ncftp-3.2.6-src.tar.xz diff --git a/bsp/buildroot/package/ncftp/ncftp.mk b/bsp/buildroot/package/ncftp/ncftp.mk index 28b03b88..5c88556a 100644 --- a/bsp/buildroot/package/ncftp/ncftp.mk +++ b/bsp/buildroot/package/ncftp/ncftp.mk @@ -4,8 +4,8 @@ # ################################################################################ -NCFTP_VERSION = 3.2.5 -NCFTP_SOURCE = ncftp-$(NCFTP_VERSION)-src.tar.bz2 +NCFTP_VERSION = 3.2.6 +NCFTP_SOURCE = ncftp-$(NCFTP_VERSION)-src.tar.xz NCFTP_SITE = ftp://ftp.ncftp.com/ncftp NCFTP_TARGET_BINS = ncftp NCFTP_LICENSE = Clarified Artistic License diff --git a/bsp/buildroot/package/ncmpc/ncmpc.hash b/bsp/buildroot/package/ncmpc/ncmpc.hash index 1acc64dc..e7646b2e 100644 --- a/bsp/buildroot/package/ncmpc/ncmpc.hash +++ b/bsp/buildroot/package/ncmpc/ncmpc.hash @@ -1,2 +1,2 @@ -# Calculated locally -sha256 0e6f76b2b11449cfa479d2830ac681f4e3bff54a95a9134b069dd5a173b4c3e9 ncmpc-0.24.tar.xz +# Locally calculated after checking pgp signature +sha256 6e328acb71d06ae9e6c5fced99bc28ae78bcab1a73130b42ce9ab08a814ecea4 ncmpc-0.25.tar.xz diff --git a/bsp/buildroot/package/ncmpc/ncmpc.mk b/bsp/buildroot/package/ncmpc/ncmpc.mk index 050b6b83..b5fa7cdf 100644 --- a/bsp/buildroot/package/ncmpc/ncmpc.mk +++ b/bsp/buildroot/package/ncmpc/ncmpc.mk @@ -5,7 +5,7 @@ ################################################################################ NCMPC_VERSION_MAJOR = 0 -NCMPC_VERSION = $(NCMPC_VERSION_MAJOR).24 +NCMPC_VERSION = $(NCMPC_VERSION_MAJOR).25 NCMPC_SOURCE = ncmpc-$(NCMPC_VERSION).tar.xz NCMPC_SITE = http://www.musicpd.org/download/ncmpc/$(NCMPC_VERSION_MAJOR) NCMPC_DEPENDENCIES = host-pkgconf libglib2 libmpdclient ncurses diff --git a/bsp/buildroot/package/ncurses/Config.in b/bsp/buildroot/package/ncurses/Config.in index 44713f9e..92be1643 100644 --- a/bsp/buildroot/package/ncurses/Config.in +++ b/bsp/buildroot/package/ncurses/Config.in @@ -18,21 +18,6 @@ config BR2_PACKAGE_NCURSES_WCHAR help Enable wide char & UTF-8 support in ncurses libraries -config BR2_PACKAGE_NCURSES_TARGET_PANEL - bool "ncurses libpanel in target" - help - Includes ncurses dynamic libpanel in target - -config BR2_PACKAGE_NCURSES_TARGET_FORM - bool "ncurses libform in target" - help - Includes ncurses dynamic libform in target - -config BR2_PACKAGE_NCURSES_TARGET_MENU - bool "ncurses libmenu in target" - help - Includes ncurses dynamic libmenu in target - config BR2_PACKAGE_NCURSES_TARGET_PROGS bool "ncurses programs" help diff --git a/bsp/buildroot/package/ncurses/ncurses.mk b/bsp/buildroot/package/ncurses/ncurses.mk index 27648249..9d1b75d6 100644 --- a/bsp/buildroot/package/ncurses/ncurses.mk +++ b/bsp/buildroot/package/ncurses/ncurses.mk @@ -8,7 +8,6 @@ NCURSES_VERSION = 5.9 NCURSES_SITE = $(BR2_GNU_MIRROR)/ncurses NCURSES_INSTALL_STAGING = YES NCURSES_DEPENDENCIES = host-ncurses -NCURSES_PROGS = clear infocmp tabs tic toe tput tset NCURSES_LICENSE = MIT with advertising clause NCURSES_LICENSE_FILES = README NCURSES_CONFIG_SCRIPTS = ncurses$(NCURSES_LIB_SUFFIX)$(NCURSES_ABI_VERSION)-config @@ -50,11 +49,6 @@ else NCURSES_CONF_OPTS += --without-gpm endif -NCURSES_LIBS-y = ncurses -NCURSES_LIBS-$(BR2_PACKAGE_NCURSES_TARGET_MENU) += menu -NCURSES_LIBS-$(BR2_PACKAGE_NCURSES_TARGET_PANEL) += panel -NCURSES_LIBS-$(BR2_PACKAGE_NCURSES_TARGET_FORM) += form - NCURSES_TERMINFO_FILES = \ a/ansi \ l/linux \ @@ -73,38 +67,36 @@ NCURSES_TERMINFO_FILES = \ ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) NCURSES_CONF_OPTS += --enable-widec NCURSES_LIB_SUFFIX = w +NCURSES_LIBS = ncurses menu panel form define NCURSES_LINK_LIBS_STATIC - $(foreach lib,$(NCURSES_LIBS-y:%=lib%), \ - ln -sf $(lib)$(NCURSES_LIB_SUFFIX).a $(1)/usr/lib/$(lib).a + $(foreach lib,$(NCURSES_LIBS:%=lib%), \ + ln -sf $(lib)$(NCURSES_LIB_SUFFIX).a $(STAGING_DIR)/usr/lib/$(lib).a ) ln -sf libncurses$(NCURSES_LIB_SUFFIX).a \ - $(1)/usr/lib/libcurses.a + $(STAGING_DIR)/usr/lib/libcurses.a endef define NCURSES_LINK_LIBS_SHARED - $(foreach lib,$(NCURSES_LIBS-y:%=lib%), \ - ln -sf $(lib)$(NCURSES_LIB_SUFFIX).so $(1)/usr/lib/$(lib).so + $(foreach lib,$(NCURSES_LIBS:%=lib%), \ + ln -sf $(lib)$(NCURSES_LIB_SUFFIX).so $(STAGING_DIR)/usr/lib/$(lib).so ) ln -sf libncurses$(NCURSES_LIB_SUFFIX).so \ - $(1)/usr/lib/libcurses.so + $(STAGING_DIR)/usr/lib/libcurses.so endef define NCURSES_LINK_PC - $(foreach pc,$(NCURSES_LIBS-y), \ + $(foreach pc,$(NCURSES_LIBS), \ ln -sf $(pc)$(NCURSES_LIB_SUFFIX).pc \ - $(1)/usr/lib/pkgconfig/$(pc).pc + $(STAGING_DIR)/usr/lib/pkgconfig/$(pc).pc ) endef -NCURSES_LINK_TARGET_LIBS = \ - $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_STATIC,$(TARGET_DIR));) \ - $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_SHARED,$(TARGET_DIR))) NCURSES_LINK_STAGING_LIBS = \ - $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_STATIC,$(STAGING_DIR));) \ - $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_SHARED,$(STAGING_DIR))) + $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_STATIC);) \ + $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_SHARED)) -NCURSES_LINK_STAGING_PC = $(call NCURSES_LINK_PC,$(STAGING_DIR)) +NCURSES_LINK_STAGING_PC = $(call NCURSES_LINK_PC) NCURSES_CONF_OPTS += --enable-ext-colors NCURSES_ABI_VERSION = 6 @@ -127,41 +119,26 @@ endif # ncurses breaks with parallel build, but takes quite a while to # build single threaded. Work around it similar to how Gentoo does define NCURSES_BUILD_CMDS - $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) sources + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) sources rm -rf $(@D)/misc/pc-files - $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) endef -ifneq ($(BR2_STATIC_LIBS),y) -define NCURSES_INSTALL_TARGET_LIBS - $(foreach lib,$(NCURSES_LIBS-y:%=lib%), \ - cp -dpf $(NCURSES_DIR)/lib/$(lib)$(NCURSES_LIB_SUFFIX).so* \ - $(TARGET_DIR)/usr/lib/ - ) -endef -endif - ifeq ($(BR2_PACKAGE_NCURSES_TARGET_PROGS),y) -define NCURSES_INSTALL_TARGET_PROGS - $(foreach prog,$(NCURSES_PROGS), \ - $(INSTALL) -m 0755 $(NCURSES_DIR)/progs/$(prog) \ - $(TARGET_DIR)/usr/bin/$(prog) - ) +define NCURSES_TARGET_SYMLINK_RESET ln -sf tset $(TARGET_DIR)/usr/bin/reset endef +NCURSES_POST_INSTALL_TARGET_HOOKS += NCURSES_TARGET_SYMLINK_RESET endif -define NCURSES_INSTALL_TARGET_CMDS - mkdir -p $(TARGET_DIR)/usr/lib - $(NCURSES_INSTALL_TARGET_LIBS) - $(NCURSES_LINK_TARGET_LIBS) - $(NCURSES_INSTALL_TARGET_PROGS) - ln -snf /usr/share/terminfo $(TARGET_DIR)/usr/lib/terminfo - $(foreach terminfo,$(NCURSES_TERMINFO_FILES),\ - $(INSTALL) -D -m 0644 $(STAGING_DIR)/usr/share/terminfo/$(terminfo) \ - $(TARGET_DIR)/usr/share/terminfo/$(terminfo) +define NCURSES_TARGET_CLEANUP_TERMINFO + $(RM) -rf $(TARGET_DIR)/usr/share/terminfo $(TARGET_DIR)/usr/share/tabset + $(foreach t,$(NCURSES_TERMINFO_FILES), \ + $(INSTALL) -D -m 0644 $(STAGING_DIR)/usr/share/terminfo/$(t) \ + $(TARGET_DIR)/usr/share/terminfo/$(t) ) -endef # NCURSES_INSTALL_TARGET_CMDS +endef +NCURSES_POST_INSTALL_TARGET_HOOKS += NCURSES_TARGET_CLEANUP_TERMINFO # # On systems with an older version of tic, the installation of ncurses hangs @@ -169,8 +146,8 @@ endef # NCURSES_INSTALL_TARGET_CMDS # ourselves, and use that during installation. # define HOST_NCURSES_BUILD_CMDS - $(MAKE1) -C $(@D) sources - $(MAKE) -C $(@D)/progs tic + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) sources + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/progs tic endef HOST_NCURSES_CONF_OPTS = \ diff --git a/bsp/buildroot/package/neon/neon.hash b/bsp/buildroot/package/neon/neon.hash index 9db5f82e..d66b6fd7 100644 --- a/bsp/buildroot/package/neon/neon.hash +++ b/bsp/buildroot/package/neon/neon.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 2962cfcb5d30f3272e3d2fa0e473434419770a3801afe3d46e5d1650787990c2 neon-0.30.0.tar.gz +sha256 db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca neon-0.30.2.tar.gz diff --git a/bsp/buildroot/package/neon/neon.mk b/bsp/buildroot/package/neon/neon.mk index 13d80844..ca1a6bd8 100644 --- a/bsp/buildroot/package/neon/neon.mk +++ b/bsp/buildroot/package/neon/neon.mk @@ -4,7 +4,7 @@ # ################################################################################ -NEON_VERSION = 0.30.0 +NEON_VERSION = 0.30.2 NEON_SITE = http://www.webdav.org/neon NEON_LICENSE = LGPLv2+ (library), GPLv2+ (manual and tests) NEON_LICENSE_FILES = src/COPYING.LIB test/COPYING README diff --git a/bsp/buildroot/package/net-tools/0002-iptunnel.c-do-not-include-netinet-ip.h.patch b/bsp/buildroot/package/net-tools/0002-iptunnel.c-do-not-include-netinet-ip.h.patch new file mode 100644 index 00000000..a8658c4f --- /dev/null +++ b/bsp/buildroot/package/net-tools/0002-iptunnel.c-do-not-include-netinet-ip.h.patch @@ -0,0 +1,72 @@ +From eec38a200357b195efbb23bb645ab721c040f246 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Thu, 3 Nov 2016 12:59:39 +0000 +Subject: [PATCH] iptunnel.c: do not include netinet/ip.h + +This fixes a struct redefinition problem like this one: + +================================ +In file included from /usr/include/linux/if_tunnel.h:6:0, + from iptunnel.c:34: +/usr/include/linux/ip.h:85:8: error: redefinition of 'struct iphdr' + struct iphdr { + ^ +In file included from iptunnel.c:29:0: +/usr/include/netinet/ip.h:45:8: note: originally defined here + struct iphdr + ^ +================================ + +iptunnel.c includes netinet/ip.h which contains a definition of the +iphdr struct. + +iptunnel.c also includes linux/if_tunnel.h which includes linux/ip.h +which contains a definition of the iphdr struct. + +So, both netinet/ip.h and linux/ip.h define the iphdr struct, and both +of them have been included directly or indirectly by iptunnel.c. Because +of that the compilation fails due to a struct redefinition. + +The problem can be solved by just not including netinet/ip.h. + +However, some Linux headers included in certain toolchains may not have +an updated linux/if_tunnel.h which includes linux/ip.h, so we need to +include it unconditionally otherwise linux/if_tunnel.h will use the +struct iphdr before being defined and the compilation will also fail in +this way: + +================================ +In file included from iptunnel.c:33:0: +/usr/include/linux/if_tunnel.h:37:16: error: field 'iph' has incomplete type + struct iphdr iph; + ^ +================================ + +Upstream status: merge request sent +https://sourceforge.net/p/net-tools/code/merge-requests/4/ + +Signed-off-by: Vicente Olivert Riera +--- + iptunnel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/iptunnel.c b/iptunnel.c +index 3fe1b84..e2ec2d8 100644 +--- a/iptunnel.c ++++ b/iptunnel.c +@@ -26,11 +26,11 @@ + #include + #include + #include +-#include + #include + #include + #include + #include ++#include + #include + + #include "config.h" +-- +2.10.1 + diff --git a/bsp/buildroot/package/netplug/netplug.mk b/bsp/buildroot/package/netplug/netplug.mk index aeebcad2..a165192f 100644 --- a/bsp/buildroot/package/netplug/netplug.mk +++ b/bsp/buildroot/package/netplug/netplug.mk @@ -11,11 +11,11 @@ NETPLUG_LICENSE = GPLv2 NETPLUG_LICENSE_FILES = COPYING define NETPLUG_BUILD_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) endef define NETPLUG_INSTALL_TARGET_CMDS - $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install endef define NETPLUG_INSTALL_INIT_SYSV diff --git a/bsp/buildroot/package/netsniff-ng/Config.in b/bsp/buildroot/package/netsniff-ng/Config.in index e52bb25f..00617e37 100644 --- a/bsp/buildroot/package/netsniff-ng/Config.in +++ b/bsp/buildroot/package/netsniff-ng/Config.in @@ -7,8 +7,7 @@ config BR2_PACKAGE_NETSNIFF_NG select BR2_PACKAGE_LIBURCU select BR2_PACKAGE_LIBNET # Build with uClibc fails due to missing ceill() - # Build with musl fails due to various header issues - depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_TOOLCHAIN_USES_UCLIBC depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS @@ -17,7 +16,7 @@ config BR2_PACKAGE_NETSNIFF_NG networking toolkit. If you will, the Swiss army knife for network packets. -comment "netsniff-ng needs a glibc toolchain w/ threads, headers >= 3.0" +comment "netsniff-ng needs a glibc or musl toolchain w/ threads, headers >= 3.0" depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS - depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC \ + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC \ || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/bsp/buildroot/package/netsniff-ng/netsniff-ng.hash b/bsp/buildroot/package/netsniff-ng/netsniff-ng.hash index 52124977..67b3331a 100644 --- a/bsp/buildroot/package/netsniff-ng/netsniff-ng.hash +++ b/bsp/buildroot/package/netsniff-ng/netsniff-ng.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 902661bcdbc129c6a6c1f69a72f921fffc9e765d005568dc153f09ca0097c180 netsniff-ng-v0.6.1.tar.gz +sha256 62e8aa970a4f46cdaddf54daf8ea26e7ae9f9f358efaf0651799c8c4e937c286 netsniff-ng-v0.6.2.tar.gz diff --git a/bsp/buildroot/package/netsniff-ng/netsniff-ng.mk b/bsp/buildroot/package/netsniff-ng/netsniff-ng.mk index ad97a887..4ec7e743 100644 --- a/bsp/buildroot/package/netsniff-ng/netsniff-ng.mk +++ b/bsp/buildroot/package/netsniff-ng/netsniff-ng.mk @@ -4,7 +4,7 @@ # ################################################################################ -NETSNIFF_NG_VERSION = v0.6.1 +NETSNIFF_NG_VERSION = v0.6.2 NETSNIFF_NG_SITE = $(call github,netsniff-ng,netsniff-ng,$(NETSNIFF_NG_VERSION)) NETSNIFF_NG_LICENSE = GPLv2 NETSNIFF_NG_LICENSE_FILES = README COPYING diff --git a/bsp/buildroot/package/netsnmp/0001-configure-Eliminate-the-hard-coded-libnl-3-include-p.patch b/bsp/buildroot/package/netsnmp/0001-configure-Eliminate-the-hard-coded-libnl-3-include-p.patch new file mode 100644 index 00000000..cf059223 --- /dev/null +++ b/bsp/buildroot/package/netsnmp/0001-configure-Eliminate-the-hard-coded-libnl-3-include-p.patch @@ -0,0 +1,300 @@ +From 57d6c3d36045aab8957ffeb7324728bf17faf8bd Mon Sep 17 00:00:00 2001 +From: Bart Van Assche +Date: Mon, 2 Feb 2015 20:31:29 +0100 +Subject: [PATCH] configure: Eliminate the hard-coded libnl-3 include path + +See also commit 3dde41998625fe0e24119a2e1f4509ba3ba2fd9a. + +(cherry picked from commit 852dcd644cfe4cfc7177649eaec163d6221f2be1) + +Original commit included modifications to configure script. +Do not keep these modifications, since they caused lots of conflicts, and +configure script is meant to be automatically generated. + +Signed-off-by: Julien Floret + +Conflicts: + configure +--- + aclocal.m4 | 1 + + configure.d/config_os_libs2 | 30 ++++++- + m4/pkg.m4 | 214 ++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 243 insertions(+), 2 deletions(-) + create mode 100644 m4/pkg.m4 + +diff --git a/aclocal.m4 b/aclocal.m4 +index cd80c7486f2f..45e3608ed480 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -22,3 +22,4 @@ m4_include([m4/ltversion.m4]) + m4_include([m4/lt~obsolete.m4]) + m4_include([m4/netsnmp_arg.m4]) + m4_include([m4/netsnmp_search_libs.m4]) ++m4_include([m4/pkg.m4]) +diff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2 +index 47491e24ce0a..10bd414b879e 100644 +--- a/configure.d/config_os_libs2 ++++ b/configure.d/config_os_libs2 +@@ -225,11 +225,37 @@ fi + if test "x$with_nl" != "xno"; then + case $target_os in + linux*) # Check for libnl (linux) ++ # The test below verifies whether the libnl-3 package been installed. ++ # This test works as follows: ++ # - If pkg-config was not installed at the time autogen.sh was run, ++ # the definition of the PKG_CHECK_EXISTS() macro will not be found by ++ # autogen.sh. Augogen.sh will generate a configure script that prints ++ # a warning about pkg-config and proceeds as if libnl-3 has not been ++ # installed. ++ # - If pkg-config was installed at the time autogen.sh was run, ++ # the generated configure script will try to detect the presence of ++ # the libnl-3 library by looking up compile and linker flags in the ++ # file called libnl-3.pc. ++ # - pkg-config settings can be overridden via the configure variables ++ # LIBNL3_CFLAGS and LIBNL3_LIBS (added by the pkg-config m4 macro's to ++ # the configure script -- see also ./configure --help). ++ # - The LIBNL3_CFLAGS and LIBNL3_LIBS configure variables can be used ++ # even if the pkg-config executable is not present on the system on ++ # which the configure script is run. ++ ifdef( ++ [PKG_CHECK_EXISTS], ++ [PKG_CHECK_EXISTS([libnl-3.0], ++ [PKG_CHECK_MODULES([LIBNL3], [libnl-3.0])]) ++ ], ++ AC_MSG_WARN([pkg-config has not been installed or is too old.]) ++ AC_MSG_WARN([Detection of libnl-3.0 will be skipped.]) ++ ) ++ + netsnmp_save_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-I/usr/include/libnl3 $CPPFLAGS" ++ CPPFLAGS="${LIBNL3_CFLAGS} $CPPFLAGS" + NETSNMP_SEARCH_LIBS(nl_connect, nl-3, + [AC_CHECK_HEADERS(netlink/netlink.h) +- EXTERNAL_MIBGROUP_INCLUDES="$EXTERNAL_MIBGROUP_INCLUDES -I/usr/include/libnl3"], ++ EXTERNAL_MIBGROUP_INCLUDES="$EXTERNAL_MIBGROUP_INCLUDES ${LIBNL3_CFLAGS}"], + [CPPFLAGS="$netsnmp_save_CPPFLAGS"], [], [], [LMIBLIBS]) + if test "x$ac_cv_header_netlink_netlink_h" != xyes; then + NETSNMP_SEARCH_LIBS(nl_connect, nl, [ +diff --git a/m4/pkg.m4 b/m4/pkg.m4 +new file mode 100644 +index 000000000000..c5b26b52e6cd +--- /dev/null ++++ b/m4/pkg.m4 +@@ -0,0 +1,214 @@ ++# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- ++# serial 1 (pkg-config-0.24) ++# ++# Copyright © 2004 Scott James Remnant . ++# ++# 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. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# PKG_PROG_PKG_CONFIG([MIN-VERSION]) ++# ---------------------------------- ++AC_DEFUN([PKG_PROG_PKG_CONFIG], ++[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) ++m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) ++m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) ++AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) ++AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) ++AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) ++ ++if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then ++ AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) ++fi ++if test -n "$PKG_CONFIG"; then ++ _pkg_min_version=m4_default([$1], [0.9.0]) ++ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) ++ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ PKG_CONFIG="" ++ fi ++fi[]dnl ++])# PKG_PROG_PKG_CONFIG ++ ++# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) ++# ++# Check to see whether a particular set of modules exists. Similar ++# to PKG_CHECK_MODULES(), but does not set variables or print errors. ++# ++# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++# only at the first occurence in configure.ac, so if the first place ++# it's called might be skipped (such as if it is within an "if", you ++# have to call PKG_CHECK_EXISTS manually ++# -------------------------------------------------------------- ++AC_DEFUN([PKG_CHECK_EXISTS], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++if test -n "$PKG_CONFIG" && \ ++ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then ++ m4_default([$2], [:]) ++m4_ifvaln([$3], [else ++ $3])dnl ++fi]) ++ ++# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) ++# --------------------------------------------- ++m4_define([_PKG_CONFIG], ++[if test -n "$$1"; then ++ pkg_cv_[]$1="$$1" ++ elif test -n "$PKG_CONFIG"; then ++ PKG_CHECK_EXISTS([$3], ++ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` ++ test "x$?" != "x0" && pkg_failed=yes ], ++ [pkg_failed=yes]) ++ else ++ pkg_failed=untried ++fi[]dnl ++])# _PKG_CONFIG ++ ++# _PKG_SHORT_ERRORS_SUPPORTED ++# ----------------------------- ++AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then ++ _pkg_short_errors_supported=yes ++else ++ _pkg_short_errors_supported=no ++fi[]dnl ++])# _PKG_SHORT_ERRORS_SUPPORTED ++ ++ ++# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], ++# [ACTION-IF-NOT-FOUND]) ++# ++# ++# Note that if there is a possibility the first call to ++# PKG_CHECK_MODULES might not happen, you should be sure to include an ++# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac ++# ++# ++# -------------------------------------------------------------- ++AC_DEFUN([PKG_CHECK_MODULES], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl ++AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl ++ ++pkg_failed=no ++AC_MSG_CHECKING([for $1]) ++ ++_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) ++_PKG_CONFIG([$1][_LIBS], [libs], [$2]) ++ ++m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS ++and $1[]_LIBS to avoid the need to call pkg-config. ++See the pkg-config man page for more details.]) ++ ++if test $pkg_failed = yes; then ++ AC_MSG_RESULT([no]) ++ _PKG_SHORT_ERRORS_SUPPORTED ++ if test $_pkg_short_errors_supported = yes; then ++ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` ++ else ++ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` ++ fi ++ # Put the nasty error message in config.log where it belongs ++ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ++ ++ m4_default([$4], [AC_MSG_ERROR( ++[Package requirements ($2) were not met: ++ ++$$1_PKG_ERRORS ++ ++Consider adjusting the PKG_CONFIG_PATH environment variable if you ++installed software in a non-standard prefix. ++ ++_PKG_TEXT])[]dnl ++ ]) ++elif test $pkg_failed = untried; then ++ AC_MSG_RESULT([no]) ++ m4_default([$4], [AC_MSG_FAILURE( ++[The pkg-config script could not be found or is too old. Make sure it ++is in your PATH or set the PKG_CONFIG environment variable to the full ++path to pkg-config. ++ ++_PKG_TEXT ++ ++To get pkg-config, see .])[]dnl ++ ]) ++else ++ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS ++ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS ++ AC_MSG_RESULT([yes]) ++ $3 ++fi[]dnl ++])# PKG_CHECK_MODULES ++ ++ ++# PKG_INSTALLDIR(DIRECTORY) ++# ------------------------- ++# Substitutes the variable pkgconfigdir as the location where a module ++# should install pkg-config .pc files. By default the directory is ++# $libdir/pkgconfig, but the default can be changed by passing ++# DIRECTORY. The user can override through the --with-pkgconfigdir ++# parameter. ++AC_DEFUN([PKG_INSTALLDIR], ++[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) ++m4_pushdef([pkg_description], ++ [pkg-config installation directory @<:@]pkg_default[@:>@]) ++AC_ARG_WITH([pkgconfigdir], ++ [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, ++ [with_pkgconfigdir=]pkg_default) ++AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) ++m4_popdef([pkg_default]) ++m4_popdef([pkg_description]) ++]) dnl PKG_INSTALLDIR ++ ++ ++# PKG_NOARCH_INSTALLDIR(DIRECTORY) ++# ------------------------- ++# Substitutes the variable noarch_pkgconfigdir as the location where a ++# module should install arch-independent pkg-config .pc files. By ++# default the directory is $datadir/pkgconfig, but the default can be ++# changed by passing DIRECTORY. The user can override through the ++# --with-noarch-pkgconfigdir parameter. ++AC_DEFUN([PKG_NOARCH_INSTALLDIR], ++[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) ++m4_pushdef([pkg_description], ++ [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) ++AC_ARG_WITH([noarch-pkgconfigdir], ++ [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, ++ [with_noarch_pkgconfigdir=]pkg_default) ++AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) ++m4_popdef([pkg_default]) ++m4_popdef([pkg_description]) ++]) dnl PKG_NOARCH_INSTALLDIR ++ ++ ++# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, ++# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) ++# ------------------------------------------- ++# Retrieves the value of the pkg-config variable for the given module. ++AC_DEFUN([PKG_CHECK_VAR], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl ++ ++_PKG_CONFIG([$1], [variable="][$3]["], [$2]) ++AS_VAR_COPY([$1], [pkg_cv_][$1]) ++ ++AS_VAR_IF([$1], [""], [$5], [$4])dnl ++])# PKG_CHECK_VAR +-- +2.1.0 + diff --git a/bsp/buildroot/package/netsnmp/netsnmp.mk b/bsp/buildroot/package/netsnmp/netsnmp.mk index 48273b51..0f4b7d80 100644 --- a/bsp/buildroot/package/netsnmp/netsnmp.mk +++ b/bsp/buildroot/package/netsnmp/netsnmp.mk @@ -36,6 +36,7 @@ NETSNMP_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LIB_LDCONFIG_CMD=true inst NETSNMP_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) LIB_LDCONFIG_CMD=true install NETSNMP_MAKE = $(MAKE1) NETSNMP_CONFIG_SCRIPTS = net-snmp-config +NETSNMP_AUTORECONF = YES NETSNMP_BLOAT_MIBS = BRIDGE DISMAN-EVENT DISMAN-SCHEDULE DISMAN-SCRIPT EtherLike RFC-1215 RFC1155-SMI RFC1213 SCTP SMUX @@ -45,6 +46,13 @@ else NETSNMP_CONF_OPTS += --with-endianness=little endif +ifeq ($(BR2_PACKAGE_LIBNL),y) +NETSNMP_DEPENDENCIES += host-pkgconf libnl +NETSNMP_CONF_OPTS += --with-nl +else +NETSNMP_CONF_OPTS += --without-nl +endif + # OpenSSL ifeq ($(BR2_PACKAGE_OPENSSL),y) NETSNMP_DEPENDENCIES += openssl diff --git a/bsp/buildroot/package/nettle/0002-fix-CVE-2016-6489.patch b/bsp/buildroot/package/nettle/0002-fix-CVE-2016-6489.patch deleted file mode 100644 index 8c99ff72..00000000 --- a/bsp/buildroot/package/nettle/0002-fix-CVE-2016-6489.patch +++ /dev/null @@ -1,181 +0,0 @@ -From 6450224f3e3c78fdfa37eadbe6ada8301279f6c1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Niels=20M=C3=B6ller?= -Date: Mon, 20 Jun 2016 20:04:56 +0200 -Subject: Use mpz_powm_sec. -Subject: Check for invalid keys, with even p, in dsa_sign. -Subject: Reject invalid keys, with even moduli, in rsa_compute_root_tr. -Subject: Reject invalid RSA keys with even modulo. - -Patch status: upstream - -Signed-off-by: Gustavo Zacarias - -diff --git a/bignum.h b/bignum.h -index 24158e0..0d30534 100644 ---- a/bignum.h -+++ b/bignum.h -@@ -53,6 +53,8 @@ - # define mpz_combit mpz_combit - # define mpz_import mpz_import - # define mpz_export mpz_export -+/* Side-channel silent powm not available in mini-gmp. */ -+# define mpz_powm_sec mpz_powm - #else - # include - #endif -diff --git a/configure.ac b/configure.ac -index e1ee64c..1e88477 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -236,9 +236,9 @@ fi - # Checks for libraries - if test "x$enable_public_key" = "xyes" ; then - if test "x$enable_mini_gmp" = "xno" ; then -- AC_CHECK_LIB(gmp, __gmpz_getlimbn,, -+ AC_CHECK_LIB(gmp, __gmpz_powm_sec,, - [AC_MSG_WARN( -- [GNU MP not found, or not 3.1 or up, see http://gmplib.org/. -+ [GNU MP not found, or too old. GMP-5.0 or later is needed, see http://gmplib.org/. - Support for public key algorithms will be unavailable.])] - enable_public_key=no) - -diff --git a/dsa-sign.c b/dsa-sign.c -index 62c7d4a..b713743 100644 ---- a/dsa-sign.c -+++ b/dsa-sign.c -@@ -56,6 +56,11 @@ dsa_sign(const struct dsa_params *params, - mpz_t tmp; - int res; - -+ /* Check that p is odd, so that invalid keys don't result in a crash -+ inside mpz_powm_sec. */ -+ if (mpz_even_p (params->p)) -+ return 0; -+ - /* Select k, 0q); - mpz_sub_ui(tmp, tmp, 1); -@@ -65,7 +70,7 @@ dsa_sign(const struct dsa_params *params, - mpz_add_ui(k, k, 1); - - /* Compute r = (g^k (mod p)) (mod q) */ -- mpz_powm(tmp, params->g, k, params->p); -+ mpz_powm_sec(tmp, params->g, k, params->p); - mpz_fdiv_r(signature->r, tmp, params->q); - - /* Compute hash */ -diff --git a/rsa-blind.c b/rsa-blind.c -index 7662f50..16b03d7 100644 ---- a/rsa-blind.c -+++ b/rsa-blind.c -@@ -61,7 +61,7 @@ _rsa_blind (const struct rsa_public_key *pub, - while (!mpz_invert (ri, r, pub->n)); - - /* c = c*(r^e) mod n */ -- mpz_powm(r, r, pub->e, pub->n); -+ mpz_powm_sec(r, r, pub->e, pub->n); - mpz_mul(c, c, r); - mpz_fdiv_r(c, c, pub->n); - -diff --git a/rsa-sign-tr.c b/rsa-sign-tr.c -index 3d80ed4..8542cae 100644 ---- a/rsa-sign-tr.c -+++ b/rsa-sign-tr.c -@@ -60,7 +60,7 @@ rsa_blind (const struct rsa_public_key *pub, - while (!mpz_invert (ri, r, pub->n)); - - /* c = c*(r^e) mod n */ -- mpz_powm(r, r, pub->e, pub->n); -+ mpz_powm_sec(r, r, pub->e, pub->n); - mpz_mul(c, m, r); - mpz_fdiv_r(c, c, pub->n); - -@@ -88,6 +88,14 @@ rsa_compute_root_tr(const struct rsa_public_key *pub, - int res; - mpz_t t, mb, xb, ri; - -+ /* mpz_powm_sec handles only odd moduli. If p, q or n is even, the -+ key is invalid and rejected by rsa_private_key_prepare. However, -+ some applications, notably gnutls, don't use this function, and -+ we don't want an invalid key to lead to a crash down inside -+ mpz_powm_sec. So do an additional check here. */ -+ if (mpz_even_p (pub->n) || mpz_even_p (key->p) || mpz_even_p (key->q)) -+ return 0; -+ - mpz_init (mb); - mpz_init (xb); - mpz_init (ri); -@@ -97,7 +105,7 @@ rsa_compute_root_tr(const struct rsa_public_key *pub, - - rsa_compute_root (key, xb, mb); - -- mpz_powm(t, xb, pub->e, pub->n); -+ mpz_powm_sec(t, xb, pub->e, pub->n); - res = (mpz_cmp(mb, t) == 0); - - if (res) -diff --git a/rsa-sign.c b/rsa-sign.c -index eba7388..4832352 100644 ---- a/rsa-sign.c -+++ b/rsa-sign.c -@@ -96,11 +96,11 @@ rsa_compute_root(const struct rsa_private_key *key, - - /* Compute xq = m^d % q = (m%q)^b % q */ - mpz_fdiv_r(xq, m, key->q); -- mpz_powm(xq, xq, key->b, key->q); -+ mpz_powm_sec(xq, xq, key->b, key->q); - - /* Compute xp = m^d % p = (m%p)^a % p */ - mpz_fdiv_r(xp, m, key->p); -- mpz_powm(xp, xp, key->a, key->p); -+ mpz_powm_sec(xp, xp, key->a, key->p); - - /* Set xp' = (xp - xq) c % p. */ - mpz_sub(xp, xp, xq); -diff --git a/rsa.c b/rsa.c -index 19d93de..f594140 100644 ---- a/rsa.c -+++ b/rsa.c -@@ -58,13 +58,18 @@ rsa_public_key_clear(struct rsa_public_key *key) - } - - /* Computes the size, in octets, of a the modulo. Returns 0 if the -- * modulo is too small to be useful. */ -- -+ * modulo is too small to be useful, or otherwise appears invalid. */ - size_t - _rsa_check_size(mpz_t n) - { - /* Round upwards */ -- size_t size = (mpz_sizeinbase(n, 2) + 7) / 8; -+ size_t size; -+ -+ /* Even moduli are invalid, and not supported by mpz_powm_sec. */ -+ if (mpz_even_p (n)) -+ return 0; -+ -+ size = (mpz_sizeinbase(n, 2) + 7) / 8; - - if (size < RSA_MINIMUM_N_OCTETS) - return 0; -diff --git a/testsuite/rsa-test.c b/testsuite/rsa-test.c -index e9b1c03..a429664 100644 ---- a/testsuite/rsa-test.c -+++ b/testsuite/rsa-test.c -@@ -57,6 +57,13 @@ test_main(void) - - test_rsa_sha512(&pub, &key, expected); - -+ /* Test detection of invalid keys with even modulo */ -+ mpz_clrbit (pub.n, 0); -+ ASSERT (!rsa_public_key_prepare (&pub)); -+ -+ mpz_clrbit (key.p, 0); -+ ASSERT (!rsa_private_key_prepare (&key)); -+ - /* 777-bit key, generated by - * - * lsh-keygen -a rsa -l 777 -f advanced-hex --- -2.7.3 - diff --git a/bsp/buildroot/package/nettle/nettle.hash b/bsp/buildroot/package/nettle/nettle.hash index 6332e13a..cd911c0d 100644 --- a/bsp/buildroot/package/nettle/nettle.hash +++ b/bsp/buildroot/package/nettle/nettle.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 ea4283def236413edab5a4cf9cf32adf540c8df1b9b67641cfc2302fca849d97 nettle-3.2.tar.gz +sha256 46942627d5d0ca11720fec18d81fc38f7ef837ea4197c1f630e71ce0d470b11e nettle-3.3.tar.gz diff --git a/bsp/buildroot/package/nettle/nettle.mk b/bsp/buildroot/package/nettle/nettle.mk index 0fbe57b8..31789ec2 100644 --- a/bsp/buildroot/package/nettle/nettle.mk +++ b/bsp/buildroot/package/nettle/nettle.mk @@ -4,7 +4,7 @@ # ################################################################################ -NETTLE_VERSION = 3.2 +NETTLE_VERSION = 3.3 NETTLE_SITE = http://www.lysator.liu.se/~nisse/archive NETTLE_DEPENDENCIES = gmp NETTLE_INSTALL_STAGING = YES @@ -13,8 +13,6 @@ NETTLE_LICENSE_FILES = COPYING.LESSERv3 COPYINGv2 # don't include openssl support for (unused) examples as it has problems # with static linking NETTLE_CONF_OPTS = --disable-openssl -# For 0002-fix-CVE-2016-6489.patch -NETTLE_AUTORECONF = YES # ARM assembly requires v6+ ISA ifeq ($(BR2_ARM_CPU_ARMV4)$(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV7M),y) diff --git a/bsp/buildroot/package/network-manager/0001-platform-move-link_get_user_ipv6ll_enabled-to-nm-platform-linux.patch b/bsp/buildroot/package/network-manager/0001-platform-move-link_get_user_ipv6ll_enabled-to-nm-platform-linux.patch deleted file mode 100644 index 4aebaef8..00000000 --- a/bsp/buildroot/package/network-manager/0001-platform-move-link_get_user_ipv6ll_enabled-to-nm-platform-linux.patch +++ /dev/null @@ -1,87 +0,0 @@ -From: Lubomir Rintel -Date: Mon, 20 Jul 2015 11:01:04 +0200 -Subject: [PATCH] platform: move link_get_user_ipv6ll_enabled() to nm-platform-linux -Source: https://mail.gnome.org/archives/networkmanager-list/2015-July/msg00028.html - -This fixes build error kernels headers < 3.17. - -Reported-by: Petr Vorel -Signed-off-by: Lubomir Rintel -Signed-off-by: Petr Vorel ---- - src/platform/nm-linux-platform.c | 16 ++++++++++++++++ - src/platform/nm-platform.c | 11 ++--------- - src/platform/nm-platform.h | 1 + - 3 files changed, 19 insertions(+), 9 deletions(-) - -diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c -index f3a9254..b6b8e33 100644 ---- a/src/platform/nm-linux-platform.c -+++ b/src/platform/nm-linux-platform.c -@@ -2987,6 +2987,21 @@ link_set_user_ipv6ll_enabled (NMPlatform *platform, int ifindex, gboolean enable - } - - static gboolean -+link_get_user_ipv6ll_enabled (NMPlatform *platform, int ifindex) -+{ -+#if HAVE_LIBNL_INET6_ADDR_GEN_MODE -+ { -+ const NMPlatformLink *pllink; -+ -+ pllink = nm_platform_link_get (platform, ifindex); -+ if (pllink && pllink->inet6_addr_gen_mode_inv) -+ return _nm_platform_uint8_inv (pllink->inet6_addr_gen_mode_inv) == IN6_ADDR_GEN_MODE_NONE; -+ } -+#endif -+ return FALSE; -+} -+ -+static gboolean - link_supports_carrier_detect (NMPlatform *platform, int ifindex) - { - const char *name = nm_platform_link_get_name (platform, ifindex); -@@ -4968,6 +4968,7 @@ - platform_class->link_get_udev_device = link_get_udev_device; - - platform_class->link_set_user_ipv6ll_enabled = link_set_user_ipv6ll_enabled; -+ platform_class->link_get_user_ipv6ll_enabled = link_get_user_ipv6ll_enabled; - - platform_class->link_set_address = link_set_address; - platform_class->link_get_permanent_address = link_get_permanent_address; - -diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c -index 8803377..ee4b1a1 100644 ---- a/src/platform/nm-platform.c -+++ b/src/platform/nm-platform.c -@@ -965,15 +965,8 @@ - - g_return_val_if_fail (ifindex >= 0, FALSE); - --#if HAVE_LIBNL_INET6_ADDR_GEN_MODE -- { -- const NMPlatformLink *pllink; -- -- pllink = nm_platform_link_get (self, ifindex); -- if (pllink && pllink->inet6_addr_gen_mode_inv) -- return _nm_platform_uint8_inv (pllink->inet6_addr_gen_mode_inv) == IN6_ADDR_GEN_MODE_NONE; -- } --#endif -+ if (klass->link_get_user_ipv6ll_enabled) -+ return klass->link_get_user_ipv6ll_enabled (self, ifindex); - return FALSE; - } - -diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h -index 16eb351..9ef4080 100644 ---- a/src/platform/nm-platform.h -+++ b/src/platform/nm-platform.h -@@ -446,6 +446,7 @@ - GObject *(*link_get_udev_device) (NMPlatform *self, int ifindex); - - gboolean (*link_set_user_ipv6ll_enabled) (NMPlatform *, int ifindex, gboolean enabled); -+ gboolean (*link_get_user_ipv6ll_enabled) (NMPlatform *, int ifindex); - - gboolean (*link_get_permanent_address) (NMPlatform *, - int ifindex, --- -2.4.3 diff --git a/bsp/buildroot/package/network-manager/0002-accept-auto-mode-interfaces.patch b/bsp/buildroot/package/network-manager/0002-accept-auto-mode-interfaces.patch deleted file mode 100644 index d7ef3488..00000000 --- a/bsp/buildroot/package/network-manager/0002-accept-auto-mode-interfaces.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 0f6febc6fbeafde62e6e0a8c12f57204d94166fb Mon Sep 17 00:00:00 2001 -From: Francesco Giudici -Date: Fri, 11 Mar 2016 09:55:39 +0100 -Subject: wifi: hack for wext devices reporting IW_MODE_AUTO configuration - mode. - -Backport from upstream commit -https://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=0f6febc6fbeafde62e6e0a8c12f57204d94166f. - -Signed-off-by: Ilya A. Volynets-Evenbakh - -diff --git a/src/platform/wifi/wifi-utils-wext.c b/src/platform/wifi/wifi-utils-wext.c -index 26f4ce4..af285b4 100644 ---- a/src/platform/wifi/wifi-utils-wext.c -+++ b/src/platform/wifi/wifi-utils-wext.c -@@ -118,6 +118,7 @@ wifi_wext_get_mode (WifiData *data) - case IW_MODE_MASTER: - return NM_802_11_MODE_AP; - case IW_MODE_INFRA: -+ case IW_MODE_AUTO: /* hack for WEXT devices reporting IW_MODE_AUTO */ - return NM_802_11_MODE_INFRA; - default: - break; --- -cgit v0.10.2 - diff --git a/bsp/buildroot/package/network-manager/network-manager.hash b/bsp/buildroot/package/network-manager/network-manager.hash index ab601bc1..94f3e267 100644 --- a/bsp/buildroot/package/network-manager/network-manager.hash +++ b/bsp/buildroot/package/network-manager/network-manager.hash @@ -1,2 +1,2 @@ -# From http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/1.0/NetworkManager-1.0.12.sha256sum -sha256 3a470f8c60109b1acb5784ddc2423501706b5fe34c793a6faee87e591eb04a9e NetworkManager-1.0.12.tar.xz +# From http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/1.4/NetworkManager-1.4.2.sha256sum +sha256 a864e347ddf6da8dabd40e0185b8c10a655d4a94b45cbaa2b3bb4b5e8360d204 NetworkManager-1.4.2.tar.xz diff --git a/bsp/buildroot/package/network-manager/network-manager.mk b/bsp/buildroot/package/network-manager/network-manager.mk index 12b8f3c5..3d7a1bf0 100644 --- a/bsp/buildroot/package/network-manager/network-manager.mk +++ b/bsp/buildroot/package/network-manager/network-manager.mk @@ -4,8 +4,8 @@ # ################################################################################ -NETWORK_MANAGER_VERSION_MAJOR = 1.0 -NETWORK_MANAGER_VERSION = $(NETWORK_MANAGER_VERSION_MAJOR).12 +NETWORK_MANAGER_VERSION_MAJOR = 1.4 +NETWORK_MANAGER_VERSION = $(NETWORK_MANAGER_VERSION_MAJOR).2 NETWORK_MANAGER_SOURCE = NetworkManager-$(NETWORK_MANAGER_VERSION).tar.xz NETWORK_MANAGER_SITE = http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/$(NETWORK_MANAGER_VERSION_MAJOR) NETWORK_MANAGER_INSTALL_STAGING = YES @@ -24,7 +24,6 @@ NETWORK_MANAGER_CONF_ENV = \ NETWORK_MANAGER_CONF_OPTS = \ - --mandir=$(STAGING_DIR)/usr/man/ \ --disable-tests \ --disable-qt \ --disable-more-warnings \ diff --git a/bsp/buildroot/package/newt/0001-Use-CC-instead-of-CPP-to-generate-.depend-files.patch b/bsp/buildroot/package/newt/0001-Use-CC-instead-of-CPP-to-generate-.depend-files.patch deleted file mode 100644 index 853472bf..00000000 --- a/bsp/buildroot/package/newt/0001-Use-CC-instead-of-CPP-to-generate-.depend-files.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 65754effe16506a7a0a04069c8b6e1281811604d Mon Sep 17 00:00:00 2001 -From: Samuel Martin -Date: Sat, 10 Jan 2015 11:54:10 +0100 -Subject: [PATCH newt 1/2] Use $(CC) instead of $(CPP) to generate .depend - files - -Use $(CC) instead of $(CPP) to generate .depend file because '$(CPP) --M' call does not support multiple input files. This avoid the -following error: - -make[1]: Entering directory `/opt/br/output/build/newt-0.51.0' -/opt/br/output/host/usr/bin/arm-none-linux-gnueabi-cpp -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -M newt.c button.c form.c checkbox.c entry.c label.c listbox.c scrollbar.c textbox.c scale.c grid.c windows.c buttonbar.c checkboxtree.c > .depend -arm-none-linux-gnueabi-cpp: too many input files -make[1]: *** [depend] Error 1 - -Signed-off-by: Samuel Martin -Signed-off-by: Yegor Yefremov -Signed-off-by: Thomas Petazzoni ---- - Makefile.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.in b/Makefile.in -index 7989203..17853e0 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -121,7 +121,7 @@ clean: - $(SHAREDDIR)/*.o *.$(SOEXT)* - - depend: -- $(CPP) $(CFLAGS) $(CPPFLAGS) -M $(SOURCES) > .depend -+ $(CC) $(CFLAGS) $(CPPFLAGS) -M $(SOURCES) > .depend - - $(SHAREDDIR): - mkdir -p $(SHAREDDIR) --- -2.1.0 - diff --git a/bsp/buildroot/package/newt/0002-Remove-bogus-I-usr-include-slang-from-CPPFLAGS.patch b/bsp/buildroot/package/newt/0002-Remove-bogus-I-usr-include-slang-from-CPPFLAGS.patch deleted file mode 100644 index eb445dd8..00000000 --- a/bsp/buildroot/package/newt/0002-Remove-bogus-I-usr-include-slang-from-CPPFLAGS.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 28145b46649165b94666ee585d064b41306e10fd Mon Sep 17 00:00:00 2001 -From: Alex Suykov -Date: Sat, 10 Jan 2015 11:55:32 +0100 -Subject: [PATCH newt 2/2] Remove bogus -I/usr/include/slang from CPPFLAGS - -Hardcoding -I/usr/include/slang in CPPFLAGS is bogus for -cross-compilation. With recent versions of slang, the headers are -installed in ${sysroot}/usr/include directly, so there is no need for -an additional flag. And if one was needed, it should be added by the -configure script, after detecting the right header location. - -Signed-off-by: Alex Suykov -Signed-off-by: Thomas Petazzoni ---- - Makefile.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.in b/Makefile.in -index 17853e0..d32d784 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -5,7 +5,7 @@ CC = @CC@ - CPP = @CPP@ - CFLAGS = @CFLAGS@ - LDFLAGS = @LDFLAGS@ --CPPFLAGS = -D_GNU_SOURCE -I/usr/include/slang @CPPFLAGS@ -+CPPFLAGS = -D_GNU_SOURCE @CPPFLAGS@ - GNU_LD = @GNU_LD@ - - VERSION = @VERSION@ --- -2.1.0 - diff --git a/bsp/buildroot/package/newt/newt.hash b/bsp/buildroot/package/newt/newt.hash index ca64f41f..fe5870b0 100644 --- a/bsp/buildroot/package/newt/newt.hash +++ b/bsp/buildroot/package/newt/newt.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 771b0e634ede56ae6a6acd910728bb5832ac13ddb0d1d27919d2498dab70c91e newt-0.52.18.tar.gz +sha256 08c0db56c21996af6a7cbab99491b774c6c09cef91cd9b03903c84634bff2e80 newt-0.52.19.tar.gz diff --git a/bsp/buildroot/package/newt/newt.mk b/bsp/buildroot/package/newt/newt.mk index 4c5d2418..2b8d3376 100644 --- a/bsp/buildroot/package/newt/newt.mk +++ b/bsp/buildroot/package/newt/newt.mk @@ -4,8 +4,8 @@ # ################################################################################ -NEWT_VERSION = 0.52.18 -NEWT_SITE = https://fedorahosted.org/releases/n/e/newt +NEWT_VERSION = 0.52.19 +NEWT_SITE = https://pagure.io/releases/newt NEWT_INSTALL_STAGING = YES NEWT_DEPENDENCIES = popt slang \ $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext) diff --git a/bsp/buildroot/package/nfacct/0001-uclinux.patch b/bsp/buildroot/package/nfacct/0001-uclinux.patch deleted file mode 100644 index 295a370b..00000000 --- a/bsp/buildroot/package/nfacct/0001-uclinux.patch +++ /dev/null @@ -1,26 +0,0 @@ -From da1a0c186232d1bca9c723bd47d11a6e3807ae29 Mon Sep 17 00:00:00 2001 -From: Gustavo Zacarias -Date: Tue, 10 Sep 2013 16:16:48 -0300 -Subject: [PATCH] configure: uclinux is also linux - -Signed-off-by: Gustavo Zacarias ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 9679112..9a34bdc 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -15,7 +15,7 @@ AC_PROG_INSTALL - AC_PROG_LN_S - - case "$host" in --*-*-linux*) ;; -+*-*-linux* | *-*-uclinux*) ;; - *) AC_MSG_ERROR([Linux only, dude!]);; - esac - --- -1.8.1.5 - diff --git a/bsp/buildroot/package/nfacct/nfacct.hash b/bsp/buildroot/package/nfacct/nfacct.hash index 48561abc..737354ef 100644 --- a/bsp/buildroot/package/nfacct/nfacct.hash +++ b/bsp/buildroot/package/nfacct/nfacct.hash @@ -1,3 +1,3 @@ -# From ftp://ftp.netfilter.org/pub/nfacct/nfacct-1.0.1.tar.bz2.{md5sum,sha1sum} -md5 992e863409d144350dbc8f0554a0f478 nfacct-1.0.1.tar.bz2 -sha1 57c5fa68a172b30b6c5ea6cb36be685e207312ef nfacct-1.0.1.tar.bz2 +# From ftp://ftp.netfilter.org/pub/nfacct/nfacct-1.0.2.tar.bz2.{md5sum,sha1sum} +md5 94faafdaaed85ca9220c5692be8a408e nfacct-1.0.2.tar.bz2 +sha1 17d6576778227ea93c62600d9b18ff4932963c6a nfacct-1.0.2.tar.bz2 diff --git a/bsp/buildroot/package/nfacct/nfacct.mk b/bsp/buildroot/package/nfacct/nfacct.mk index 7e421609..a4e20452 100644 --- a/bsp/buildroot/package/nfacct/nfacct.mk +++ b/bsp/buildroot/package/nfacct/nfacct.mk @@ -4,12 +4,11 @@ # ################################################################################ -NFACCT_VERSION = 1.0.1 +NFACCT_VERSION = 1.0.2 NFACCT_SOURCE = nfacct-$(NFACCT_VERSION).tar.bz2 NFACCT_SITE = http://www.netfilter.org/projects/nfacct/files NFACCT_DEPENDENCIES = host-pkgconf \ libnetfilter_acct -NFACCT_AUTORECONF = YES NFACCT_LICENSE = GPLv2 NFACCT_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/nftables/nftables.hash b/bsp/buildroot/package/nftables/nftables.hash index 987aae3f..a743476a 100644 --- a/bsp/buildroot/package/nftables/nftables.hash +++ b/bsp/buildroot/package/nftables/nftables.hash @@ -1,2 +1,2 @@ -# From http://www.netfilter.org/projects/nftables/downloads.html#nftables-0.6 -sha1 c0f90a208e0ab5d43d3e638350a4fe58e6f4366f nftables-0.6.tar.bz2 +# From http://www.netfilter.org/projects/nftables/downloads.html#nftables-0.7 +sha1 c003fa8b63b1b44c52de345a4d84487d81865a98 nftables-0.7.tar.bz2 diff --git a/bsp/buildroot/package/nftables/nftables.mk b/bsp/buildroot/package/nftables/nftables.mk index 10a1b427..64d6be72 100644 --- a/bsp/buildroot/package/nftables/nftables.mk +++ b/bsp/buildroot/package/nftables/nftables.mk @@ -4,7 +4,7 @@ # ################################################################################ -NFTABLES_VERSION = 0.6 +NFTABLES_VERSION = 0.7 NFTABLES_SOURCE = nftables-$(NFTABLES_VERSION).tar.bz2 NFTABLES_SITE = http://www.netfilter.org/projects/nftables/files NFTABLES_DEPENDENCIES = gmp libmnl libnftnl host-bison host-flex \ @@ -16,7 +16,7 @@ ifeq ($(BR2_PACKAGE_READLINE),y) NFTABLES_DEPENDENCIES += readline NFTABLES_LIBS += -lncurses else -NFTABLES_CONF_OPTS = --without-cli +NFTABLES_CONF_OPTS += --without-cli endif ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_LIBNFTNL_JSON),yy) diff --git a/bsp/buildroot/package/nginx-dav-ext/Config.in b/bsp/buildroot/package/nginx-dav-ext/Config.in new file mode 100644 index 00000000..1e60321f --- /dev/null +++ b/bsp/buildroot/package/nginx-dav-ext/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NGINX_DAV_EXT + bool "nginx-dav-ext" + depends on BR2_PACKAGE_NGINX_HTTP_DAV_MODULE + select BR2_PACKAGE_EXPAT + help + NGINX WebDAV missing commands support (PROPFIND & OPTIONS). + + https://github.com/arut/nginx-dav-ext-module diff --git a/bsp/buildroot/package/nginx-dav-ext/nginx-dav-ext.hash b/bsp/buildroot/package/nginx-dav-ext/nginx-dav-ext.hash new file mode 100644 index 00000000..ea7eb863 --- /dev/null +++ b/bsp/buildroot/package/nginx-dav-ext/nginx-dav-ext.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d428a0236c933779cb40ac8c91afb19d5c25a376dc3caab825bfd543e1ee530d nginx-dav-ext-v0.0.3.tar.gz diff --git a/bsp/buildroot/package/nginx-dav-ext/nginx-dav-ext.mk b/bsp/buildroot/package/nginx-dav-ext/nginx-dav-ext.mk new file mode 100644 index 00000000..61e5bd0f --- /dev/null +++ b/bsp/buildroot/package/nginx-dav-ext/nginx-dav-ext.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# nginx-dav-ext +# +################################################################################ + +NGINX_DAV_EXT_VERSION = v0.0.3 +NGINX_DAV_EXT_SITE = $(call github,arut,nginx-dav-ext-module,$(NGINX_DAV_EXT_VERSION)) +NGINX_DAV_EXT_LICENSE = BSD-2c +NGINX_DAV_EXT_LICENSE_FILES = ngx_http_dav_ext_module.c +NGINX_DAV_EXT_DEPENDENCIES = expat + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/nginx-naxsi/Config.in b/bsp/buildroot/package/nginx-naxsi/Config.in index 2f7c2da2..fc2ba9bf 100644 --- a/bsp/buildroot/package/nginx-naxsi/Config.in +++ b/bsp/buildroot/package/nginx-naxsi/Config.in @@ -1,5 +1,8 @@ config BR2_PACKAGE_NGINX_NAXSI bool "nginx-naxsi" + depends on BR2_PACKAGE_NGINX_HTTP + # uses pcre, so nginx needs to be built with pcre support + select BR2_PACKAGE_PCRE help NAXSI means Nginx Anti XSS & SQL Injection. diff --git a/bsp/buildroot/package/nginx-naxsi/nginx-naxsi.hash b/bsp/buildroot/package/nginx-naxsi/nginx-naxsi.hash index 238993eb..967f7880 100644 --- a/bsp/buildroot/package/nginx-naxsi/nginx-naxsi.hash +++ b/bsp/buildroot/package/nginx-naxsi/nginx-naxsi.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 9cc2c09405bc71f78ef26a8b6d70afcea3fccbe8125df70cb0cfc480133daba5 nginx-naxsi-0.54.tar.gz +sha256 256378564e36b8f222adb8fbe746529e73413c6cbe2b0e5574f41dfd62d92577 nginx-naxsi-0.55.2.tar.gz diff --git a/bsp/buildroot/package/nginx-naxsi/nginx-naxsi.mk b/bsp/buildroot/package/nginx-naxsi/nginx-naxsi.mk index 0e1f7144..fb5e00a5 100644 --- a/bsp/buildroot/package/nginx-naxsi/nginx-naxsi.mk +++ b/bsp/buildroot/package/nginx-naxsi/nginx-naxsi.mk @@ -4,7 +4,7 @@ # ################################################################################ -NGINX_NAXSI_VERSION = 0.54 +NGINX_NAXSI_VERSION = 0.55.2 NGINX_NAXSI_SITE = $(call github,nbs-system,naxsi,$(NGINX_NAXSI_VERSION)) NGINX_NAXSI_LICENSE = GPLv2+ with OpenSSL exception NGINX_NAXSI_LICENSE_FILES = naxsi_src/naxsi_json.c diff --git a/bsp/buildroot/package/nginx/nginx.hash b/bsp/buildroot/package/nginx/nginx.hash index c4b0f892..498d272d 100644 --- a/bsp/buildroot/package/nginx/nginx.hash +++ b/bsp/buildroot/package/nginx/nginx.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 1fd35846566485e03c0e318989561c135c598323ff349c503a6c14826487a801 nginx-1.10.1.tar.gz +sha256 75020f1364cac459cb733c4e1caed2d00376e40ea05588fb8793076a4c69dd90 nginx-1.10.3.tar.gz diff --git a/bsp/buildroot/package/nginx/nginx.mk b/bsp/buildroot/package/nginx/nginx.mk index d57f3d00..f9b2cd1d 100644 --- a/bsp/buildroot/package/nginx/nginx.mk +++ b/bsp/buildroot/package/nginx/nginx.mk @@ -4,7 +4,7 @@ # ################################################################################ -NGINX_VERSION = 1.10.1 +NGINX_VERSION = 1.10.3 NGINX_SITE = http://nginx.org/download NGINX_LICENSE = BSD-2c NGINX_LICENSE_FILES = LICENSE @@ -156,11 +156,6 @@ else NGINX_CONF_OPTS += --without-http_gzip_module endif -ifeq ($(BR2_PACKAGE_NGINX_NAXSI),y) -NGINX_DEPENDENCIES += nginx-naxsi -NGINX_CONF_OPTS += --add-module=$(NGINX_NAXSI_DIR)/naxsi_src -endif - ifeq ($(BR2_PACKAGE_NGINX_HTTP_REWRITE_MODULE),y) NGINX_DEPENDENCIES += pcre else @@ -245,6 +240,16 @@ NGINX_CONF_OPTS += $(addprefix --add-module=,$(NGINX_UPLOAD_DIR)) NGINX_DEPENDENCIES += nginx-upload endif +ifeq ($(BR2_PACKAGE_NGINX_DAV_EXT),y) +NGINX_CONF_OPTS += --add-module=$(NGINX_DAV_EXT_DIR) +NGINX_DEPENDENCIES += nginx-dav-ext +endif + +ifeq ($(BR2_PACKAGE_NGINX_NAXSI),y) +NGINX_DEPENDENCIES += nginx-naxsi +NGINX_CONF_OPTS += --add-module=$(NGINX_NAXSI_DIR)/naxsi_src +endif + # Debug logging NGINX_CONF_OPTS += $(if $(BR2_PACKAGE_NGINX_DEBUG),--with-debug) diff --git a/bsp/buildroot/package/ngrep/ngrep.mk b/bsp/buildroot/package/ngrep/ngrep.mk index c4ad5282..8daaf2d8 100644 --- a/bsp/buildroot/package/ngrep/ngrep.mk +++ b/bsp/buildroot/package/ngrep/ngrep.mk @@ -21,7 +21,8 @@ NGREP_CONF_OPTS = \ --with-pcap-includes=$(STAGING_DIR)/usr/include/pcap \ --enable-pcre \ --with-pcre=$(STAGING_DIR)/usr \ - --disable-dropprivs + --disable-dropprivs \ + --disable-pcap-restart NGREP_DEPENDENCIES = libpcap pcre diff --git a/bsp/buildroot/package/nload/Config.in b/bsp/buildroot/package/nload/Config.in index 68ddbe6c..c938d8ea 100644 --- a/bsp/buildroot/package/nload/Config.in +++ b/bsp/buildroot/package/nload/Config.in @@ -5,7 +5,6 @@ config BR2_PACKAGE_NLOAD bool "nload" depends on BR2_INSTALL_LIBSTDCPP select BR2_PACKAGE_NCURSES - select BR2_PACKAGE_NCURSES_TARGET_FORM help nload is a console application which monitors network traffic and bandwidth usage in real time. It visualizes the in- and diff --git a/bsp/buildroot/package/nmap/nmap.hash b/bsp/buildroot/package/nmap/nmap.hash index 448a19b3..239ca138 100644 --- a/bsp/buildroot/package/nmap/nmap.hash +++ b/bsp/buildroot/package/nmap/nmap.hash @@ -1,2 +1,2 @@ -# From https://nmap.org/dist/sigs/nmap-7.12.tar.bz2.digest.txt -sha256 63df082a87c95a189865d37304357405160fc6333addcf5b84204c95e0539b04 nmap-7.12.tar.bz2 +# From https://nmap.org/dist/sigs/nmap-7.40.tar.bz2.digest.txt +sha256 9e14665fffd054554d129d62c13ad95a7b5c7a046daa2290501909e65f4d3188 nmap-7.40.tar.bz2 diff --git a/bsp/buildroot/package/nmap/nmap.mk b/bsp/buildroot/package/nmap/nmap.mk index 46c62327..6e178b1f 100644 --- a/bsp/buildroot/package/nmap/nmap.mk +++ b/bsp/buildroot/package/nmap/nmap.mk @@ -4,7 +4,7 @@ # ################################################################################ -NMAP_VERSION = 7.12 +NMAP_VERSION = 7.40 NMAP_SITE = http://nmap.org/dist NMAP_SOURCE = nmap-$(NMAP_VERSION).tar.bz2 NMAP_DEPENDENCIES = libpcap pcre diff --git a/bsp/buildroot/package/nmon/Config.in b/bsp/buildroot/package/nmon/Config.in new file mode 100644 index 00000000..574ced3b --- /dev/null +++ b/bsp/buildroot/package/nmon/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_NMON + bool "nmon" + depends on BR2_TOOLCHAIN_USES_GLIBC # fstab.h + select BR2_PACKAGE_NCURSES + help + Nmon is short for Nigel's performance Monitor for Linux + + http://nmon.sourceforge.net/pmwiki.php + +comment "nmon needs a glibc toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/bsp/buildroot/package/nmon/nmon.hash b/bsp/buildroot/package/nmon/nmon.hash new file mode 100644 index 00000000..f3a073ff --- /dev/null +++ b/bsp/buildroot/package/nmon/nmon.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/nmon/files/ +md5 a72e3eb737c230cd309329330a5545bd lmon16f.c +sha1 b69fdddf86ffe674e0133426fa09935ed678ab7d lmon16f.c +# Locally computed +sha256 280a371e17488f8a2c5e0c64273155789be6fa5b937ab5c465488e591bdc5cd9 lmon16f.c diff --git a/bsp/buildroot/package/nmon/nmon.mk b/bsp/buildroot/package/nmon/nmon.mk new file mode 100644 index 00000000..9b9f8890 --- /dev/null +++ b/bsp/buildroot/package/nmon/nmon.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# nmon +# +################################################################################ + +NMON_VERSION = 16f +NMON_SITE = http://sourceforge.net/projects/nmon/files +NMON_SOURCE = lmon$(NMON_VERSION).c +NMON_LICENSE = GPLv3+ +NMON_LICENSE_FILES = $(NMON_SOURCE) +NMON_DEPENDENCIES = ncurses +NMON_CFLAGS = $(TARGET_CFLAGS) -D JFS -D GETUSER -D LARGEMEM -D DEBIAN + +define NMON_EXTRACT_CMDS + cp $(DL_DIR)/$(NMON_SOURCE) $(@D) +endef + +define NMON_BUILD_CMDS + $(TARGET_CC) $(NMON_CFLAGS) $(TARGET_LDFLAGS) -o $(@D)/nmon \ + $(@D)/$(NMON_SOURCE) -lncurses -lm +endef + +define NMON_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/nmon $(TARGET_DIR)/usr/bin/ +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/nodejs/0.10.45/0001-remove-python-bz2-dependency.patch b/bsp/buildroot/package/nodejs/0.10.48/0001-remove-python-bz2-dependency.patch similarity index 100% rename from bsp/buildroot/package/nodejs/0.10.45/0001-remove-python-bz2-dependency.patch rename to bsp/buildroot/package/nodejs/0.10.48/0001-remove-python-bz2-dependency.patch diff --git a/bsp/buildroot/package/nodejs/0.10.45/0002-gyp-force-link-command-to-use-CXX.patch b/bsp/buildroot/package/nodejs/0.10.48/0002-gyp-force-link-command-to-use-CXX.patch similarity index 100% rename from bsp/buildroot/package/nodejs/0.10.45/0002-gyp-force-link-command-to-use-CXX.patch rename to bsp/buildroot/package/nodejs/0.10.48/0002-gyp-force-link-command-to-use-CXX.patch diff --git a/bsp/buildroot/package/nodejs/0.10.45/0003-fix-musl-USE-MISC-build-issue.patch b/bsp/buildroot/package/nodejs/0.10.48/0003-fix-musl-USE-MISC-build-issue.patch similarity index 100% rename from bsp/buildroot/package/nodejs/0.10.45/0003-fix-musl-USE-MISC-build-issue.patch rename to bsp/buildroot/package/nodejs/0.10.48/0003-fix-musl-USE-MISC-build-issue.patch diff --git a/bsp/buildroot/package/nodejs/0.10.45/0004-Fix-support-for-uClibc-ng.patch b/bsp/buildroot/package/nodejs/0.10.48/0004-Fix-support-for-uClibc-ng.patch similarity index 100% rename from bsp/buildroot/package/nodejs/0.10.45/0004-Fix-support-for-uClibc-ng.patch rename to bsp/buildroot/package/nodejs/0.10.48/0004-Fix-support-for-uClibc-ng.patch diff --git a/bsp/buildroot/package/nodejs/6.2.1/0001-gyp-force-link-command-to-use-CXX.patch b/bsp/buildroot/package/nodejs/6.9.4/0001-gyp-force-link-command-to-use-CXX.patch similarity index 100% rename from bsp/buildroot/package/nodejs/6.2.1/0001-gyp-force-link-command-to-use-CXX.patch rename to bsp/buildroot/package/nodejs/6.9.4/0001-gyp-force-link-command-to-use-CXX.patch diff --git a/bsp/buildroot/package/nodejs/6.9.4/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch b/bsp/buildroot/package/nodejs/6.9.4/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch new file mode 100644 index 00000000..c07cbf8c --- /dev/null +++ b/bsp/buildroot/package/nodejs/6.9.4/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch @@ -0,0 +1,35 @@ +From 7fa541f6c0a31e3ddcab6ea85040b531bbaa4651 Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Tue, 12 Jul 2016 19:03:28 +0100 +Subject: [PATCH] inspector: don't build when ssl support is disabled + +Signed-off-by: Martin Bark +--- + node.gyp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/node.gyp b/node.gyp +index 8a8bd00..fdccd60 100644 +--- a/node.gyp ++++ b/node.gyp +@@ -302,7 +302,7 @@ + 'deps/v8/src/third_party/vtune/v8vtune.gyp:v8_vtune' + ], + }], +- [ 'v8_inspector=="true"', { ++ [ 'v8_inspector=="true" and node_use_openssl =="true"', { + 'defines': [ + 'HAVE_INSPECTOR=1', + 'V8_INSPECTOR_USE_STL=1', +@@ -828,7 +828,7 @@ + ], + + 'conditions': [ +- ['v8_inspector=="true"', { ++ ['v8_inspector=="true" and node_use_openssl =="true"', { + 'sources': [ + 'src/inspector_socket.cc', + 'test/cctest/test_inspector_socket.cc' +-- +2.7.4 + diff --git a/bsp/buildroot/package/nodejs/Config.in b/bsp/buildroot/package/nodejs/Config.in index da9ca7fa..b8c45f5d 100644 --- a/bsp/buildroot/package/nodejs/Config.in +++ b/bsp/buildroot/package/nodejs/Config.in @@ -1,6 +1,6 @@ comment "nodejs needs a toolchain w/ C++, dynamic library, threads, gcc >= 4.8, wchar" depends on BR2_USE_MMU - depends on BR2_arm || BR2_i386 || BR2_x86_64 || BR2_mipsel + depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_mipsel depends on !BR2_MIPS_SOFT_FLOAT depends on !BR2_ARM_CPU_ARMV4 depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ @@ -10,7 +10,7 @@ config BR2_PACKAGE_NODEJS bool "nodejs" depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_arm || BR2_i386 || BR2_x86_64 || BR2_mipsel + depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_mipsel depends on !BR2_MIPS_SOFT_FLOAT # ARM needs BLX, so v5t+ depends on !BR2_ARM_CPU_ARMV4 @@ -43,8 +43,8 @@ config BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS config BR2_PACKAGE_NODEJS_VERSION_STRING string - default "6.2.1" if BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS - default "0.10.45" + default "6.9.4" if BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS + default "0.10.48" config BR2_PACKAGE_NODEJS_NPM bool "NPM for the target" diff --git a/bsp/buildroot/package/nodejs/nodejs.hash b/bsp/buildroot/package/nodejs/nodejs.hash index 9fce2f5c..8c8c5a3c 100644 --- a/bsp/buildroot/package/nodejs/nodejs.hash +++ b/bsp/buildroot/package/nodejs/nodejs.hash @@ -1,5 +1,5 @@ -# From upstream URL: http://nodejs.org/dist/v0.10.45/SHASUMS256.txt -sha256 a71070ea7aece9c94450b45102f2d1be42f0add168dd9c9701e9032d363bd4fa node-v0.10.45.tar.xz +# From upstream URL: http://nodejs.org/dist/v0.10.48/SHASUMS256.txt +sha256 365a93d9acc076a0d93f087d269f376abeebccad599a9dab72f2f6ed96c8ae6e node-v0.10.48.tar.xz -# From upstream URL: http://nodejs.org/dist/v6.2.1/SHASUMS256.txt -sha256 dbaeb8fb68a599e5164b17c74f66d24f424ee4ab3a25d8de8a3c6808e5b42bfb node-v6.2.1.tar.xz +# From upstream URL: http://nodejs.org/dist/v6.9.4/SHASUMS256.txt +sha256 c51d7c61db40455d57428abcadc7eb0f0a08a8878cb1d8ea3c1e211c54532c35 node-v6.9.4.tar.xz diff --git a/bsp/buildroot/package/nodejs/nodejs.mk b/bsp/buildroot/package/nodejs/nodejs.mk index d6f115a5..042cc3fb 100644 --- a/bsp/buildroot/package/nodejs/nodejs.mk +++ b/bsp/buildroot/package/nodejs/nodejs.mk @@ -63,6 +63,7 @@ define HOST_NODEJS_CONFIGURE_CMDS --without-dtrace \ --without-etw \ --shared-zlib \ + $(if $(BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS),--with-intl=none) \ ) endef @@ -90,18 +91,20 @@ else ifeq ($(BR2_mipsel),y) NODEJS_CPU = mipsel else ifeq ($(BR2_arm),y) NODEJS_CPU = arm +else ifeq ($(BR2_aarch64),y) +NODEJS_CPU = arm64 # V8 needs to know what floating point ABI the target is using. NODEJS_ARM_FP = $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) endif # MIPS architecture specific options ifeq ($(BR2_mips)$(BR2_mipsel),y) -ifeq ($(BR2_mips_32r6),y) +ifeq ($(BR2_MIPS_CPU_MIPS32R6),y) NODEJS_MIPS_ARCH_VARIANT = r6 NODEJS_MIPS_FPU_MODE = fp64 -else ifeq ($(BR2_mips_32r2),y) +else ifeq ($(BR2_MIPS_CPU_MIPS32R2),y) NODEJS_MIPS_ARCH_VARIANT = r2 -else ifeq ($(BR2_mips_32),y) +else ifeq ($(BR2_MIPS_CPU_MIPS32),y) NODEJS_MIPS_ARCH_VARIANT = r1 endif endif diff --git a/bsp/buildroot/package/norm/0003-remove-kernel-headers-include-musl-fix.patch b/bsp/buildroot/package/norm/0003-remove-kernel-headers-include-musl-fix.patch deleted file mode 100644 index 7581c10b..00000000 --- a/bsp/buildroot/package/norm/0003-remove-kernel-headers-include-musl-fix.patch +++ /dev/null @@ -1,55 +0,0 @@ -Remove kernel header includes causing issues with musl - -Include the kernel headers from netfilter causes a conflict with the - way of defining the IPPROTO_* constants, resulting in -the following build failure: - -In file included from /home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/netdb.h:9:0, - from /home/peko/autobuild/instance-0/output/build/norm-1.5r6/protolib/include/protoAddress.h:13, - from /home/peko/autobuild/instance-0/output/build/norm-1.5r6/protolib/include/protoDetour.h:5, - from ../protolib/src/linux/linuxDetour.cpp:3: -/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:28:3: error: expected identifier before numeric constant - IPPROTO_IP = 0, /* Dummy protocol for TCP */ - ^ -/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:28:3: error: expected '}' before numeric constant -/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:28:3: error: expected unqualified-id before numeric constant -In file included from /home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/netfilter.h:7:0, - from /home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/netfilter_ipv4.h:8, - from ../protolib/src/linux/linuxDetour.cpp:10: -/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:79:1: error: expected declaration before '}' token - }; - ^ - -Since from musl's developers perspective including kernel headers is -seen as being unsafe, we simply duplicate the necessary netfilter -definitions (there are just a few) instead of including some kernel -headers. - -Signed-off-by: Thomas Petazzoni - -Index: b/protolib/src/linux/linuxDetour.cpp -=================================================================== ---- a/protolib/src/linux/linuxDetour.cpp -+++ b/protolib/src/linux/linuxDetour.cpp -@@ -7,15 +7,18 @@ - #include // for atoi(), getenv() - #include - #include // for close() --#include // for NF_IP_LOCAL_OUT, etc --#include // for NF_IP6_LOCAL_OUT, etc --#include // for NF_ACCEPT, etc - #include - - #include // for fcntl(), etc - #include // for ETH_P_IP - #include // for ARPHRD_ETHER - -+/* From netfilter kernel headers */ -+#define NF_IP_LOCAL_OUT 3 -+ -+#define NF_DROP 0 -+#define NF_ACCEPT 1 -+ - /** NOTES: - * - * 1) This newer implementation of LinuxDetour uses netfilter_queue diff --git a/bsp/buildroot/package/norm/norm.mk b/bsp/buildroot/package/norm/norm.mk index e1b3a5fc..8af76f83 100644 --- a/bsp/buildroot/package/norm/norm.mk +++ b/bsp/buildroot/package/norm/norm.mk @@ -15,32 +15,10 @@ ifeq ($(BR2_PACKAGE_LIBNETFILTER_QUEUE),y) NORM_DEPENDENCIES += libnetfilter_queue endif -define NORM_CONFIGURE_CMDS - cd $(@D); \ - $(TARGET_CONFIGURE_OPTS) \ - ./waf configure --prefix=/usr -endef - -define NORM_BUILD_CMDS - cd $(@D); \ - $(TARGET_MAKE_ENV) \ - ./waf build -endef - # install target doesn't install headers unfortunately... -define NORM_INSTALL_STAGING_CMDS - cd $(@D); \ - $(TARGET_MAKE_ENV) \ - DESTDIR=$(STAGING_DIR) \ - ./waf install +define NORM_INSTALL_HEADERS cp -f $(@D)/include/norm* $(STAGING_DIR)/usr/include endef +NORM_POST_INSTALL_STAGING_HOOKS += NORM_INSTALL_HEADERS -define NORM_INSTALL_TARGET_CMDS - cd $(@D); \ - $(TARGET_MAKE_ENV) \ - DESTDIR=$(TARGET_DIR) \ - ./waf install -endef - -$(eval $(generic-package)) +$(eval $(waf-package)) diff --git a/bsp/buildroot/package/ntfs-3g/ntfs-3g.hash b/bsp/buildroot/package/ntfs-3g/ntfs-3g.hash index 4875cc47..eaa3d987 100644 --- a/bsp/buildroot/package/ntfs-3g/ntfs-3g.hash +++ b/bsp/buildroot/package/ntfs-3g/ntfs-3g.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 d7b72c05e4b3493e6095be789a760c9f5f2b141812d5b885f3190c98802f1ea0 ntfs-3g_ntfsprogs-2016.2.22.tgz +sha256 43deadaeade489934b0b45e2ed8aa5f853ad0364fbde7ad144211b80132ea041 0003-CVE-2017-0358.patch diff --git a/bsp/buildroot/package/ntfs-3g/ntfs-3g.mk b/bsp/buildroot/package/ntfs-3g/ntfs-3g.mk index b59e335b..6e1a8f94 100644 --- a/bsp/buildroot/package/ntfs-3g/ntfs-3g.mk +++ b/bsp/buildroot/package/ntfs-3g/ntfs-3g.mk @@ -7,6 +7,7 @@ NTFS_3G_VERSION = 2016.2.22 NTFS_3G_SOURCE = ntfs-3g_ntfsprogs-$(NTFS_3G_VERSION).tgz NTFS_3G_SITE = http://tuxera.com/opensource +NTFS_3G_PATCH = https://sources.debian.net/data/main/n/ntfs-3g/1:2016.2.22AR.1-4/debian/patches/0003-CVE-2017-0358.patch NTFS_3G_CONF_OPTS = --disable-ldconfig NTFS_3G_INSTALL_STAGING = YES NTFS_3G_DEPENDENCIES = host-pkgconf diff --git a/bsp/buildroot/package/ntp/Config.in b/bsp/buildroot/package/ntp/Config.in index 4e802374..1af02dbc 100644 --- a/bsp/buildroot/package/ntp/Config.in +++ b/bsp/buildroot/package/ntp/Config.in @@ -1,5 +1,7 @@ config BR2_PACKAGE_NTP bool "ntp" + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_OPENSSL help Network Time Protocol suite/programs. Provides things like ntpd, ntpdate, ntpq, etc... diff --git a/bsp/buildroot/package/ntp/ntp.hash b/bsp/buildroot/package/ntp/ntp.hash index 2a1155bc..c6838d81 100644 --- a/bsp/buildroot/package/ntp/ntp.hash +++ b/bsp/buildroot/package/ntp/ntp.hash @@ -1,4 +1,4 @@ -# From http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p8.tar.gz.md5 -md5 4a8636260435b230636f053ffd070e34 ntp-4.2.8p8.tar.gz +# From http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p9.tar.gz.md5 +md5 857452b05f5f2e033786f77ade1974ed ntp-4.2.8p9.tar.gz # Calculated based on the hash above -sha256 2ab3d0b5f0456e6311dda1cc27ab75da108762773a19e46abd938bd9407b97ee ntp-4.2.8p8.tar.gz +sha256 b724287778e1bac625b447327c9851eedef020517a3545625e9f652a90f30b72 ntp-4.2.8p9.tar.gz diff --git a/bsp/buildroot/package/ntp/ntp.mk b/bsp/buildroot/package/ntp/ntp.mk index a94380db..edbf1c86 100644 --- a/bsp/buildroot/package/ntp/ntp.mk +++ b/bsp/buildroot/package/ntp/ntp.mk @@ -5,9 +5,9 @@ ################################################################################ NTP_VERSION_MAJOR = 4.2 -NTP_VERSION = $(NTP_VERSION_MAJOR).8p8 +NTP_VERSION = $(NTP_VERSION_MAJOR).8p9 NTP_SITE = http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-$(NTP_VERSION_MAJOR) -NTP_DEPENDENCIES = host-pkgconf $(if $(BR2_PACKAGE_BUSYBOX),busybox) +NTP_DEPENDENCIES = host-pkgconf libevent openssl $(if $(BR2_PACKAGE_BUSYBOX),busybox) NTP_LICENSE = ntp license NTP_LICENSE_FILES = COPYRIGHT NTP_CONF_ENV = ac_cv_lib_md5_MD5Init=no @@ -17,15 +17,24 @@ NTP_CONF_OPTS = \ --disable-tickadj \ --disable-debugging \ --with-yielding-select=yes \ - --disable-local-libevent + --disable-local-libevent \ + --with-crypto + # 0002-ntp-syscalls-fallback.patch NTP_AUTORECONF = YES -ifeq ($(BR2_PACKAGE_OPENSSL),y) -NTP_CONF_OPTS += --with-crypto -NTP_DEPENDENCIES += openssl +ifeq ($(BR2_PACKAGE_LIBCAP),y) +NTP_CONF_OPTS += --enable-linuxcaps +NTP_DEPENDENCIES += libcap else -NTP_CONF_OPTS += --without-crypto --disable-openssl-random +NTP_CONF_OPTS += --disable-linuxcaps +endif + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +NTP_CONF_OPTS += --with-lineeditlibs=edit +NTP_DEPENDENCIES += libedit +else +NTP_CONF_OPTS += --without-lineeditlibs endif ifeq ($(BR2_PACKAGE_NTP_NTPSNMPD),y) diff --git a/bsp/buildroot/package/nut/0001-Allow-to-customize-path-to-gdlib-config-and-net-snmp.patch b/bsp/buildroot/package/nut/0001-Allow-to-customize-path-to-gdlib-config-and-net-snmp.patch new file mode 100644 index 00000000..308dbb1a --- /dev/null +++ b/bsp/buildroot/package/nut/0001-Allow-to-customize-path-to-gdlib-config-and-net-snmp.patch @@ -0,0 +1,153 @@ +From 086b5fa8fe4ba74404e92b5f838263dfcf9f173d Mon Sep 17 00:00:00 2001 +From: Jim Klimov +Date: Thu, 7 Apr 2016 03:56:51 +0200 +Subject: [PATCH] Allow to customize path to gdlib-config and net-snmp-config + programs + +[yann.morin.1998@free.fr: backport] +Signed-off-by: "Yann E. MORIN" + +--- +Backported from upstream commit 086b5fa8fe4ba74404e92b5f838263dfcf9f173d +--- + docs/configure.txt | 14 ++++++++++++++ + m4/nut_check_libgd.m4 | 29 +++++++++++++++++++++++------ + m4/nut_check_libnetsnmp.m4 | 25 +++++++++++++++++++++---- + 3 files changed, 58 insertions(+), 10 deletions(-) + +diff --git a/docs/configure.txt b/docs/configure.txt +index aff82c1..b3b542a 100644 +--- a/docs/configure.txt ++++ b/docs/configure.txt +@@ -23,6 +23,13 @@ Note that you need to install the libusb development package or files. + Build and install the SNMP drivers (default: auto-detect) + Note that you need to install libsnmp development package or files. + ++ --with-net-snmp-config ++ ++In addition to the `--with-snmp` option above, this one allows to provide ++a custom program name (in `PATH`) or complete pathname to `net-snmp-config`. ++This may be needed on build systems which support multiple architectures, ++or in cases where your distribution names this program differently. ++ + --with-neon + + Build and install the XML drivers (default: auto-detect) +@@ -335,6 +342,13 @@ NOTE: the --with-gd switches are not necessary if you have gd 2.0.8 + or higher installed properly. The gdlib-config script will be + detected and used by default in that situation. + ++ --with-gdlib-config ++ ++This option allows to provide a custom program name (in `PATH`) or ++a complete pathname to `gdlib-config`. This may be needed on build ++systems which support multiple architectures, or in cases where your ++distribution names this program differently. ++ + --with-ssl-includes, --with-usb-includes, --with-snmp-includes, + --with-neon-includes, --with-libltdl-includes, + --with-powerman-includes="-I/foo/bar" +diff --git a/m4/nut_check_libgd.m4 b/m4/nut_check_libgd.m4 +index 01cc882..73f4da7 100644 +--- a/m4/nut_check_libgd.m4 ++++ b/m4/nut_check_libgd.m4 +@@ -19,8 +19,25 @@ if test -z "${nut_have_libgd_seen}"; then + LDFLAGS="-L/usr/X11R6/lib" + LIBS="-lgd -lpng -lz -ljpeg -lfreetype -lm -lXpm -lX11" + +- AC_MSG_CHECKING(for gd version via gdlib-config) +- GD_VERSION=`gdlib-config --version 2>/dev/null` ++ dnl By default seek in PATH ++ GDLIB_CONFIG=gdlib-config ++ AC_ARG_WITH(gdlib-config, ++ AS_HELP_STRING([@<:@--with-gdlib-config=/path/to/gdlib-config@:>@], ++ [path to program that reports GDLIB configuration]), ++ [ ++ case "${withval}" in ++ "") ;; ++ yes|no) ++ AC_MSG_ERROR(invalid option --with(out)-gdlib-config - see docs/configure.txt) ++ ;; ++ *) ++ GDLIB_CONFIG="${withval}" ++ ;; ++ esac ++ ]) ++ ++ AC_MSG_CHECKING(for gd version via ${GDLIB_CONFIG}) ++ GD_VERSION=`${GDLIB_CONFIG} --version 2>/dev/null` + if test "$?" != "0" -o -z "${GD_VERSION}"; then + GD_VERSION="none" + fi +@@ -30,13 +47,13 @@ if test -z "${nut_have_libgd_seen}"; then + none) + ;; + 2.0.5 | 2.0.6 | 2.0.7) +- AC_MSG_WARN([[gd ${GD_VERSION} detected, unable to use gdlib-config script]]) ++ AC_MSG_WARN([[gd ${GD_VERSION} detected, unable to use ${GDLIB_CONFIG} script]]) + AC_MSG_WARN([[If gd detection fails, upgrade gd or use --with-gd-includes and --with-gd-libs]]) + ;; + *) +- CFLAGS="`gdlib-config --includes 2>/dev/null`" +- LDFLAGS="`gdlib-config --ldflags 2>/dev/null`" +- LIBS="`gdlib-config --libs 2>/dev/null`" ++ CFLAGS="`${GDLIB_CONFIG} --includes 2>/dev/null`" ++ LDFLAGS="`${GDLIB_CONFIG} --ldflags 2>/dev/null`" ++ LIBS="`${GDLIB_CONFIG} --libs 2>/dev/null`" + ;; + esac + +diff --git a/m4/nut_check_libnetsnmp.m4 b/m4/nut_check_libnetsnmp.m4 +index e1c1426..83b2633 100644 +--- a/m4/nut_check_libnetsnmp.m4 ++++ b/m4/nut_check_libnetsnmp.m4 +@@ -13,9 +13,26 @@ if test -z "${nut_have_libnetsnmp_seen}"; then + CFLAGS_ORIG="${CFLAGS}" + LIBS_ORIG="${LIBS}" + ++ dnl By default seek in PATH ++ NET_SNMP_CONFIG=net-snmp-config ++ AC_ARG_WITH(net-snmp-config, ++ AS_HELP_STRING([@<:@--with-net-snmp-config=/path/to/net-snmp-config@:>@], ++ [path to program that reports Net-SNMP configuration]), ++ [ ++ case "${withval}" in ++ "") ;; ++ yes|no) ++ AC_MSG_ERROR(invalid option --with(out)-net-snmp-config - see docs/configure.txt) ++ ;; ++ *) ++ NET_SNMP_CONFIG="${withval}" ++ ;; ++ esac ++ ]) ++ + dnl See which version of the Net-SNMP library (if any) is installed +- AC_MSG_CHECKING(for Net-SNMP version via net-snmp-config) +- SNMP_VERSION=`net-snmp-config --version 2>/dev/null` ++ AC_MSG_CHECKING(for Net-SNMP version via ${NET_SNMP_CONFIG}) ++ SNMP_VERSION=`${NET_SNMP_CONFIG} --version 2>/dev/null` + if test "$?" != "0" -o -z "${SNMP_VERSION}"; then + SNMP_VERSION="none" + fi +@@ -33,7 +50,7 @@ if test -z "${nut_have_libnetsnmp_seen}"; then + CFLAGS="${withval}" + ;; + esac +- ], [CFLAGS="`net-snmp-config --base-cflags 2>/dev/null`"]) ++ ], [CFLAGS="`${NET_SNMP_CONFIG} --base-cflags 2>/dev/null`"]) + AC_MSG_RESULT([${CFLAGS}]) + + AC_MSG_CHECKING(for Net-SNMP libs) +@@ -48,7 +65,7 @@ if test -z "${nut_have_libnetsnmp_seen}"; then + LIBS="${withval}" + ;; + esac +- ], [LIBS="`net-snmp-config --libs 2>/dev/null`"]) ++ ], [LIBS="`${NET_SNMP_CONFIG} --libs 2>/dev/null`"]) + AC_MSG_RESULT([${LIBS}]) + + dnl Check if the Net-SNMP library is usable +-- +2.7.4 + diff --git a/bsp/buildroot/package/nut/0001-foo-config.patch b/bsp/buildroot/package/nut/0001-foo-config.patch deleted file mode 100644 index 7202f139..00000000 --- a/bsp/buildroot/package/nut/0001-foo-config.patch +++ /dev/null @@ -1,72 +0,0 @@ -configure: fix calls to {gdlib,net-snmp}-config - -nut directly calls to {gdlib,net-snmp}-config. In Buildroot, -those are not in the PATH, and nut would catch those of the -system (if they are installed), or miss them entirely. - -Fix that by using environment variables that will tell where -to look for them. - -Note: libusb also uses libusb-config, but only as a fallback -if pkg-config fails. Since we ensure that pkg-config exists, -and libusb is properly installed before we build nut, there -is no need to fix the libusb-config calls, since they won't -be called at all. - -Signed-off-by: "Yann E. MORIN" - -diff -durN nut-2.6.5.orig/m4/nut_check_libgd.m4 nut-2.6.5/m4/nut_check_libgd.m4 ---- nut-2.6.5.orig/m4/nut_check_libgd.m4 2012-07-31 19:38:56.000000000 +0200 -+++ nut-2.6.5/m4/nut_check_libgd.m4 2013-11-01 16:24:02.626549810 +0100 -@@ -20,7 +20,7 @@ - LIBS="-lgd -lpng -lz -ljpeg -lfreetype -lm -lXpm -lX11" - - AC_MSG_CHECKING(for gd version via gdlib-config) -- GD_VERSION=`gdlib-config --version 2>/dev/null` -+ GD_VERSION=`${GDLIB_CONFIG} --version 2>/dev/null` - if test "$?" != "0" -o -z "${GD_VERSION}"; then - GD_VERSION="none" - fi -@@ -34,9 +34,9 @@ - AC_MSG_WARN([[If gd detection fails, upgrade gd or use --with-gd-includes and --with-gd-libs]]) - ;; - *) -- CFLAGS="`gdlib-config --includes 2>/dev/null`" -- LDFLAGS="`gdlib-config --ldflags 2>/dev/null`" -- LIBS="`gdlib-config --libs 2>/dev/null`" -+ CFLAGS="`${GDLIB_CONFIG} --includes 2>/dev/null`" -+ LDFLAGS="`${GDLIB_CONFIG} --ldflags 2>/dev/null`" -+ LIBS="`${GDLIB_CONFIG} --libs 2>/dev/null`" - ;; - esac - -diff -durN nut-2.6.5.orig/m4/nut_check_libnetsnmp.m4 nut-2.6.5/m4/nut_check_libnetsnmp.m4 ---- nut-2.6.5.orig/m4/nut_check_libnetsnmp.m4 2012-07-31 19:38:56.000000000 +0200 -+++ nut-2.6.5/m4/nut_check_libnetsnmp.m4 2013-11-01 16:30:07.398282923 +0100 -@@ -15,7 +15,7 @@ - - dnl See which version of the Net-SNMP library (if any) is installed - AC_MSG_CHECKING(for Net-SNMP version via net-snmp-config) -- SNMP_VERSION=`net-snmp-config --version 2>/dev/null` -+ SNMP_VERSION=`${NET_SNMP_CONFIG} --version 2>/dev/null` - if test "$?" != "0" -o -z "${SNMP_VERSION}"; then - SNMP_VERSION="none" - fi -@@ -33,7 +33,7 @@ - CFLAGS="${withval}" - ;; - esac -- ], [CFLAGS="`net-snmp-config --base-cflags 2>/dev/null`"]) -+ ], [CFLAGS="`${NET_SNMP_CONFIG} --base-cflags 2>/dev/null`"]) - AC_MSG_RESULT([${CFLAGS}]) - - AC_MSG_CHECKING(for Net-SNMP libs) -@@ -48,7 +48,7 @@ - LIBS="${withval}" - ;; - esac -- ], [LIBS="`net-snmp-config --libs 2>/dev/null`"]) -+ ], [LIBS="`${NET_SNMP_CONFIG} --libs 2>/dev/null`"]) - AC_MSG_RESULT([${LIBS}]) - - dnl Check if the Net-SNMP library is usable diff --git a/bsp/buildroot/package/nut/0002-client-ups-add-missing-include.patch b/bsp/buildroot/package/nut/0002-client-ups-add-missing-include.patch new file mode 100644 index 00000000..63fdcdcb --- /dev/null +++ b/bsp/buildroot/package/nut/0002-client-ups-add-missing-include.patch @@ -0,0 +1,29 @@ +From da0969b26ad4bb839bcb88362c8f41aaf0eb8363 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 11 Oct 2016 12:05:36 +0200 +Subject: [PATCH] client/ups: add missing include + +struct timeval is declared in sys/time.h, so we need to #include it. + +Signed-off-by: "Yann E. MORIN" +--- +Backported from upstream commit da0969b26ad4bb839bcb88362c8f41aaf0eb8363 +--- + clients/upsclient.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/clients/upsclient.c b/clients/upsclient.c +index 43c0e79..dfadd0d 100644 +--- a/clients/upsclient.c ++++ b/clients/upsclient.c +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + #include "upsclient.h" + #include "common.h" +-- +2.7.4 + diff --git a/bsp/buildroot/package/nut/0002-parallel-build.patch b/bsp/buildroot/package/nut/0002-parallel-build.patch deleted file mode 100644 index f979c19d..00000000 --- a/bsp/buildroot/package/nut/0002-parallel-build.patch +++ /dev/null @@ -1,24 +0,0 @@ -conf: fix parallel install - -Do not reference the upsmon.conf.sample twice, otherwise install, with -a high number of make jobs, may fail, like so: - http://autobuild.buildroot.net/results/256/2567e13cd5bc702bc3a38a1d6fc8e34022cc7db5/build-end.log - -Signed-off-by: "Yann E. MORIN" - ---- -Upstream status: - https://github.com/networkupstools/nut/pull/147 - -diff -durB nut-2.7.2.orig/conf/Makefile.am nut-2.7.2/conf/Makefile.am ---- nut-2.7.2.orig/conf/Makefile.am 2014-02-14 09:56:53.000000000 +0100 -+++ nut-2.7.2/conf/Makefile.am 2014-08-17 11:33:46.804439240 +0200 -@@ -2,7 +2,7 @@ - - INSTALL_0600 = $(INSTALL) -m 0600 - --SECFILES = upsmon.conf.sample upsd.conf.sample upsd.users.sample -+SECFILES = upsd.conf.sample upsd.users.sample - PUBFILES = nut.conf.sample ups.conf.sample - CGIPUB = hosts.conf.sample upsset.conf.sample upsstats.html.sample \ - upsstats-single.html.sample diff --git a/bsp/buildroot/package/nut/nut.hash b/bsp/buildroot/package/nut/nut.hash index 0174366b..870c67cc 100644 --- a/bsp/buildroot/package/nut/nut.hash +++ b/bsp/buildroot/package/nut/nut.hash @@ -1,2 +1,2 @@ # From http://www.networkupstools.org/source/2.7/nut-2.7.2.tar.gz.sha256 -sha256 4d5365359b059d96dfcb77458f361a114d26c84f1297ffcd0c6c166f7200376d nut-2.7.2.tar.gz +sha256 980e82918c52d364605c0703a5dcf01f74ad2ef06e3d365949e43b7d406d25a7 nut-2.7.4.tar.gz diff --git a/bsp/buildroot/package/nut/nut.mk b/bsp/buildroot/package/nut/nut.mk index b0a92ca6..7136e834 100644 --- a/bsp/buildroot/package/nut/nut.mk +++ b/bsp/buildroot/package/nut/nut.mk @@ -5,7 +5,7 @@ ################################################################################ NUT_VERSION_MAJOR = 2.7 -NUT_VERSION = $(NUT_VERSION_MAJOR).2 +NUT_VERSION = $(NUT_VERSION_MAJOR).4 NUT_SITE = http://www.networkupstools.org/source/$(NUT_VERSION_MAJOR) NUT_LICENSE = GPLv2+, GPLv3+ (python scripts), GPL/Artistic (perl client) NUT_LICENSE_FILES = COPYING LICENSE-GPL2 LICENSE-GPL3 @@ -20,10 +20,6 @@ NUT_CONF_OPTS = \ --with-altpidpath=/var/run/upsd \ --without-hal -NUT_CONF_ENV = \ - GDLIB_CONFIG=$(STAGING_DIR)/usr/bin/gdlib-config \ - NET_SNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config - # For uClibc-based toolchains, nut forgets to link with -lm ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) NUT_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -lm" @@ -45,7 +41,9 @@ endif # gd with support for png is required for the CGI ifeq ($(BR2_PACKAGE_GD)$(BR2_PACKAGE_LIBPNG),yy) NUT_DEPENDENCIES += gd libpng -NUT_CONF_OPTS += --with-cgi +NUT_CONF_OPTS += \ + --with-cgi \ + --with-gdlib-config=$(STAGING_DIR)/usr/bin/gdlib-config else NUT_CONF_OPTS += --without-cgi endif @@ -77,7 +75,9 @@ endif ifeq ($(BR2_PACKAGE_NETSNMP),y) NUT_DEPENDENCIES += netsnmp -NUT_CONF_OPTS += --with-snmp +NUT_CONF_OPTS += \ + --with-snmp \ + --with-net-snmp-config=$(STAGING_DIR)/usr/bin/net-snmp-config else NUT_CONF_OPTS += --without-snmp endif diff --git a/bsp/buildroot/package/nvidia-driver/0001-use-LDFLAGS.patch b/bsp/buildroot/package/nvidia-driver/0001-use-LDFLAGS.patch new file mode 100644 index 00000000..7b7df809 --- /dev/null +++ b/bsp/buildroot/package/nvidia-driver/0001-use-LDFLAGS.patch @@ -0,0 +1,48 @@ +kernel: use LDFLAGS when linking modules + +Currently, linking module objects is simply using $(LD), assuming that +the default emulation is correct for the current architecture. + +However, that might not be the case when the toolchain default is not +the same as the current arch. For example, if the toolchain defaults to +i386 and is capable of x86_64, and we're targetting x86_64 (or the +opposite), the link would fail because the ld emulation is incorrect: + + .../i686-pc-linux-gnu-ld: Relocatable linking with relocations from + format elf64-x86-64 (.../nvidia-driver-370.23/kernel/nvidia/nv-frontend.o) + to format elf32-i386 (.../nvidia-driver-370.23/kernel/nvidia/nv-interface.o) + is not supported + +Add use of $(LDFLAGS) when doing the link, as the kernel provides the +proper emulation in those. + +Signed-off-by: "Yann E. MORIN" + +--- +Issue reported upstream: + https://devtalk.nvidia.com/default/topic/958653/ + +diff -durN nvidia-driver-370.23.orig/kernel/nvidia/nvidia.Kbuild nvidia-driver-370.23/kernel/nvidia/nvidia.Kbuild +--- nvidia-driver-370.23.orig/kernel/nvidia/nvidia.Kbuild 2016-08-09 01:57:50.000000000 +0200 ++++ nvidia-driver-370.23/kernel/nvidia/nvidia.Kbuild 2016-08-20 12:25:02.780233423 +0200 +@@ -87,7 +87,7 @@ + always += $(NVIDIA_INTERFACE) + + $(obj)/$(NVIDIA_INTERFACE): $(addprefix $(obj)/,$(NVIDIA_OBJECTS)) +- $(LD) -r -o $@ $^ ++ $(LD) $(LDFLAGS) -r -o $@ $^ + + + # +diff -durN nvidia-driver-370.23.orig/kernel/nvidia-modeset/nvidia-modeset.Kbuild nvidia-driver-370.23/kernel/nvidia-modeset/nvidia-modeset.Kbuild +--- nvidia-driver-370.23.orig/kernel/nvidia-modeset/nvidia-modeset.Kbuild 2016-08-09 01:43:19.000000000 +0200 ++++ nvidia-driver-370.23/kernel/nvidia-modeset/nvidia-modeset.Kbuild 2016-08-20 12:25:39.596772662 +0200 +@@ -70,7 +70,7 @@ + always += $(NVIDIA_MODESET_INTERFACE) + + $(obj)/$(NVIDIA_MODESET_INTERFACE): $(addprefix $(obj)/,$(NVIDIA_MODESET_OBJECTS)) +- $(LD) -r -o $@ $^ ++ $(LD) $(LDFLAGS) -r -o $@ $^ + + # + # Register the conftests needed by nvidia-modeset.ko diff --git a/bsp/buildroot/package/nvidia-driver/Config.in b/bsp/buildroot/package/nvidia-driver/Config.in index 04499f63..1105ec63 100644 --- a/bsp/buildroot/package/nvidia-driver/Config.in +++ b/bsp/buildroot/package/nvidia-driver/Config.in @@ -22,10 +22,11 @@ config BR2_PACKAGE_NVIDIA_DRIVER_XORG default y depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR select BR2_PACKAGE_MESA3D_HEADERS - select BR2_PACKAGE_XLIB_LIBX11 - select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBX11 # runtime + select BR2_PACKAGE_XLIB_LIBXEXT # runtime select BR2_PACKAGE_HAS_LIBGL select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBEGL_WAYLAND select BR2_PACKAGE_HAS_LIBGLES if BR2_PACKAGE_NVIDIA_DRIVER_XORG @@ -62,7 +63,6 @@ config BR2_PACKAGE_NVIDIA_DRIVER_OPENCL config BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS bool "CUDA MPS server and control" - depends on BR2_x86_64 help Say 'y' here if you need to run more than one program doing CUDA at the same time. The MPS server will be diff --git a/bsp/buildroot/package/nvidia-driver/nvidia-driver.hash b/bsp/buildroot/package/nvidia-driver/nvidia-driver.hash index ba2f5554..04a44b82 100644 --- a/bsp/buildroot/package/nvidia-driver/nvidia-driver.hash +++ b/bsp/buildroot/package/nvidia-driver/nvidia-driver.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 d3a2842cbfb1163e20c658fbfaf5a235d5c9f035cd2d657f15df8a14b3fe80b1 NVIDIA-Linux-x86-358.16.run -sha256 a942cdb29ed715ff1ce25beb06b6c2490126b98ef8bee5d9973967b557596bf2 NVIDIA-Linux-x86_64-358.16.run +sha256 cc79d3ac2b688009ed2e47a1cf27557aea5dd745b3b6e9b83945c359ddab4335 NVIDIA-Linux-x86-375.20.run +sha256 d10e40a19dc57ac958567a2b247c2b113e5f1e4186ad48e9a58e70a46d07620b NVIDIA-Linux-x86_64-375.20.run diff --git a/bsp/buildroot/package/nvidia-driver/nvidia-driver.mk b/bsp/buildroot/package/nvidia-driver/nvidia-driver.mk index 7e670206..cb9b7fae 100644 --- a/bsp/buildroot/package/nvidia-driver/nvidia-driver.mk +++ b/bsp/buildroot/package/nvidia-driver/nvidia-driver.mk @@ -4,7 +4,7 @@ # ################################################################################ -NVIDIA_DRIVER_VERSION = 358.16 +NVIDIA_DRIVER_VERSION = 375.20 NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64) NVIDIA_DRIVER_SITE = ftp://download.nvidia.com/XFree86/Linux-x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION) NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)-$(NVIDIA_DRIVER_VERSION).run @@ -20,25 +20,56 @@ ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y) # are build dependencies of packages that depend on nvidia-driver, so # they should be built prior to those packages, and the only simple # way to do so is to make nvidia-driver depend on them. -NVIDIA_DRIVER_DEPENDENCIES = mesa3d-headers xlib_libX11 xlib_libXext +NVIDIA_DRIVER_DEPENDENCIES = mesa3d-headers NVIDIA_DRIVER_PROVIDES = libgl libegl libgles -# We have two variables that contains a list of libraries to install: -# NVIDIA_DRIVER_LIBS -# contains the libraries whose filename end up in .so.$(VERSION); rather -# than duplicate the version string for all of them, we just store their -# basename, and append the version string below. -# NVIDIA_DRIVER_LIBS_NO_VERSION -# contains all libraries the do not use the NVidia version; since there -# is currently only one such library, we store its full name. +# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; it +# has been replaced with libGL.so.1.0.0. Installing both is technically +# possible, but great care must be taken to ensure they do not conflict, +# so that EGL still works. The legacy library exposes an NVidia-specific +# API, so it should not be needed, except for legacy, binary-only +# applications (in other words: we don't care). +# +# libGL.so.1.0.0 is the new vendor-neutral library, aimed at replacing +# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The latter contains +# NVidia extensions (which is deemed bad now), while the former follows +# the newly-introduced vendor-neutral "dispatching" API/ABI: +# https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux-opengl-abi-proposal.txt +# However, this is not very usefull to us, as we don't support multiple +# GL providers at the same time on the system, which this proposal is +# aimed at supporting. +# +# So we only install the legacy library for now. +NVIDIA_DRIVER_LIBS_GL = \ + libGLX.so.0 \ + libGL.so.$(NVIDIA_DRIVER_VERSION) \ + libGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ + +NVIDIA_DRIVER_LIBS_EGL = \ + libEGL.so.1 \ + libGLdispatch.so.0 \ + libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ + +NVIDIA_DRIVER_LIBS_GLES = \ + libGLESv1_CM.so.1 \ + libGLESv2.so.2 \ + libGLESv1_CM_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ + libGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ + +NVIDIA_DRIVER_LIBS_MISC = \ + libnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-egl-wayland.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \ + tls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ + libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) \ -# Each line corresponds to a specific set of libraries NVIDIA_DRIVER_LIBS = \ - libEGL libGLESv1_CM libGLESv2 libGL \ - libnvidia-glcore libnvidia-eglcore libnvidia-glsi \ - tls/libnvidia-tls \ - libvdpau libvdpau_nvidia \ - libnvidia-ml + $(NVIDIA_DRIVER_LIBS_GL) \ + $(NVIDIA_DRIVER_LIBS_EGL) \ + $(NVIDIA_DRIVER_LIBS_GLES) \ + $(NVIDIA_DRIVER_LIBS_MISC) \ # Install the gl.pc file define NVIDIA_DRIVER_INSTALL_GL_DEV @@ -54,110 +85,91 @@ endef # on using those libraries (e.g. if the user has such an agreement, or # wants to run a third-party program developped under such an agreement). ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y) -NVIDIA_DRIVER_LIBS += libnvidia-ifr libnvidia-fbc +NVIDIA_DRIVER_LIBS += \ + libnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) endif # We refer to the destination path; the origin file has no directory component -NVIDIA_DRIVER_X_MODS = drivers/nvidia_drv.so \ +NVIDIA_DRIVER_X_MODS = \ + drivers/nvidia_drv.so \ extensions/libglx.so.$(NVIDIA_DRIVER_VERSION) \ libnvidia-wfb.so.$(NVIDIA_DRIVER_VERSION) endif # X drivers ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y) -NVIDIA_DRIVER_LIBS += libcuda libnvidia-compiler libnvcuvid libnvidia-encode +NVIDIA_DRIVER_LIBS += \ + libcuda.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \ + libnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y) NVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server endif endif ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_OPENCL),y) -NVIDIA_DRIVER_LIBS_NO_VERSION += libOpenCL.so.1.0.0 -NVIDIA_DRIVER_LIBS += libnvidia-opencl +NVIDIA_DRIVER_LIBS += \ + libOpenCL.so.1.0.0 \ + libnvidia-opencl.so.$(NVIDIA_DRIVER_VERSION) endif +# Build and install the kernel modules if needed +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_MODULE),y) + +NVIDIA_DRIVER_MODULES = nvidia nvidia-modeset nvidia-drm +ifeq ($(BR2_x86_64),y) +NVIDIA_DRIVER_MODULES += nvidia-uvm +endif + +# They can't do everything like everyone. They need those variables, +# because they don't recognise the usual variables set by the kernel +# build system. We also need to tell them what modules to build. +NVIDIA_DRIVER_MODULE_MAKE_OPTS = \ + NV_KERNEL_SOURCES="$(LINUX_DIR)" \ + NV_KERNEL_OUTPUT="$(LINUX_DIR)" \ + NV_KERNEL_MODULES="$(NVIDIA_DRIVER_MODULES)" + +NVIDIA_DRIVER_MODULE_SUBDIRS = kernel + +$(eval $(kernel-module)) + +endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == y + # The downloaded archive is in fact an auto-extract script. So, it can run # virtually everywhere, and it is fine enough to provide useful options. # Except it can't extract into an existing (even empty) directory. define NVIDIA_DRIVER_EXTRACT_CMDS $(SHELL) $(DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --extract-only --target \ $(@D)/tmp-extract + chmod u+w -R $(@D) mv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D) rm -rf $(@D)/tmp-extract endef -# Build and install the kernel modules if needed -ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_MODULE),y) - -NVIDIA_DRIVER_DEPENDENCIES += linux - -# NVidia uses the legacy naming scheme for the x86 architecture, when i386 -# and x86_64 were still considered two separate architectures in the Linux -# kernel. -NVIDIA_DRIVER_ARCH = $(if $(BR2_i386),i386,$(BR2_ARCH)) - -NVIDIA_DRIVER_MOD_DIRS = kernel -NVIDIA_DRIVER_MOD_FILES = kernel/nvidia.ko -# nvidia-uvm.ko only available for x86_64 -ifeq ($(BR2_x86_64)$(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),yy) -NVIDIA_DRIVER_MOD_DIRS += kernel/uvm -NVIDIA_DRIVER_MOD_FILES += kernel/uvm/nvidia-uvm.ko -endif - -# We can not use '$(MAKE) -C $(@D)/$${dir}' because NVidia's uses its own -# Makefile to build a kernel module, which includes a lot of assumptions -# on where to find its own sub-Makefile fragments, and fails if make is -# not run from the directory where the module's source files are. Hence -# our little trick to cd in there first. -# That's also the reason why we do not use LINUX_MAKE_FLAGS or the other -# linux-specific variables, since NVidia's Makefile does not understand -# them. -define NVIDIA_DRIVER_BUILD_CMDS - for dir in $(NVIDIA_DRIVER_MOD_DIRS); do \ - (cd $(@D)/$${dir} && \ - $(MAKE) SYSSRC="$(LINUX_DIR)" SYSOUT="$(LINUX_DIR)" \ - CC="$(TARGET_CC)" LD="$(TARGET_LD)" HOSTCC="$(HOSTCC)" \ - ARCH=$(NVIDIA_DRIVER_ARCH) module) || exit 1; \ - done -endef - -# We do not use module-install because NVidia's Makefile requires root. -# Also, we do not install it in the expected location (in nvidia/ rather -# than in kernel/drivers/video/) -define NVIDIA_DRIVER_INSTALL_KERNEL_MODULE - for mod in $(NVIDIA_DRIVER_MOD_FILES); do \ - $(INSTALL) -D -m 0644 $(@D)/$${mod} \ - $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/nvidia/$${mod##*/} \ - || exit 1; \ - done - $(HOST_DIR)/sbin/depmod -a -b $(TARGET_DIR) $(LINUX_VERSION_PROBED) -endef - -endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == y - # Helper to install libraries # $1: destination directory (target or staging) # -# For all libraries that need it, we append the NVidia version string. -# Then for all libraries, we install them and create a symlink using -# their SONAME, so we can link to them at runtime; we also create the -# no-version symlink, so we can link to them at build time. +# For all libraries, we install them and create a symlink using +# their SONAME, so we can link to them at runtime; we also create +# the no-version symlink, so we can link to them at build time. define NVIDIA_DRIVER_INSTALL_LIBS - for libpath in $(addsuffix .so.$(NVIDIA_DRIVER_VERSION),$(NVIDIA_DRIVER_LIBS)) \ - $(NVIDIA_DRIVER_LIBS_NO_VERSION); \ - do \ - libname="$${libpath##*/}"; \ - $(INSTALL) -D -m 0644 $(@D)/$${libpath} $(1)/usr/lib/$${libname}; \ - libsoname="$$( $(TARGET_READELF) -d "$(@D)/$${libpath}" \ - |sed -r -e '/.*\(SONAME\).*\[(.*)\]$$/!d; s//\1/;' )"; \ - if [ -n "$${libsoname}" -a "$${libsoname}" != "$${libname}" ]; then \ - ln -sf $${libname} $(1)/usr/lib/$${libsoname}; \ - fi; \ - baseso="$${libname/.so*}.so"; \ - if [ -n "$${baseso}" -a "$${baseso}" != "$${libname}" ]; then \ - ln -sf $${libname} $(1)/usr/lib/$${baseso}; \ - fi; \ - done + $(foreach lib,$(NVIDIA_DRIVER_LIBS),\ + $(INSTALL) -D -m 0644 $(@D)/$(lib) $(1)/usr/lib/$(notdir $(lib)) + libsoname="$$( $(TARGET_READELF) -d "$(@D)/$(lib)" \ + |sed -r -e '/.*\(SONAME\).*\[(.*)\]$$/!d; s//\1/;' )"; \ + if [ -n "$${libsoname}" -a "$${libsoname}" != "$(notdir $(lib))" ]; then \ + ln -sf $(notdir $(lib)) \ + $(1)/usr/lib/$${libsoname}; \ + fi + baseso=$(firstword $(subst .,$(space),$(notdir $(lib)))).so; \ + if [ -n "$${baseso}" -a "$${baseso}" != "$(notdir $(lib))" ]; then \ + ln -sf $(notdir $(lib)) $(1)/usr/lib/$${baseso}; \ + fi + ) endef # For staging, install libraries and development files @@ -169,14 +181,14 @@ endef # For target, install libraries and X.org modules define NVIDIA_DRIVER_INSTALL_TARGET_CMDS $(call NVIDIA_DRIVER_INSTALL_LIBS,$(TARGET_DIR)) - for m in $(NVIDIA_DRIVER_X_MODS); do \ - $(INSTALL) -D -m 0644 $(@D)/$${m##*/} \ - $(TARGET_DIR)/usr/lib/xorg/modules/$${m}; \ - done - for p in $(NVIDIA_DRIVER_PROGS); do \ - $(INSTALL) -D -m 0755 $(@D)/$${p} \ - $(TARGET_DIR)/usr/bin/$${p}; \ - done + $(foreach m,$(NVIDIA_DRIVER_X_MODS), \ + $(INSTALL) -D -m 0644 $(@D)/$(notdir $(m)) \ + $(TARGET_DIR)/usr/lib/xorg/modules/$(m) + ) + $(foreach p,$(NVIDIA_DRIVER_PROGS), \ + $(INSTALL) -D -m 0755 $(@D)/$(p) \ + $(TARGET_DIR)/usr/bin/$(p) + ) $(NVIDIA_DRIVER_INSTALL_KERNEL_MODULE) endef diff --git a/bsp/buildroot/package/ocf-linux/ocf-linux.mk b/bsp/buildroot/package/ocf-linux/ocf-linux.mk index 35968d5e..01854fa7 100644 --- a/bsp/buildroot/package/ocf-linux/ocf-linux.mk +++ b/bsp/buildroot/package/ocf-linux/ocf-linux.mk @@ -8,6 +8,8 @@ OCF_LINUX_VERSION = 20120127 OCF_LINUX_SITE = http://downloads.sourceforge.net/project/ocf-linux/ocf-linux/$(OCF_LINUX_VERSION) OCF_LINUX_INSTALL_STAGING = YES +OCF_LINUX_PROVIDES = cryptodev + OCF_LINUX_MODULE_SUBDIRS = ocf OCF_LINUX_MODULE_MAKE_OPTS = \ CONFIG_OCF_OCF=m \ diff --git a/bsp/buildroot/package/ocrad/ocrad.hash b/bsp/buildroot/package/ocrad/ocrad.hash index c40907bc..d2a44ae7 100644 --- a/bsp/buildroot/package/ocrad/ocrad.hash +++ b/bsp/buildroot/package/ocrad/ocrad.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 4ec711239d6b667bac015ef9908cab3ea9f8fd73f098ae355498810c8e82a8cc ocrad-0.21.tar.gz +sha256 e710be9c030fbcbce2315077326c8268feb422c0bc39fa744644cbbd1f5d4dd4 ocrad-0.25.tar.lz diff --git a/bsp/buildroot/package/ocrad/ocrad.mk b/bsp/buildroot/package/ocrad/ocrad.mk index 8a038e2c..54b607c7 100644 --- a/bsp/buildroot/package/ocrad/ocrad.mk +++ b/bsp/buildroot/package/ocrad/ocrad.mk @@ -4,7 +4,8 @@ # ################################################################################ -OCRAD_VERSION = 0.21 +OCRAD_VERSION = 0.25 +OCRAD_SOURCE = ocrad-$(OCRAD_VERSION).tar.lz OCRAD_SITE = $(BR2_GNU_MIRROR)/ocrad OCRAD_LICENSE = GPLv3+ OCRAD_LICENSE_FILES = COPYING @@ -13,19 +14,19 @@ OCRAD_INSTALL_STAGING = YES # This is not a true autotools package. define OCRAD_CONFIGURE_CMDS cd $(@D) && \ - ./configure --prefix=/usr --sysconfdir=/etc $(TARGET_CONFIGURE_OPTS) + $(TARGET_MAKE_ENV) ./configure --prefix=/usr --sysconfdir=/etc $(TARGET_CONFIGURE_OPTS) endef define OCRAD_BUILD_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) endef define OCRAD_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install endef define OCRAD_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/odhcploc/odhcploc.mk b/bsp/buildroot/package/odhcploc/odhcploc.mk index 39955519..bf4227ae 100644 --- a/bsp/buildroot/package/odhcploc/odhcploc.mk +++ b/bsp/buildroot/package/odhcploc/odhcploc.mk @@ -10,11 +10,11 @@ ODHCPLOC_LICENSE = ISC ODHCPLOC_LICENSE_FILES = COPYING define ODHCPLOC_BUILD_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all endef define ODHCPLOC_INSTALL_TARGET_CMDS - $(MAKE) PREFIX=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/odroid-mali/Config.in b/bsp/buildroot/package/odroid-mali/Config.in index 2cd8e0d3..e5c07f23 100644 --- a/bsp/buildroot/package/odroid-mali/Config.in +++ b/bsp/buildroot/package/odroid-mali/Config.in @@ -20,6 +20,15 @@ config BR2_PACKAGE_PROVIDES_LIBGLES endif +config BR2_PACKAGE_ODROID_MALI_X11 + bool + depends on BR2_aarch64 # No 32 bit version available + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + comment "odroid-mali needs a glibc toolchain" depends on BR2_aarch64 || BR2_ARM_EABIHF depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/bsp/buildroot/package/odroid-mali/odroid-mali.mk b/bsp/buildroot/package/odroid-mali/odroid-mali.mk index 7b8e5110..142fd97c 100644 --- a/bsp/buildroot/package/odroid-mali/odroid-mali.mk +++ b/bsp/buildroot/package/odroid-mali/odroid-mali.mk @@ -12,21 +12,32 @@ ODROID_MALI_LICENSE_FILES = README.md ODROID_MALI_INSTALL_STAGING = YES ODROID_MALI_PROVIDES = libegl libgles -ifeq ($(BR2_aarch64),y) -ODROID_MALI_INSTALL_ARCH = mali_libs +ifeq ($(BR2_PACKAGE_ODROID_MALI_X11),y) +ODROID_MALI_HEADERS_SUBDIR = x11/mali_headers/ +ODROID_MALI_LIBS_SUBDIR = x11/mali_libs/ +# The X11 blobs are linked against those libraries, and the headers +# include headers from those libraries +ODROID_MALI_DEPENDENCIES += \ + libdrm xlib_libX11 xlib_libXdamage \ + xlib_libXext xlib_libXfixes else -ODROID_MALI_INSTALL_ARCH = 32bit_libs +ODROID_MALI_HEADERS_SUBDIR = fbdev/mali_headers/ +ifeq ($(BR2_aarch64),y) +ODROID_MALI_LIBS_SUBDIR = fbdev/mali_libs/ +else +ODROID_MALI_LIBS_SUBDIR = fbdev/32bit_libs/ +endif endif define ODROID_MALI_INSTALL_LIBS - cp -dpfr $(@D)/fbdev/$(ODROID_MALI_INSTALL_ARCH)/lib* $(1)/usr/lib/ + cp -dpfr $(@D)/$(ODROID_MALI_LIBS_SUBDIR)/lib* $(1)/usr/lib/ endef define ODROID_MALI_INSTALL_STAGING_CMDS $(call ODROID_MALI_INSTALL_LIBS,$(STAGING_DIR)) mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig cp -dpfr $(@D)/pkgconfig/*.pc $(STAGING_DIR)/usr/lib/pkgconfig/ - cp -dpfr $(@D)/fbdev/mali_headers/* $(STAGING_DIR)/usr/include + cp -dpfr $(@D)/$(ODROID_MALI_HEADERS_SUBDIR)/* $(STAGING_DIR)/usr/include endef define ODROID_MALI_INSTALL_TARGET_CMDS diff --git a/bsp/buildroot/package/odroid-scripts/S50odroidc2_fb b/bsp/buildroot/package/odroid-scripts/S02odroidc2_fb similarity index 100% rename from bsp/buildroot/package/odroid-scripts/S50odroidc2_fb rename to bsp/buildroot/package/odroid-scripts/S02odroidc2_fb diff --git a/bsp/buildroot/package/odroid-scripts/odroid-scripts.hash b/bsp/buildroot/package/odroid-scripts/odroid-scripts.hash index 8fd4b2c6..e5a262d2 100644 --- a/bsp/buildroot/package/odroid-scripts/odroid-scripts.hash +++ b/bsp/buildroot/package/odroid-scripts/odroid-scripts.hash @@ -1,2 +1,2 @@ # Locally computed hash -sha256 779e8beccf8c66d51e495a4cc0e6eccf72c295499a1ecdc0740aa4459de786a0 odroid-scripts-a252de04562dcf8d8a4918a544b45a9e3d46d2fb.tar.gz +sha256 9d61472ee6aed2d1a7b5afdcb91b823003c8524a242572f24f89d4e57323daf3 odroid-scripts-cfd289b1d69136b8bfd725d90cd648da4654f2bd.tar.gz diff --git a/bsp/buildroot/package/odroid-scripts/odroid-scripts.mk b/bsp/buildroot/package/odroid-scripts/odroid-scripts.mk index 858ec37f..fc1940dc 100644 --- a/bsp/buildroot/package/odroid-scripts/odroid-scripts.mk +++ b/bsp/buildroot/package/odroid-scripts/odroid-scripts.mk @@ -4,7 +4,7 @@ # ################################################################################ -ODROID_SCRIPTS_VERSION = a252de04562dcf8d8a4918a544b45a9e3d46d2fb +ODROID_SCRIPTS_VERSION = cfd289b1d69136b8bfd725d90cd648da4654f2bd ODROID_SCRIPTS_SITE = $(call github,mdrjr,c2_bootini,$(ODROID_SCRIPTS_VERSION)) ODROID_SCRIPTS_LICENSE = unclear @@ -29,8 +29,8 @@ define ODROID_SCRIPTS_INSTALL_INIT_SYSTEMD endef define ODROID_SCRIPTS_INSTALL_INIT_SYSV - $(INSTALL) -D -m 0755 package/odroid-scripts/S50odroidc2_fb \ - $(TARGET_DIR)/etc/init.d/S50odroidc2_fb + $(INSTALL) -D -m 0755 package/odroid-scripts/S02odroidc2_fb \ + $(TARGET_DIR)/etc/init.d/S02odroidc2_fb endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/ofono/ofono.hash b/bsp/buildroot/package/ofono/ofono.hash index 50c92ede..d6117368 100644 --- a/bsp/buildroot/package/ofono/ofono.hash +++ b/bsp/buildroot/package/ofono/ofono.hash @@ -1,2 +1,2 @@ # From https://www.kernel.org/pub/linux/network/ofono/sha256sums.asc -sha256 cbf20f07fd15253c682b23c1786d517f505c3688f7c4ea93da777e1523b89635 ofono-1.17.tar.xz +sha256 53cdbf342913f46bce4827241c60e24255a3d43a94945edf77482ae5b312d51f ofono-1.18.tar.xz diff --git a/bsp/buildroot/package/ofono/ofono.mk b/bsp/buildroot/package/ofono/ofono.mk index 588c9cd6..82343963 100644 --- a/bsp/buildroot/package/ofono/ofono.mk +++ b/bsp/buildroot/package/ofono/ofono.mk @@ -4,7 +4,7 @@ # ################################################################################ -OFONO_VERSION = 1.17 +OFONO_VERSION = 1.18 OFONO_SOURCE = ofono-$(OFONO_VERSION).tar.xz OFONO_SITE = $(BR2_KERNEL_MIRROR)/linux/network/ofono OFONO_LICENSE = GPLv2 diff --git a/bsp/buildroot/package/ola/0002-Remove-replacing-I-with-isystem.patch b/bsp/buildroot/package/ola/0002-Remove-replacing-I-with-isystem.patch new file mode 100644 index 00000000..010c99a3 --- /dev/null +++ b/bsp/buildroot/package/ola/0002-Remove-replacing-I-with-isystem.patch @@ -0,0 +1,106 @@ +From bbb03794def326c2e8ad2de523c5a61a4c8cb464 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Thu, 22 Sep 2016 00:58:58 +0200 +Subject: [PATCH] Remove replacing -I with -isystem +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Building OLA with a GCC 6 cross-toolchain fails: + +``` +/usr/bin/arm-linux-g++ -DHAVE_CONFIG_H -I. -D_LARGEFILE_SOURCE +-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I./include -I./include +-Wall -Wformat -W -isystem +/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include -pthread +-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os +-pthread -c -o libs/acn/e131_transmit_test.o +libs/acn/e131_transmit_test.cpp +/usr/bin/arm-linux-g++ -DHAVE_CONFIG_H -I. -D_LARGEFILE_SOURCE +-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I./include -I./include +-Wall -Wformat -W -isystem +/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include -pthread +-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os +-pthread -c -o libs/acn/E131TestFramework.o +libs/acn/E131TestFramework.cpp +In file included from +/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0/ext/string_conversions.h:41:0, + from +/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0/bits/basic_string.h:5402, + from +/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0/string:52, + from ./tools/ola_trigger/config.ypp:2: +/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0/cstdlib:75:25: +fatal error: stdlib.h: No such file or directory + #include_next + ^ +compilation terminated. +``` + +The C++ library in GCC 6 now provides its own `` header that +wraps the C library header of the same name, so in `` the +header include + +``` +#include +``` + +has become + +``` +#include_next +``` + +`#include_next` is sensitive to the order of directories in the +preprocessor's search path, so if that order is changed with `-isystem` +then the compiler can't find the right header: + +``` +[1] /usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include +[2] /opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0 +[..] +End of search list. +``` + +`` is located in [2] whereas `` (C library header) is +in [1]. In this case, the `#include_next ` statement in +``, located in [2], is evaluated **after** the search path [1], +so the compiler does not find the right system header. + +The problem is that the OLA build system replaces the `-I` in the CFLAGS +from libprotobuf with `-isystem` to fix some warnings treated as errors +in the libprotobuf header files. + +`-isystem` should be used to suppress warnings in system headers only +and the libprotobuf header files are not system files. + +The correct fix is to compile with less restrictions and remove +`-Werror` for the build. + +As using `-isystem` is reordering GCCs search path and using `-isystem` +is really not necessary, remove the faulty replacement of `-I`. + +Upstream status: https://github.com/OpenLightingProject/ola/pull/1126 + +Signed-off-by: Jörg Krause +--- + config/ola.m4 | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/config/ola.m4 b/config/ola.m4 +index 2796cfb..d3b8cc8 100644 +--- a/config/ola.m4 ++++ b/config/ola.m4 +@@ -24,9 +24,6 @@ AC_DEFUN([PROTOBUF_SUPPORT], + AC_REQUIRE_CPP() + PKG_CHECK_MODULES(libprotobuf, [protobuf >= $1]) + +-# We want to replace -I with -isystem here to disable errors in the .h files +-# See https://groups.google.com/forum/#!topic/open-lighting/39Mj0KXlCIk +-libprotobuf_CFLAGS=`echo $libprotobuf_CFLAGS | sed 's/-I/-isystem /'` + AC_SUBST([libprotobuf_CFLAGS]) + + AC_ARG_WITH([protoc], +-- +2.10.0 + diff --git a/bsp/buildroot/package/ola/Config.in b/bsp/buildroot/package/ola/Config.in index 7b56f5ca..90a92fd2 100644 --- a/bsp/buildroot/package/ola/Config.in +++ b/bsp/buildroot/package/ola/Config.in @@ -1,6 +1,6 @@ -comment "ola needs a toolchain w/ C++, threads, wchar, dynamic library" - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \ - || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS +comment "ola needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS menuconfig BR2_PACKAGE_OLA @@ -10,7 +10,6 @@ menuconfig BR2_PACKAGE_OLA select BR2_PACKAGE_UTIL_LINUX depends on BR2_INSTALL_LIBSTDCPP # protobuf depends on !BR2_STATIC_LIBS # protobuf - depends on BR2_USE_WCHAR # util-linux depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS help @@ -54,6 +53,8 @@ config BR2_PACKAGE_OLA_EXAMPLES config BR2_PACKAGE_OLA_RDM_TESTS bool "rdm tests" depends on BR2_PACKAGE_OLA_PYTHON_BINDINGS + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_NUMPY help Build OLA RDM tests. diff --git a/bsp/buildroot/package/ola/ola.hash b/bsp/buildroot/package/ola/ola.hash index 628b5252..a791e9ca 100644 --- a/bsp/buildroot/package/ola/ola.hash +++ b/bsp/buildroot/package/ola/ola.hash @@ -1,3 +1,2 @@ # Locally calculated -sha256 74baba18c5b62aba15e27e6b7882c6eac22043c8e7b297e4d2f6eb05dd1a33b0 ola-0.10.0.tar.gz -sha256 32a8a7a00c7db7647710c84ed02611f2eba99669f2de4da7aceae9d4444f53a3 34999c70dcbe2d38bf13d57c9cfbdc63f0899b9a.patch +sha256 986e61874bc80db3b23cf201af2dafa39e3412cc50cddf1cd449c869110bfd27 ola-0.10.2.tar.gz diff --git a/bsp/buildroot/package/ola/ola.mk b/bsp/buildroot/package/ola/ola.mk index a983459a..cfd66383 100644 --- a/bsp/buildroot/package/ola/ola.mk +++ b/bsp/buildroot/package/ola/ola.mk @@ -4,9 +4,8 @@ # ################################################################################ -OLA_VERSION = 0.10.0 -OLA_SITE = $(call github,OpenLightingProject,ola,$(OLA_VERSION)) -OLA_PATCH = https://github.com/OpenLightingProject/ola/commit/34999c70dcbe2d38bf13d57c9cfbdc63f0899b9a.patch +OLA_VERSION = 0.10.2 +OLA_SITE = https://github.com/OpenLightingProject/ola/releases/download/$(OLA_VERSION) OLA_LICENSE = LGPLv2.1+ (libola, libolacommon, Python bindings), GPLv2+ (libolaserver, olad, Python examples and tests) OLA_LICENSE_FILES = LICENCE GPL LGPL OLA_INSTALL_STAGING = YES @@ -40,7 +39,8 @@ HOST_OLA_CONF_OPTS = \ --disable-examples \ --disable-unittests \ --disable-doxygen-html \ - --disable-doxygen-doc + --disable-doxygen-doc \ + --disable-fatal-warnings # On the host side, we only need ola_protoc_plugin, so build and install this # only. @@ -86,6 +86,11 @@ endif ifeq ($(BR2_PACKAGE_OLA_RDM_TESTS),y) OLA_CONF_OPTS += --enable-rdm-tests +OLA_DEPENDENCIES += python-numpy +# needed as numpy builds some shared libraries and ola checks for +# numpy using a host python test program which fails with 'wrong ELF +# class'. +OLA_CONF_ENV = ac_cv_have_pymod_numpy=yes else OLA_CONF_OPTS += --disable-rdm-tests endif diff --git a/bsp/buildroot/package/olsr/Config.in b/bsp/buildroot/package/olsr/Config.in index a49c4e0f..85c5b4da 100644 --- a/bsp/buildroot/package/olsr/Config.in +++ b/bsp/buildroot/package/olsr/Config.in @@ -1,8 +1,11 @@ config BR2_PACKAGE_OLSR - bool "olsrd" + bool "olsr" depends on BR2_USE_MMU # fork() depends on BR2_TOOLCHAIN_HAS_THREADS depends on !BR2_STATIC_LIBS + # doesn't build with musl, + # https://github.com/OLSR/olsrd/issues/6 + depends on !BR2_TOOLCHAIN_USES_MUSL help The Optimized Link State Routing protocol (OLSR) is a routing protocol that is optimised for mobile ad-hoc @@ -13,6 +16,7 @@ config BR2_PACKAGE_OLSR http://www.olsr.org/ -comment "olsr needs a toolchain w/ threads, dynamic library" +comment "olsr needs a uClibc or glibc toolchain w/ threads, dynamic library" depends on BR2_USE_MMU - depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + BR2_TOOLCHAIN_USES_MUSL diff --git a/bsp/buildroot/package/olsr/olsr.hash b/bsp/buildroot/package/olsr/olsr.hash index e14d52cd..c6b14153 100644 --- a/bsp/buildroot/package/olsr/olsr.hash +++ b/bsp/buildroot/package/olsr/olsr.hash @@ -1,2 +1,2 @@ -# From http://www.olsr.org/releases/0.9/SHA256SUM-0.9.0.2 -sha256 cc464b29c7740354d815d5faa753fd27c0677d71e8eb42e78abc382996892845 olsrd-0.9.0.2.tar.bz2 +# From http://www.olsr.org/releases/0.9/SHA256SUM-0.9.0.3 +sha256 1f038ed3ea72e4f73dfc9701de83de7313f5049161c8df17b9aaeba8e9711e92 olsrd-0.9.0.3.tar.bz2 diff --git a/bsp/buildroot/package/olsr/olsr.mk b/bsp/buildroot/package/olsr/olsr.mk index 60c80988..5a456a95 100644 --- a/bsp/buildroot/package/olsr/olsr.mk +++ b/bsp/buildroot/package/olsr/olsr.mk @@ -5,7 +5,7 @@ ################################################################################ OLSR_VERSION_MAJOR = 0.9 -OLSR_VERSION = $(OLSR_VERSION_MAJOR).0.2 +OLSR_VERSION = $(OLSR_VERSION_MAJOR).0.3 OLSR_SOURCE = olsrd-$(OLSR_VERSION).tar.bz2 OLSR_SITE = http://www.olsr.org/releases/$(OLSR_VERSION_MAJOR) OLSR_PLUGINS = arprefresh bmf dot_draw dyn_gw dyn_gw_plain httpinfo jsoninfo \ diff --git a/bsp/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.mk b/bsp/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.mk index 7cfed650..b8a342bf 100644 --- a/bsp/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.mk +++ b/bsp/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.mk @@ -10,7 +10,7 @@ OMAP_U_BOOT_UTILS_LICENSE = GPLv2, GPLv2+ OMAP_U_BOOT_UTILS_LICENSE_FILES = COPYING define HOST_OMAP_U_BOOT_UTILS_BUILD_CMDS - $(MAKE) -C $(@D) + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) endef define HOST_OMAP_U_BOOT_UTILS_INSTALL_CMDS diff --git a/bsp/buildroot/package/on2-8170-libs/on2-8170-libs.mk b/bsp/buildroot/package/on2-8170-libs/on2-8170-libs.mk index db68f021..ad321d83 100644 --- a/bsp/buildroot/package/on2-8170-libs/on2-8170-libs.mk +++ b/bsp/buildroot/package/on2-8170-libs/on2-8170-libs.mk @@ -7,7 +7,7 @@ ON2_8170_LIBS_VERSION = 1.0 ON2_8170_LIBS_SITE = ftp://ftp.linux4sam.org/pub/demo/linux4sam_1.9/codec -ON2_8170_LICENSE = PROPRIETARY +ON2_8170_LIBS_LICENSE = PROPRIETARY # No license file is included in the archive ON2_8170_LIBS_INSTALL_STAGING = YES diff --git a/bsp/buildroot/package/open2300/open2300.mk b/bsp/buildroot/package/open2300/open2300.mk index 323f566c..588692d4 100644 --- a/bsp/buildroot/package/open2300/open2300.mk +++ b/bsp/buildroot/package/open2300/open2300.mk @@ -28,7 +28,7 @@ endif endif define OPEN2300_BUILD_CMDS - $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" \ + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" \ CFLAGS="$(OPEN2300_CFLAGS)" CC_LDFLAGS="$(OPEN2300_LDFLAGS)" \ -C $(@D) $(OPEN2300_BINS) endef diff --git a/bsp/buildroot/package/openal/openal.hash b/bsp/buildroot/package/openal/openal.hash index 260f1b78..45f1421d 100644 --- a/bsp/buildroot/package/openal/openal.hash +++ b/bsp/buildroot/package/openal/openal.hash @@ -1,2 +1,6 @@ # Locally calculated sha256 a341f8542f1f0b8c65241a17da13d073f18ec06658e1a1606a8ecc8bbc2b3314 openal-soft-1.17.2.tar.bz2 +sha256 9c9040269376aba77b1277bbae0f055aee535e14ad4a3ab4e66e39830504e83f 27916ce3db023454a0295ee63ea196fbc246674c.patch +sha256 4621f6b79d4bbac5ce423f227c92ad1e4f833d7e1f2ff1cc3b5f03721f75b933 a52cfc804813aef8e4b304e20cf843fa6907af6c.patch +sha256 f442da31b4001a5133f2762a5bc1e780b11d5e2d9f21b257f54695ee6d87d997 c3c283a0b5d0130afafaa2a5b6ce6fbc30b6e6a1.patch +sha256 3691c1a327b87d5fb487841459fd00d3baaa79808ecb5e3b33b349363663640f 46b3e1d08ca10e809eb2e20b6371812958b97e1f.patch diff --git a/bsp/buildroot/package/openal/openal.mk b/bsp/buildroot/package/openal/openal.mk index 2916aa60..63841047 100644 --- a/bsp/buildroot/package/openal/openal.mk +++ b/bsp/buildroot/package/openal/openal.mk @@ -7,12 +7,17 @@ OPENAL_VERSION = 1.17.2 OPENAL_SOURCE = openal-soft-$(OPENAL_VERSION).tar.bz2 OPENAL_SITE = http://kcat.strangesoft.net/openal-releases +OPENAL_PATCH = \ + https://github.com/kcat/openal-soft/commit/27916ce3db023454a0295ee63ea196fbc246674c.patch \ + https://github.com/kcat/openal-soft/commit/a52cfc804813aef8e4b304e20cf843fa6907af6c.patch \ + https://github.com/kcat/openal-soft/commit/c3c283a0b5d0130afafaa2a5b6ce6fbc30b6e6a1.patch \ + https://github.com/kcat/openal-soft/commit/46b3e1d08ca10e809eb2e20b6371812958b97e1f.patch OPENAL_LICENSE = LGPLv2+ OPENAL_LICENSE_FILES = COPYING OPENAL_INSTALL_STAGING = YES -# We don't need the utilities, Distros don't ship them either -OPENAL_CONF_OPTS += -DALSOFT_UTILS=OFF +# We don't need examples, tests and utilities, Distros don't ship them either +OPENAL_CONF_OPTS += -DALSOFT_UTILS=OFF -DALSOFT_EXAMPLES=OFF -DALSOFT_TESTS=OFF ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8),y) OPENAL_CONF_OPTS += -DEXTRA_LIBS=atomic diff --git a/bsp/buildroot/package/openblas/Config.in b/bsp/buildroot/package/openblas/Config.in index 0609a91e..de26ab3b 100644 --- a/bsp/buildroot/package/openblas/Config.in +++ b/bsp/buildroot/package/openblas/Config.in @@ -27,10 +27,10 @@ config BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET default "PPC440" if BR2_powerpc_440 default "PPC440FP2" if BR2_powerpc_440fp # P5600 is built with MSA support which is only available in Codescape toolchains - default "P5600" if BR2_mips_32r2 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS - default "SICORTEX" if BR2_mips_64 + default "P5600" if BR2_mips_p5600 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS + default "SICORTEX" if BR2_MIPS_CPU_MIPS64 # I6400 is built with MSA support which is only available in Codescape toolchains - default "I6400" if BR2_mips_64r6 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS + default "I6400" if BR2_mips_i6400 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS default "SPARC" if BR2_sparc # Cortex-A15 always have a VFPv4 default "CORTEXA15" if (BR2_cortex_a15 && BR2_ARM_EABIHF) diff --git a/bsp/buildroot/package/openblas/openblas.mk b/bsp/buildroot/package/openblas/openblas.mk index 9583e0ea..a26e10a4 100644 --- a/bsp/buildroot/package/openblas/openblas.mk +++ b/bsp/buildroot/package/openblas/openblas.mk @@ -31,6 +31,9 @@ else OPENBLAS_MAKE_OPTS += USE_THREAD=0 endif +# We don't know if OpenMP is available or not, so disable +OPENBLAS_MAKE_OPTS += USE_OPENMP=0 + # Static-only/Shared-only toggle ifeq ($(BR2_STATIC_LIBS),y) OPENBLAS_MAKE_OPTS += NO_SHARED=1 diff --git a/bsp/buildroot/package/opencv/0001-atomic.patch b/bsp/buildroot/package/opencv/0001-atomic.patch index bbe8d433..8c9724d2 100644 --- a/bsp/buildroot/package/opencv/0001-atomic.patch +++ b/bsp/buildroot/package/opencv/0001-atomic.patch @@ -1,5 +1,8 @@ -Bug#714923: opencv FTBFS on sparc64 -https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=714923 +From f71c288c6d853e623461f97cd72e6a9e6541f61a Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Tue, 1 Nov 2016 09:25:30 +0100 +Subject: [PATCH 1/4] Bug#714923: opencv FTBFS on sparc64 + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=714923 opencv uses functions from , but it wrongly assumes this functions apply to an int type. While it is true for some @@ -7,11 +10,26 @@ architectures, some architectures are using a long type there. The correct type to use is _Atomic_word. Signed-off-by: Waldemar Brodkorb +[Samuel Martin: convert to git diff] +Signed-off-by: Samuel Martin +--- + modules/core/include/opencv2/core/core.hpp | 10 +++++----- + modules/core/include/opencv2/core/gpumat.hpp | 2 +- + modules/core/include/opencv2/core/operations.hpp | 4 ++-- + modules/core/src/gpumat.cpp | 2 +- + modules/core/src/matrix.cpp | 4 ++-- + modules/core/src/system.cpp | 8 ++++---- + modules/gpu/include/opencv2/gpu/gpu.hpp | 2 +- + modules/ocl/include/opencv2/ocl/ocl.hpp | 2 +- + modules/ocl/src/matrix_operations.cpp | 2 +- + modules/python/src2/cv2.cpp | 8 ++++---- + 10 files changed, 22 insertions(+), 22 deletions(-) -diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/core.hpp opencv-2.4.12.3/modules/core/include/opencv2/core/core.hpp ---- opencv-2.4.12.3.orig/modules/core/include/opencv2/core/core.hpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/core/include/opencv2/core/core.hpp 2016-04-03 00:10:50.455774144 +0200 -@@ -1290,7 +1290,7 @@ +diff --git a/modules/core/include/opencv2/core/core.hpp b/modules/core/include/opencv2/core/core.hpp +index 591d50a..5b4261e 100644 +--- a/modules/core/include/opencv2/core/core.hpp ++++ b/modules/core/include/opencv2/core/core.hpp +@@ -1290,7 +1290,7 @@ public: operator const _Tp*() const; _Tp* obj; //< the object pointer. @@ -20,7 +38,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/core.hpp opencv }; template -@@ -1490,9 +1490,9 @@ +@@ -1490,9 +1490,9 @@ class CV_EXPORTS MatAllocator public: MatAllocator() {} virtual ~MatAllocator() {} @@ -32,7 +50,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/core.hpp opencv }; /*! -@@ -1985,7 +1985,7 @@ +@@ -1985,7 +1985,7 @@ public: //! pointer to the reference counter; // when matrix points to user-allocated data, the pointer is NULL @@ -41,7 +59,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/core.hpp opencv //! helper fields used in locateROI and adjustROI uchar* datastart; -@@ -3408,7 +3408,7 @@ +@@ -3449,7 +3449,7 @@ public: { Hdr(int _dims, const int* _sizes, int _type); void clear(); @@ -50,10 +68,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/core.hpp opencv int dims; int valueOffset; size_t nodeSize; -diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/gpumat.hpp opencv-2.4.12.3/modules/core/include/opencv2/core/gpumat.hpp ---- opencv-2.4.12.3.orig/modules/core/include/opencv2/core/gpumat.hpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/core/include/opencv2/core/gpumat.hpp 2016-04-02 23:08:58.116874218 +0200 -@@ -301,7 +301,7 @@ +diff --git a/modules/core/include/opencv2/core/gpumat.hpp b/modules/core/include/opencv2/core/gpumat.hpp +index 68647d9..d488c27 100644 +--- a/modules/core/include/opencv2/core/gpumat.hpp ++++ b/modules/core/include/opencv2/core/gpumat.hpp +@@ -301,7 +301,7 @@ namespace cv { namespace gpu //! pointer to the reference counter; // when GpuMatrix points to user-allocated data, the pointer is NULL @@ -62,10 +81,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/gpumat.hpp open //! helper fields used in locateROI and adjustROI uchar* datastart; -diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/operations.hpp opencv-2.4.12.3/modules/core/include/opencv2/core/operations.hpp ---- opencv-2.4.12.3.orig/modules/core/include/opencv2/core/operations.hpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/core/include/opencv2/core/operations.hpp 2016-04-02 23:12:59.148385306 +0200 -@@ -2589,7 +2589,7 @@ +diff --git a/modules/core/include/opencv2/core/operations.hpp b/modules/core/include/opencv2/core/operations.hpp +index 0ae51c6..a455502 100644 +--- a/modules/core/include/opencv2/core/operations.hpp ++++ b/modules/core/include/opencv2/core/operations.hpp +@@ -2589,7 +2589,7 @@ template inline Ptr<_Tp>::Ptr(_Tp* _obj) : obj(_obj) { if(obj) { @@ -74,7 +94,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/operations.hpp *refcount = 1; } else -@@ -2628,7 +2628,7 @@ +@@ -2628,7 +2628,7 @@ template inline Ptr<_Tp>& Ptr<_Tp>::operator = (const Ptr<_Tp>& _p { if (this != &_ptr) { @@ -83,10 +103,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/include/opencv2/core/operations.hpp if( _refcount ) CV_XADD(_refcount, 1); release(); -diff -Nur opencv-2.4.12.3.orig/modules/core/src/gpumat.cpp opencv-2.4.12.3/modules/core/src/gpumat.cpp ---- opencv-2.4.12.3.orig/modules/core/src/gpumat.cpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/core/src/gpumat.cpp 2016-04-02 23:14:38.894804300 +0200 -@@ -716,7 +716,7 @@ +diff --git a/modules/core/src/gpumat.cpp b/modules/core/src/gpumat.cpp +index 9669191..0bd2568 100644 +--- a/modules/core/src/gpumat.cpp ++++ b/modules/core/src/gpumat.cpp +@@ -716,7 +716,7 @@ void cv::gpu::GpuMat::create(int _rows, int _cols, int _type) datastart = data = static_cast(devPtr); dataend = data + nettosize; @@ -95,10 +116,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/src/gpumat.cpp opencv-2.4.12.3/modul *refcount = 1; } } -diff -Nur opencv-2.4.12.3.orig/modules/core/src/matrix.cpp opencv-2.4.12.3/modules/core/src/matrix.cpp ---- opencv-2.4.12.3.orig/modules/core/src/matrix.cpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/core/src/matrix.cpp 2016-04-02 23:59:53.405491031 +0200 -@@ -213,7 +213,7 @@ +diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp +index 57abffc..7b840a0 100644 +--- a/modules/core/src/matrix.cpp ++++ b/modules/core/src/matrix.cpp +@@ -213,7 +213,7 @@ void Mat::create(int d, const int* _sizes, int _type) { size_t totalsize = alignSize(step.p[0]*size.p[0], (int)sizeof(*refcount)); data = datastart = (uchar*)fastMalloc(totalsize + (int)sizeof(*refcount)); @@ -107,7 +129,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/src/matrix.cpp opencv-2.4.12.3/modul *refcount = 1; } else -@@ -228,7 +228,7 @@ +@@ -228,7 +228,7 @@ void Mat::create(int d, const int* _sizes, int _type) allocator = 0; size_t totalSize = alignSize(step.p[0]*size.p[0], (int)sizeof(*refcount)); data = datastart = (uchar*)fastMalloc(totalSize + (int)sizeof(*refcount)); @@ -116,10 +138,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/src/matrix.cpp opencv-2.4.12.3/modul *refcount = 1; } #else -diff -Nur opencv-2.4.12.3.orig/modules/core/src/system.cpp opencv-2.4.12.3/modules/core/src/system.cpp ---- opencv-2.4.12.3.orig/modules/core/src/system.cpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/core/src/system.cpp 2016-04-02 23:33:19.298905578 +0200 -@@ -892,7 +892,7 @@ +diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp +index f5a1af2..9a7b262 100644 +--- a/modules/core/src/system.cpp ++++ b/modules/core/src/system.cpp +@@ -892,7 +892,7 @@ struct Mutex::Impl void unlock() { LeaveCriticalSection(&cs); } CRITICAL_SECTION cs; @@ -128,7 +151,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/src/system.cpp opencv-2.4.12.3/modul }; #ifndef __GNUC__ -@@ -920,7 +920,7 @@ +@@ -920,7 +920,7 @@ struct Mutex::Impl void unlock() { OSSpinLockUnlock(&sl); } OSSpinLock sl; @@ -137,7 +160,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/src/system.cpp opencv-2.4.12.3/modul }; #elif defined __linux__ && !defined ANDROID && !defined __LINUXTHREADS_OLD__ -@@ -935,7 +935,7 @@ +@@ -935,7 +935,7 @@ struct Mutex::Impl void unlock() { pthread_spin_unlock(&sl); } pthread_spinlock_t sl; @@ -146,7 +169,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/src/system.cpp opencv-2.4.12.3/modul }; #else -@@ -950,7 +950,7 @@ +@@ -950,7 +950,7 @@ struct Mutex::Impl void unlock() { pthread_mutex_unlock(&sl); } pthread_mutex_t sl; @@ -155,10 +178,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/src/system.cpp opencv-2.4.12.3/modul }; #endif -diff -Nur opencv-2.4.12.3.orig/modules/gpu/include/opencv2/gpu/gpu.hpp opencv-2.4.12.3/modules/gpu/include/opencv2/gpu/gpu.hpp ---- opencv-2.4.12.3.orig/modules/gpu/include/opencv2/gpu/gpu.hpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/gpu/include/opencv2/gpu/gpu.hpp 2016-04-02 23:16:19.737293785 +0200 -@@ -125,7 +125,7 @@ +diff --git a/modules/gpu/include/opencv2/gpu/gpu.hpp b/modules/gpu/include/opencv2/gpu/gpu.hpp +index de16982..266fa2f 100644 +--- a/modules/gpu/include/opencv2/gpu/gpu.hpp ++++ b/modules/gpu/include/opencv2/gpu/gpu.hpp +@@ -125,7 +125,7 @@ public: size_t step; uchar* data; @@ -167,10 +191,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/gpu/include/opencv2/gpu/gpu.hpp opencv-2. uchar* datastart; uchar* dataend; -diff -Nur opencv-2.4.12.3.orig/modules/ocl/include/opencv2/ocl/ocl.hpp opencv-2.4.12.3/modules/ocl/include/opencv2/ocl/ocl.hpp ---- opencv-2.4.12.3.orig/modules/ocl/include/opencv2/ocl/ocl.hpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/ocl/include/opencv2/ocl/ocl.hpp 2016-04-02 23:18:55.715331443 +0200 -@@ -404,7 +404,7 @@ +diff --git a/modules/ocl/include/opencv2/ocl/ocl.hpp b/modules/ocl/include/opencv2/ocl/ocl.hpp +index e8eb3e8..5ea05fc 100644 +--- a/modules/ocl/include/opencv2/ocl/ocl.hpp ++++ b/modules/ocl/include/opencv2/ocl/ocl.hpp +@@ -404,7 +404,7 @@ namespace cv //! pointer to the reference counter; // when oclMatrix points to user-allocated data, the pointer is NULL @@ -179,10 +204,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/ocl/include/opencv2/ocl/ocl.hpp opencv-2. //! helper fields used in locateROI and adjustROI //datastart and dataend are not used in current version -diff -Nur opencv-2.4.12.3.orig/modules/ocl/src/matrix_operations.cpp opencv-2.4.12.3/modules/ocl/src/matrix_operations.cpp ---- opencv-2.4.12.3.orig/modules/ocl/src/matrix_operations.cpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/ocl/src/matrix_operations.cpp 2016-04-02 23:19:23.633128033 +0200 -@@ -591,7 +591,7 @@ +diff --git a/modules/ocl/src/matrix_operations.cpp b/modules/ocl/src/matrix_operations.cpp +index 331e432..c61dca4 100644 +--- a/modules/ocl/src/matrix_operations.cpp ++++ b/modules/ocl/src/matrix_operations.cpp +@@ -591,7 +591,7 @@ void cv::ocl::oclMat::createEx(int _rows, int _cols, int _type, DevMemRW rw_type datastart = data = (uchar *)dev_ptr; dataend = data + nettosize; @@ -191,10 +217,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/ocl/src/matrix_operations.cpp opencv-2.4. *refcount = 1; } } -diff -Nur opencv-2.4.12.3.orig/modules/python/src2/cv2.cpp opencv-2.4.12.3/modules/python/src2/cv2.cpp ---- opencv-2.4.12.3.orig/modules/python/src2/cv2.cpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/python/src2/cv2.cpp 2016-04-02 23:18:34.897991791 +0200 -@@ -157,12 +157,12 @@ +diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp +index 04cea39..40e5d43 100644 +--- a/modules/python/src2/cv2.cpp ++++ b/modules/python/src2/cv2.cpp +@@ -157,12 +157,12 @@ static PyObject* failmsgp(const char *fmt, ...) static size_t REFCOUNT_OFFSET = (size_t)&(((PyObject*)0)->ob_refcnt) + (0x12345678 != *(const size_t*)"\x78\x56\x34\x12\0\0\0\0\0")*sizeof(int); @@ -209,7 +236,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/python/src2/cv2.cpp opencv-2.4.12.3/modul { return (int*)((size_t)obj + REFCOUNT_OFFSET); } -@@ -173,7 +173,7 @@ +@@ -173,7 +173,7 @@ public: NumpyAllocator() {} ~NumpyAllocator() {} @@ -218,7 +245,7 @@ diff -Nur opencv-2.4.12.3.orig/modules/python/src2/cv2.cpp opencv-2.4.12.3/modul uchar*& datastart, uchar*& data, size_t* step) { PyEnsureGIL gil; -@@ -206,7 +206,7 @@ +@@ -206,7 +206,7 @@ public: datastart = data = (uchar*)PyArray_DATA((PyArrayObject*) o); } @@ -227,3 +254,6 @@ diff -Nur opencv-2.4.12.3.orig/modules/python/src2/cv2.cpp opencv-2.4.12.3/modul { PyEnsureGIL gil; if( !refcount ) +-- +2.10.2 + diff --git a/bsp/buildroot/package/opencv/0002-avoid-sysctl_h.patch b/bsp/buildroot/package/opencv/0002-avoid-sysctl_h.patch index 60322054..b63ba55a 100644 --- a/bsp/buildroot/package/opencv/0002-avoid-sysctl_h.patch +++ b/bsp/buildroot/package/opencv/0002-avoid-sysctl_h.patch @@ -1,13 +1,24 @@ -From upstream master branch: -https://github.com/Itseez/opencv/blob/master/modules/core/src/ +From e5e71c31d54562f9c67a8226f0bfc08ad24b81cf Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Tue, 1 Nov 2016 09:30:23 +0100 +Subject: [PATCH 2/4] From upstream master branch: + https://github.com/Itseez/opencv/blob/master/modules/core/src/ Do not include sysctl.h targeting Linux systems. Signed-off-by: Waldemar Brodkorb +[Samuel Martin: convert patch to git diff, add cap_ffmpeg_impl.hpp fix] +Signed-off-by: Samuel Martin +--- + modules/core/src/parallel.cpp | 2 +- + modules/core/src/system.cpp | 2 +- + modules/highgui/src/cap_ffmpeg_impl.hpp | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) -diff -Nur opencv-2.4.12.3.orig/modules/core/src/parallel.cpp opencv-2.4.12.3/modules/core/src/parallel.cpp ---- opencv-2.4.12.3.orig/modules/core/src/parallel.cpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/core/src/parallel.cpp 2016-04-05 12:59:37.750143762 +0200 +diff --git a/modules/core/src/parallel.cpp b/modules/core/src/parallel.cpp +index 4459a24..0374876 100644 +--- a/modules/core/src/parallel.cpp ++++ b/modules/core/src/parallel.cpp @@ -56,7 +56,7 @@ #include #if defined ANDROID @@ -17,10 +28,11 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/src/parallel.cpp opencv-2.4.12.3/mod #include #endif #endif -diff -Nur opencv-2.4.12.3.orig/modules/core/src/system.cpp opencv-2.4.12.3/modules/core/src/system.cpp ---- opencv-2.4.12.3.orig/modules/core/src/system.cpp 2015-10-26 08:56:34.000000000 +0100 -+++ opencv-2.4.12.3/modules/core/src/system.cpp 2016-04-05 13:05:22.468323717 +0200 -@@ -163,7 +163,7 @@ +diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp +index 9a7b262..731f090 100644 +--- a/modules/core/src/system.cpp ++++ b/modules/core/src/system.cpp +@@ -163,7 +163,7 @@ std::wstring GetTempFileNameWinRT(std::wstring prefix) #include #if defined ANDROID #include @@ -29,3 +41,21 @@ diff -Nur opencv-2.4.12.3.orig/modules/core/src/system.cpp opencv-2.4.12.3/modul #include #endif #endif +diff --git a/modules/highgui/src/cap_ffmpeg_impl.hpp b/modules/highgui/src/cap_ffmpeg_impl.hpp +index dc3e10d..23674ff 100644 +--- a/modules/highgui/src/cap_ffmpeg_impl.hpp ++++ b/modules/highgui/src/cap_ffmpeg_impl.hpp +@@ -126,9 +126,9 @@ extern "C" { + #include + #include + #include +- #include + #include + #if defined __APPLE__ ++ #include + #include + #include + #endif +-- +2.10.2 + diff --git a/bsp/buildroot/package/opencv/0003-types_c.h-Fix-compiling-VFP-assembler-code.patch b/bsp/buildroot/package/opencv/0003-types_c.h-Fix-compiling-VFP-assembler-code.patch new file mode 100644 index 00000000..85a23a07 --- /dev/null +++ b/bsp/buildroot/package/opencv/0003-types_c.h-Fix-compiling-VFP-assembler-code.patch @@ -0,0 +1,37 @@ +From 18c868c47307b786d1bea729dccaad7f8d696cb7 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 6 Sep 2016 11:49:00 +0200 +Subject: [PATCH 1/1] types_c.h: Fix compiling VFP assembler code + +Replace asm by __asm__ according to +https://gcc.gnu.org/onlinedocs/gcc/Alternate-Keywords.html#Alternate-Keywords +as suggested by Arnout Vandecappelle: +http://lists.busybox.net/pipermail/buildroot/2016-September/171491.html + +to fix build errors in ffmpeg with opencv2 support detected by +buildroot autobuilders: +http://autobuild.buildroot.net/results/c32/c32a21240a9933796ee850349a62ff3c2314f25c/build-end.log + +Patch sent upstream: https://github.com/opencv/opencv/pull/7242 + +Signed-off-by: Bernd Kuhls +--- + modules/core/include/opencv2/core/types_c.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/core/include/opencv2/core/types_c.h b/modules/core/include/opencv2/core/types_c.h +index c21cd2c..771715d 100644 +--- a/modules/core/include/opencv2/core/types_c.h ++++ b/modules/core/include/opencv2/core/types_c.h +@@ -318,7 +318,7 @@ enum { + int res; \ + float temp; \ + (void)temp; \ +- asm(_asm_string : [res] "=r" (res), [temp] "=w" (temp) : [value] "w" (_value)); \ ++ __asm__(_asm_string : [res] "=r" (res), [temp] "=w" (temp) : [value] "w" (_value)); \ + return res; + // 2. version for double + #ifdef __clang__ +-- +2.9.3 + diff --git a/bsp/buildroot/package/opencv/0004-CMakeLists.txt-Do-not-add-libdl-to-LINKER_LIBS-for-s.patch b/bsp/buildroot/package/opencv/0004-CMakeLists.txt-Do-not-add-libdl-to-LINKER_LIBS-for-s.patch new file mode 100644 index 00000000..6d63411b --- /dev/null +++ b/bsp/buildroot/package/opencv/0004-CMakeLists.txt-Do-not-add-libdl-to-LINKER_LIBS-for-s.patch @@ -0,0 +1,39 @@ +From 22e03ef8a9e3adcbc6b2f16c3cc98e4e14443eed Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 24 Sep 2016 17:51:22 +0200 +Subject: [PATCH 1/1] CMakeLists.txt: Do not add libdl to LINKER_LIBS for + static builds + +Without this patch -ldl is present in opencv.pc which breaks OpenCV +detection by ffmpeg, detected by buildroot autobuilders: + +http://autobuild.buildroot.net/results/765/7657e01481995a4f0d725467e935a83928a59a04//ffmpeg-3.1.3/config.log + +/home/peko/autobuild/instance-1/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/4.9.4/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -ldl + +Patch sent upstream: https://github.com/opencv/opencv/pull/7337 + +Signed-off-by: Bernd Kuhls +--- + CMakeLists.txt | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 007b80d..99b047d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -457,7 +457,10 @@ if(UNIX) + elseif(${CMAKE_SYSTEM_NAME} MATCHES "QNX") + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} m) + else() +- set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m pthread rt) ++ if(BUILD_SHARED_LIBS) ++ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl) ++ endif() ++ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} m pthread rt) + endif() + else() + set(HAVE_LIBPTHREAD YES) +-- +2.9.3 + diff --git a/bsp/buildroot/package/opencv3/Config.in b/bsp/buildroot/package/opencv3/Config.in index 2f4aa7ac..4c00bf1b 100644 --- a/bsp/buildroot/package/opencv3/Config.in +++ b/bsp/buildroot/package/opencv3/Config.in @@ -1,6 +1,7 @@ menuconfig BR2_PACKAGE_OPENCV3 bool "opencv3" select BR2_PACKAGE_ZLIB + depends on BR2_TOOLCHAIN_HAS_ATOMIC depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_WCHAR @@ -335,6 +336,7 @@ config BR2_PACKAGE_OPENCV3_INSTALL_DATA endif # BR2_PACKAGE_OPENCV3 comment "opencv3 needs a toolchain w/ C++, NPTL, wchar, dynamic library" + depends on BR2_TOOLCHAIN_HAS_ATOMIC depends on !BR2_INSTALL_LIBSTDCPP || \ !BR2_USE_WCHAR || \ !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ diff --git a/bsp/buildroot/package/opencv3/opencv3.mk b/bsp/buildroot/package/opencv3/opencv3.mk index 91cdfe64..10660a90 100644 --- a/bsp/buildroot/package/opencv3/opencv3.mk +++ b/bsp/buildroot/package/opencv3/opencv3.mk @@ -10,6 +10,11 @@ OPENCV3_INSTALL_STAGING = YES OPENCV3_LICENSE = BSD-3c OPENCV3_LICENSE_FILES = LICENSE +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +OPENCV3_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -latomic" +endif + # OpenCV component options OPENCV3_CONF_OPTS += \ -DBUILD_DOCS=OFF \ diff --git a/bsp/buildroot/package/opengl/libegl/Config.in b/bsp/buildroot/package/opengl/libegl/Config.in index 8401bb22..f756fbea 100644 --- a/bsp/buildroot/package/opengl/libegl/Config.in +++ b/bsp/buildroot/package/opengl/libegl/Config.in @@ -1,6 +1,10 @@ config BR2_PACKAGE_HAS_LIBEGL bool +config BR2_PACKAGE_HAS_LIBEGL_WAYLAND + bool + depends on BR2_PACKAGE_HAS_LIBEGL + config BR2_PACKAGE_PROVIDES_LIBEGL depends on BR2_PACKAGE_HAS_LIBEGL string diff --git a/bsp/buildroot/package/openipmi/openipmi.hash b/bsp/buildroot/package/openipmi/openipmi.hash index e6fafe48..30e37634 100644 --- a/bsp/buildroot/package/openipmi/openipmi.hash +++ b/bsp/buildroot/package/openipmi/openipmi.hash @@ -1,4 +1,5 @@ # From http://sourceforge.net/projects/openipmi/files/OpenIPMI%202.0%20Library/ -sha1 54f63ab7fe09f6a4b0b718601fe9c61014aa220b OpenIPMI-2.0.21.tar.gz +sha1 826081e7ed0ad430de9b8fdb75a9eaa10c99b660 OpenIPMI-2.0.22.tar.gz # Locally computed +sha256 4988900043c35fcfa9b2bf275d6593904f6429221befb770ba6ecb5502108e55 OpenIPMI-2.0.22.tar.gz sha256 0eafaa502ccf752899c5089159574081067d0c4ac53ea0ace33a5087f33ea32a 0001-ui-use-standard-uint32_t.patch diff --git a/bsp/buildroot/package/openipmi/openipmi.mk b/bsp/buildroot/package/openipmi/openipmi.mk index ea46e191..9faa7c68 100644 --- a/bsp/buildroot/package/openipmi/openipmi.mk +++ b/bsp/buildroot/package/openipmi/openipmi.mk @@ -4,9 +4,9 @@ # ################################################################################ -OPENIPMI_VERSION = 2.0.21 +OPENIPMI_VERSION = 2.0.22 OPENIPMI_SITE = http://sourceforge.net/projects/openipmi/files/OpenIPMI%202.0%20Library -OPENIPMI_SOURCE = OpenIPMI-2.0.21.tar.gz +OPENIPMI_SOURCE = OpenIPMI-$(OPENIPMI_VERSION).tar.gz OPENIPMI_PATCH = \ http://sourceforge.net/p/openipmi/patches/26/attachment/0001-ui-use-standard-uint32_t.patch OPENIPMI_LICENSE = LGPLv2+, GPLv2+, BSD-3c diff --git a/bsp/buildroot/package/openjpeg/0001-thirdparty-tiff-append-flags-found-by-pkg-config-if-.patch b/bsp/buildroot/package/openjpeg/0001-thirdparty-tiff-append-flags-found-by-pkg-config-if-.patch new file mode 100644 index 00000000..bce790a4 --- /dev/null +++ b/bsp/buildroot/package/openjpeg/0001-thirdparty-tiff-append-flags-found-by-pkg-config-if-.patch @@ -0,0 +1,72 @@ +From 38f50c7d9ad3ba06b64583045665203afb53cbd9 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 6 Nov 2016 16:29:08 +0100 +Subject: [PATCH] thirdparty: tiff: append flags found by pkg-config if + available + +This change allows to get all required CFLAGS/LDFLAGS in case of static only +build. + +This build issue [1] was triggered by the Buildroot farms. + +[1] http://autobuild.buildroot.net/results/d0d/d0d22727311d6300e0e400728126170407bfd699/build-end.log + +Signed-off-by: Samuel Martin +--- + thirdparty/CMakeLists.txt | 23 +++++++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt +index cb24b43b58e2..cd6a5e1391b0 100644 +--- a/thirdparty/CMakeLists.txt ++++ b/thirdparty/CMakeLists.txt +@@ -1,5 +1,9 @@ + # 3rd party libs + ++if(NOT BUILD_THIRDPARTY) ++ include(FindPkgConfig) ++endif(NOT BUILD_THIRDPARTY) ++ + #------------ + # Try to find lib Z + if(BUILD_THIRDPARTY) +@@ -36,6 +40,9 @@ if(BUILD_THIRDPARTY) + else(BUILD_THIRDPARTY) + if(ZLIB_FOUND) + find_package(PNG) ++ # Static only build: ++ # it is not necessary to invoke pkg_check_module on libpng, because libpng ++ # only depends on zlib, which is already checked. + if(PNG_FOUND) + message(STATUS "Your system seems to have a PNG lib available, we will use it") + set(OPJ_HAVE_PNG_H 1 PARENT_SCOPE) +@@ -66,12 +73,24 @@ if(BUILD_THIRDPARTY) + set(OPJ_HAVE_LIBTIFF 1 PARENT_SCOPE) + else(BUILD_THIRDPARTY) + find_package(TIFF) ++ # Static only build: ++ # it is necessary to invoke pkg_check_module on libtiff since it may have ++ # several other dependencies not declared by its cmake module, but they are ++ # in the its pkgconfig module. ++ if(PKG_CONFIG_FOUND) ++ foreach(pc_tiff_module tiff tiff3 tiff4 tiff-3 tiff-4 libtiff libtiff3 libtiff4 libtiff-3 libtiff-4) ++ pkg_check_modules(PC_TIFF QUIET ${pc_tiff_module}) ++ if(PC_TIFF_FOUND) ++ break() ++ endif(PC_TIFF_FOUND) ++ endforeach() ++ endif(PKG_CONFIG_FOUND) + if(TIFF_FOUND) + message(STATUS "Your system seems to have a TIFF lib available, we will use it") + set(OPJ_HAVE_TIFF_H 1 PARENT_SCOPE) + set(OPJ_HAVE_LIBTIFF 1 PARENT_SCOPE) +- set(TIFF_LIBNAME ${TIFF_LIBRARIES} PARENT_SCOPE) +- set(TIFF_INCLUDE_DIRNAME ${TIFF_INCLUDE_DIR} PARENT_SCOPE) ++ set(TIFF_LIBNAME ${TIFF_LIBRARIES} ${PC_TIFF_STATIC_LIBRARIES} PARENT_SCOPE) ++ set(TIFF_INCLUDE_DIRNAME ${TIFF_INCLUDE_DIR} ${PC_TIFF_STATIC_INCLUDE_DIRS} PARENT_SCOPE) + else(TIFF_FOUND) # not found + set(OPJ_HAVE_TIFF_H 0 PARENT_SCOPE) + set(OPJ_HAVE_LIBTIFF 0 PARENT_SCOPE) +-- +2.10.2 + diff --git a/bsp/buildroot/package/openjpeg/0002-thirdparty-lcms2-append-flags-found-by-pkg-config-if.patch b/bsp/buildroot/package/openjpeg/0002-thirdparty-lcms2-append-flags-found-by-pkg-config-if.patch new file mode 100644 index 00000000..5697b82d --- /dev/null +++ b/bsp/buildroot/package/openjpeg/0002-thirdparty-lcms2-append-flags-found-by-pkg-config-if.patch @@ -0,0 +1,49 @@ +From 226daa77ea5a35da306f9af2548f3e2c9e79f577 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Fri, 11 Nov 2016 23:35:13 +0100 +Subject: [PATCH] thirdparty: lcms2: append flags found by pkg-config if + available + +This change allows to get all required CFLAGS/LDFLAGS in case of static only +build. + +Fixes a buildroot build failure (see [1], [2] and [3]). + +[1] http://autobuild.buildroot.net/results/5ce/5cee20afd8bef5268832cddcb3a5270746be7a57 +[2] http://lists.busybox.net/pipermail/buildroot/2016-November/177187.html +[3] http://lists.busybox.net/pipermail/buildroot/2016-November/177188.html + +Signed-off-by: Peter Seiderer +--- + thirdparty/CMakeLists.txt | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt +index cd6a5e1391b0..a3a8494d89b1 100644 +--- a/thirdparty/CMakeLists.txt ++++ b/thirdparty/CMakeLists.txt +@@ -113,12 +113,19 @@ if( BUILD_THIRDPARTY) + set(OPJ_HAVE_LIBLCMS2 1 PARENT_SCOPE) + else(BUILD_THIRDPARTY) + find_package(LCMS2) ++ # Static only build: ++ # it is necessary to invoke pkg_check_module on lcms2 since it may have ++ # several other dependencies not declared by its cmake module, but they are ++ # in the its pkgconfig module. ++ if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_LCMS2 QUIET lcms2) ++ endif(PKG_CONFIG_FOUND) + if(LCMS2_FOUND) + message(STATUS "Your system seems to have a LCMS2 lib available, we will use it") + set(OPJ_HAVE_LCMS2_H 1 PARENT_SCOPE) + set(OPJ_HAVE_LIBLCMS2 1 PARENT_SCOPE) +- set(LCMS_LIBNAME ${LCMS2_LIBRARIES} PARENT_SCOPE) +- set(LCMS_INCLUDE_DIRNAME ${LCMS2_INCLUDE_DIRS} PARENT_SCOPE) ++ set(LCMS_LIBNAME ${LCMS2_LIBRARIES} ${PC_LCMS2_STATIC_LIBRARIES} PARENT_SCOPE) ++ set(LCMS_INCLUDE_DIRNAME ${LCMS2_INCLUDE_DIRS} ${PC_LCMS2_STATIC_INCLUDE_DIRS} PARENT_SCOPE) + else(LCMS2_FOUND) # not found lcms2 + # try to find LCMS + find_package(LCMS) +-- +2.10.2 + diff --git a/bsp/buildroot/package/openjpeg/openjpeg.hash b/bsp/buildroot/package/openjpeg/openjpeg.hash index 35d4fbd5..c0abd0c5 100644 --- a/bsp/buildroot/package/openjpeg/openjpeg.hash +++ b/bsp/buildroot/package/openjpeg/openjpeg.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 4afc996cd5e0d16360d71c58216950bcb4ce29a3272360eb29cadb1c8bce4efc openjpeg-2.1.tar.gz +sha256 4ce77b6ef538ef090d9bde1d5eeff8b3069ab56c4906f083475517c2c023dfa7 openjpeg-2.1.2.tar.gz diff --git a/bsp/buildroot/package/openjpeg/openjpeg.mk b/bsp/buildroot/package/openjpeg/openjpeg.mk index bf125261..ca220681 100644 --- a/bsp/buildroot/package/openjpeg/openjpeg.mk +++ b/bsp/buildroot/package/openjpeg/openjpeg.mk @@ -4,8 +4,8 @@ # ################################################################################ -OPENJPEG_VERSION = 2.1 -OPENJPEG_SITE = $(call github,uclouvain,openjpeg,version.$(OPENJPEG_VERSION)) +OPENJPEG_VERSION = 2.1.2 +OPENJPEG_SITE = $(call github,uclouvain,openjpeg,v$(OPENJPEG_VERSION)) OPENJPEG_LICENSE = BSD-2c OPENJPEG_LICENSE_FILES = LICENSE OPENJPEG_INSTALL_STAGING = YES diff --git a/bsp/buildroot/package/openntpd/Config.in b/bsp/buildroot/package/openntpd/Config.in index 1433b097..1b856c03 100644 --- a/bsp/buildroot/package/openntpd/Config.in +++ b/bsp/buildroot/package/openntpd/Config.in @@ -13,4 +13,5 @@ config BR2_PACKAGE_OPENNTPD comment "openntpd needs a toolchain w/ NPTL" depends on BR2_USE_MMU + depends on !BR2_PACKAGE_NTP depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/bsp/buildroot/package/openocd/openocd.mk b/bsp/buildroot/package/openocd/openocd.mk index 21a302ff..0d183657 100644 --- a/bsp/buildroot/package/openocd/openocd.mk +++ b/bsp/buildroot/package/openocd/openocd.mk @@ -99,5 +99,20 @@ HOST_OPENOCD_CONF_OPTS = \ HOST_OPENOCD_DEPENDENCIES = host-libftdi host-libusb host-libusb-compat +# Avoid documentation rebuild. On PowerPC64(le), we patch the +# configure script. Due to this, the version.texi files gets +# regenerated, and then since it has a newer date than openocd.info, +# openocd build system rebuilds the documentation. Unfortunately, this +# documentation rebuild fails on old machines. We work around this by +# faking the date of the generated version.texi file, to make the +# build system believe the documentation doesn't need to be +# regenerated. +define OPENOCD_FIX_VERSION_TEXI + touch -r $(@D)/doc/openocd.info $(@D)/doc/version.texi +endef +OPENOCD_POST_BUILD_HOOKS += OPENOCD_FIX_VERSION_TEXI +HOST_OPENOCD_POST_BUILD_HOOKS += OPENOCD_FIX_VERSION_TEXI + + $(eval $(autotools-package)) $(eval $(host-autotools-package)) diff --git a/bsp/buildroot/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch b/bsp/buildroot/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch index 3c99409a..1f5eb89d 100644 --- a/bsp/buildroot/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch +++ b/bsp/buildroot/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch @@ -1,4 +1,4 @@ -From ded9f83ef3bcb4c688da80354c179543e4862e52 Mon Sep 17 00:00:00 2001 +From 4e8aa3a9e1696e5e02ff0a3ae5a72f034ee60c2f Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Wed, 25 May 2016 15:57:10 +0200 Subject: [PATCH] install the stack libraries to "lib" subdirectory @@ -36,109 +36,132 @@ refactoring is needed to fix this properly. [1] http://sourceforge.net/p/openpowerlink/discussion/newbie/thread/3f13af65/#8f80/a50a/4649/f07c +[rebase on v2.5.0] Signed-off-by: Romain Naour --- + stack/proj/linux/liboplkcn-sim/CMakeLists.txt | 2 +- stack/proj/linux/liboplkcn/CMakeLists.txt | 2 +- stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt | 2 +- stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt | 2 +- stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmn-sim/CMakeLists.txt | 2 +- stack/proj/linux/liboplkmn/CMakeLists.txt | 2 +- stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt | 2 +- - stack/proj/linux/liboplkmnapp-kernelpcie/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt | 2 +- stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt | 2 +- stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt | 2 +- - 9 files changed, 9 insertions(+), 9 deletions(-) + 11 files changed, 11 insertions(+), 11 deletions(-) +diff --git a/stack/proj/linux/liboplkcn-sim/CMakeLists.txt b/stack/proj/linux/liboplkcn-sim/CMakeLists.txt +index 73b641d..b8b5c9d 100644 +--- a/stack/proj/linux/liboplkcn-sim/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcn-sim/CMakeLists.txt +@@ -96,4 +96,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) diff --git a/stack/proj/linux/liboplkcn/CMakeLists.txt b/stack/proj/linux/liboplkcn/CMakeLists.txt -index c700d9d..b891553 100644 +index 323eafc..459124a 100644 --- a/stack/proj/linux/liboplkcn/CMakeLists.txt +++ b/stack/proj/linux/liboplkcn/CMakeLists.txt -@@ -94,4 +94,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) +@@ -90,4 +90,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") -INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) +INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) diff --git a/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt b/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt -index 03752df..7b1050c 100644 +index f8b1850..c16194a 100644 --- a/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt +++ b/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt -@@ -87,4 +87,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) +@@ -83,4 +83,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") -INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) +INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) diff --git a/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt b/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt -index bcc4273..8ca5b7e 100644 +index 0f07e63..0074616 100644 --- a/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt +++ b/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt -@@ -87,4 +87,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) +@@ -83,4 +83,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") -INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) +INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) diff --git a/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt b/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt -index 440f02c..6ffcbe9 100644 +index d0dad78..ee0fdec 100644 --- a/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt +++ b/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt -@@ -77,4 +77,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) +@@ -76,4 +76,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkmn-sim/CMakeLists.txt b/stack/proj/linux/liboplkmn-sim/CMakeLists.txt +index eb6396a..5beaa07 100644 +--- a/stack/proj/linux/liboplkmn-sim/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmn-sim/CMakeLists.txt +@@ -91,4 +91,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") -INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) +INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) diff --git a/stack/proj/linux/liboplkmn/CMakeLists.txt b/stack/proj/linux/liboplkmn/CMakeLists.txt -index a8850b8..d762d4c 100644 +index cf7927f..6b19557 100644 --- a/stack/proj/linux/liboplkmn/CMakeLists.txt +++ b/stack/proj/linux/liboplkmn/CMakeLists.txt -@@ -93,4 +93,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) +@@ -89,4 +89,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") -INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) +INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) diff --git a/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt -index f2606a3..f71b182 100644 +index 9daa2df..bfccb25 100644 --- a/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt +++ b/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt -@@ -86,4 +86,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) +@@ -82,4 +82,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") -INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) +INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) -diff --git a/stack/proj/linux/liboplkmnapp-kernelpcie/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-kernelpcie/CMakeLists.txt -index 9362ad8..1d5fb6d 100644 ---- a/stack/proj/linux/liboplkmnapp-kernelpcie/CMakeLists.txt -+++ b/stack/proj/linux/liboplkmnapp-kernelpcie/CMakeLists.txt -@@ -88,4 +88,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) +diff --git a/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt +index 0135f46..83128eb 100644 +--- a/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt +@@ -91,4 +91,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") -INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) +INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) diff --git a/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt -index 6741eef..042cbcf 100644 +index cd97882..aaaa526 100644 --- a/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt +++ b/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt -@@ -86,4 +86,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) +@@ -82,4 +82,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") -INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) +INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) diff --git a/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt b/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt -index b4dd41b..cf875ca 100644 +index 7e1a820..82205c2 100644 --- a/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt +++ b/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt -@@ -80,4 +80,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) +@@ -79,4 +79,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") -INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) +INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) -- -2.5.5 +2.8.1 diff --git a/bsp/buildroot/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch b/bsp/buildroot/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch index 4cfbb511..7d338a45 100644 --- a/bsp/buildroot/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch +++ b/bsp/buildroot/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch @@ -1,4 +1,4 @@ -From 535f50e30afaa4fc6389273d1a5b6c20cb7cf5a4 Mon Sep 17 00:00:00 2001 +From 8cb39257e12d6b82190aec8ab9ad89a9ee13af71 Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Wed, 25 May 2016 15:57:29 +0200 Subject: [PATCH] cmake: install oplk headers files @@ -15,10 +15,10 @@ Signed-off-by: Romain Naour 1 file changed, 5 insertions(+) diff --git a/stack/CMakeLists.txt b/stack/CMakeLists.txt -index c6cde8c..2652858 100644 +index 3b11c54..4eadf44 100644 --- a/stack/CMakeLists.txt +++ b/stack/CMakeLists.txt -@@ -104,3 +104,8 @@ ELSEIF((CMAKE_SYSTEM_NAME STREQUAL "Generic") AND (CMAKE_SYSTEM_PROCESSOR STREQU +@@ -105,3 +105,8 @@ ELSEIF((CMAKE_SYSTEM_NAME STREQUAL "Generic") AND (CMAKE_SYSTEM_PROCESSOR STREQU ELSE() MESSAGE(FATAL_ERROR "Unknown Platform and processor combination ${CMAKE_SYSTEM_NAME} and ${CMAKE_SYSTEM_PROCESSOR}!!") ENDIF() @@ -28,5 +28,5 @@ index c6cde8c..2652858 100644 +################################################################################ +INSTALL(DIRECTORY ${STACK_INCLUDE_DIR}/oplk DESTINATION "include") -- -2.5.5 +2.8.1 diff --git a/bsp/buildroot/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch b/bsp/buildroot/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch index 267c807b..9cbf02d2 100644 --- a/bsp/buildroot/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch +++ b/bsp/buildroot/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch @@ -1,4 +1,4 @@ -From 1b92df6f8283e15b6877f7cd70063648727fc88b Mon Sep 17 00:00:00 2001 +From 7f81c74726aec4aef6bd93ee644200ab34375437 Mon Sep 17 00:00:00 2001 From: Romain Naour Date: Wed, 25 May 2016 15:59:20 +0200 Subject: [PATCH] Add top level CMakeLists.txt @@ -83,10 +83,10 @@ index 0000000..28d4e7a + ADD_SUBDIRECTORY("apps/demo_mn_qt") +ENDIF (CFG_DEMO_MN_QT) diff --git a/apps/common/cmake/findoplklib.cmake b/apps/common/cmake/findoplklib.cmake -index aa427a6..e6a802e 100644 +index f7e710f..b8b04c5 100644 --- a/apps/common/cmake/findoplklib.cmake +++ b/apps/common/cmake/findoplklib.cmake -@@ -89,36 +89,42 @@ MACRO(FIND_OPLK_LIBRARY OPLK_NODE_TYPE) +@@ -85,36 +85,42 @@ MACRO(FIND_OPLK_LIBRARY OPLK_NODE_TYPE) # Set oplk library directory SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR}) @@ -174,7 +174,7 @@ index 49aab66..d9fd418 100644 TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB}) ENDIF() diff --git a/drivers/linux/drv_daemon_pcap/CMakeLists.txt b/drivers/linux/drv_daemon_pcap/CMakeLists.txt -index 2702abd..81bb598 100644 +index 1ef9353..e720834 100644 --- a/drivers/linux/drv_daemon_pcap/CMakeLists.txt +++ b/drivers/linux/drv_daemon_pcap/CMakeLists.txt @@ -104,9 +104,15 @@ ENDIF() @@ -197,5 +197,5 @@ index 2702abd..81bb598 100644 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -std=c99 -pthread -fno-strict-aliasing") -- -2.5.5 +2.8.1 diff --git a/bsp/buildroot/package/openpowerlink/0004-FIX-Veth-Fix-compilation-on-Linux-kernels-4.7.patch b/bsp/buildroot/package/openpowerlink/0004-FIX-Veth-Fix-compilation-on-Linux-kernels-4.7.patch new file mode 100644 index 00000000..d246f466 --- /dev/null +++ b/bsp/buildroot/package/openpowerlink/0004-FIX-Veth-Fix-compilation-on-Linux-kernels-4.7.patch @@ -0,0 +1,35 @@ +From 041799c4990d56b9822ee3ae3ffbb181e5c16c81 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 3 Nov 2016 21:09:57 +0100 +Subject: [PATCH] [FIX] Veth: Fix compilation on Linux kernels >= 4.7 + +dev->trans_start was replaced by netif_trans_update helper in kernel +4.7 by commit 860e9538a9482bb84589f7d0718a7e6d0a944d58. + +Upstream status: Pending +https://github.com/OpenAutomationTechnologies/openPOWERLINK_V2/pull/177 + +Signed-off-by: Romain Naour +--- + stack/src/kernel/veth/veth-linuxkernel.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/stack/src/kernel/veth/veth-linuxkernel.c b/stack/src/kernel/veth/veth-linuxkernel.c +index 8c68c47..ecdc000 100644 +--- a/stack/src/kernel/veth/veth-linuxkernel.c ++++ b/stack/src/kernel/veth/veth-linuxkernel.c +@@ -287,7 +287,11 @@ static int vethStartXmit(struct sk_buff* pSkb_p, struct net_device* pNetDevice_p + struct net_device_stats* pStats = netdev_priv(pNetDevice_p); + + //save time stamp ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)) + pNetDevice_p->trans_start = jiffies; ++#else ++ netif_trans_update(pNetDevice_p); ++#endif + + frameInfo.frame.pBuffer = (tPlkFrame*)pSkb_p->data; + frameInfo.frameSize = pSkb_p->len; +-- +2.5.5 + diff --git a/bsp/buildroot/package/openpowerlink/Config.in b/bsp/buildroot/package/openpowerlink/Config.in index 0b68ca83..d5e97643 100644 --- a/bsp/buildroot/package/openpowerlink/Config.in +++ b/bsp/buildroot/package/openpowerlink/Config.in @@ -87,11 +87,11 @@ endchoice if BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB -choice - prompt "select Ethernet Powerlink Driver" +menu "Ethernet drivers" config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_82573 bool "Intel 82573" + default y config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_8255x bool "Intel 8255x" @@ -105,7 +105,7 @@ config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8111 config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8139 bool "Realtek RTL-8139" -endchoice +endmenu endif # BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB diff --git a/bsp/buildroot/package/openpowerlink/openpowerlink.hash b/bsp/buildroot/package/openpowerlink/openpowerlink.hash index a6026cb3..f9c94f90 100644 --- a/bsp/buildroot/package/openpowerlink/openpowerlink.hash +++ b/bsp/buildroot/package/openpowerlink/openpowerlink.hash @@ -1,5 +1,5 @@ -# From http://sourceforge.net/projects/openpowerlink/files/openPOWERLINK/V2.4.1/ -md5 13389a419f3727b9c5f07b1b412eff30 openPOWERLINK_V2.4.1.tar.gz -sha1 eb3883f1771d665d1f948fc35e57bb97dd5c7ca5 openPOWERLINK_V2.4.1.tar.gz +# From http://sourceforge.net/projects/openpowerlink/files/openPOWERLINK/V2.5.0/ +md5 929b778a6a4d448d502da5a428322949 openPOWERLINK_V2.5.0.tar.gz +sha1 28e2e5621550421e74ba94738f6c12eb8c279fce openPOWERLINK_V2.5.0.tar.gz # sha256 locally computed -sha256 f627fb8efcb5d9b1b9d8e7701ad611d44d05ad046b1b62ea0f71bd8244d5bf49 openPOWERLINK_V2.4.1.tar.gz +sha256 1cb8c44626dbb7f224520667e437b4b430a32699560914f379679b6c58c1309c openPOWERLINK_V2.5.0.tar.gz diff --git a/bsp/buildroot/package/openpowerlink/openpowerlink.mk b/bsp/buildroot/package/openpowerlink/openpowerlink.mk index 5b1b1750..dcb548cc 100644 --- a/bsp/buildroot/package/openpowerlink/openpowerlink.mk +++ b/bsp/buildroot/package/openpowerlink/openpowerlink.mk @@ -4,7 +4,7 @@ # ################################################################################ -OPENPOWERLINK_VERSION = V2.4.1 +OPENPOWERLINK_VERSION = V2.5.0 OPENPOWERLINK_SITE = http://downloads.sourceforge.net/project/openpowerlink/openPOWERLINK/$(OPENPOWERLINK_VERSION) OPENPOWERLINK_SOURCE = openPOWERLINK_$(OPENPOWERLINK_VERSION).tar.gz OPENPOWERLINK_LICENSE = BSD-2c, GPLv2 @@ -21,7 +21,12 @@ OPENPOWERLINK_CN_ONOFF = $(if $(BR2_PACKAGE_OPENPOWERLINK_CN),ON,OFF) #### OPLK LIBRARY #### # Always build a oplk stack -OPENPOWERLINK_CONF_OPTS += -DCFG_OPLK_LIB=ON +# Disable library with simulation interface +# Disable zynq/FPGA (PCIe) interface +OPENPOWERLINK_CONF_OPTS += -DCFG_OPLK_LIB=ON \ + -DCFG_COMPILE_LIB_MN_SIM=OFF \ + -DCFG_COMPILE_LIB_CN_SIM=OFF \ + -DCFG_COMPILE_LIB_MNAPP_ZYNQINTF=OFF # All option are ON by default ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB),y) @@ -89,18 +94,12 @@ OPENPOWERLINK_CONF_OPTS += \ endif ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y) -OPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_DRIVERS=ON -ifeq ($(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_82573),y) -OPENPOWERLINK_CONF_OPTS += -DCFG_POWERLINK_EDRV=82573 -else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_8255x),y) -OPENPOWERLINK_CONF_OPTS += -DCFG_POWERLINK_EDRV=8255x -else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_I210),y) -OPENPOWERLINK_CONF_OPTS += -DCFG_POWERLINK_EDRV=i210 -else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8111),y) -OPENPOWERLINK_CONF_OPTS += -DCFG_POWERLINK_EDRV=8111 -else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8139),y) -OPENPOWERLINK_CONF_OPTS += -DCFG_POWERLINK_EDRV=8139 -endif +OPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_DRIVERS=ON \ + -DCFG_POWERLINK_EDRV_82573=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_82573),ON,OFF) \ + -DCFG_POWERLINK_EDRV_8255X=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_8255x),ON,OFF) \ + -DCFG_POWERLINK_EDRV_I210=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_I210),ON,OFF) \ + -DCFG_POWERLINK_EDRV_8111=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8111),ON,OFF) \ + -DCFG_POWERLINK_EDRV_8139=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8139),ON,OFF) else OPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_DRIVERS=OFF endif diff --git a/bsp/buildroot/package/openssh/S50sshd b/bsp/buildroot/package/openssh/S50sshd index c1511425..22da41d1 100644 --- a/bsp/buildroot/package/openssh/S50sshd +++ b/bsp/buildroot/package/openssh/S50sshd @@ -6,12 +6,12 @@ # Make sure the ssh-keygen progam exists [ -f /usr/bin/ssh-keygen ] || exit 0 -# Create any missing keys -/usr/bin/ssh-keygen -A - umask 077 start() { + # Create any missing keys + /usr/bin/ssh-keygen -A + printf "Starting sshd: " /usr/sbin/sshd touch /var/lock/sshd diff --git a/bsp/buildroot/package/openssh/openssh.hash b/bsp/buildroot/package/openssh/openssh.hash index 9a5ffd60..09010d3b 100644 --- a/bsp/buildroot/package/openssh/openssh.hash +++ b/bsp/buildroot/package/openssh/openssh.hash @@ -1,3 +1,3 @@ # Locally calculated after checking pgp signature -# Also from http://www.openssh.com/txt/release-7.3 -sha256 3ffb989a6dcaa69594c3b550d4855a5a2e1718ccdde7f5e36387b424220fbecc openssh-7.3p1.tar.gz +# Also from http://www.openssh.com/txt/release-7.4 +sha256 1b1fc4a14e2024293181924ed24872e6f2e06293f3e8926a376b8aec481f19d1 openssh-7.4p1.tar.gz diff --git a/bsp/buildroot/package/openssh/openssh.mk b/bsp/buildroot/package/openssh/openssh.mk index ce855136..ce37ee7f 100644 --- a/bsp/buildroot/package/openssh/openssh.mk +++ b/bsp/buildroot/package/openssh/openssh.mk @@ -4,9 +4,9 @@ # ################################################################################ -OPENSSH_VERSION = 7.3p1 +OPENSSH_VERSION = 7.4p1 OPENSSH_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable -OPENSSH_LICENSE = BSD-3c BSD-2c Public Domain +OPENSSH_LICENSE = BSD-3c, BSD-2c, Public Domain OPENSSH_LICENSE_FILES = LICENCE OPENSSH_CONF_ENV = LD="$(TARGET_CC)" LDFLAGS="$(TARGET_CFLAGS)" OPENSSH_CONF_OPTS = \ diff --git a/bsp/buildroot/package/openssl/openssl.hash b/bsp/buildroot/package/openssl/openssl.hash index edbce8e2..064eeca6 100644 --- a/bsp/buildroot/package/openssl/openssl.hash +++ b/bsp/buildroot/package/openssl/openssl.hash @@ -1,5 +1,5 @@ -# From https://www.openssl.org/source/openssl-1.0.2h.tar.gz.sha256 -sha256 1d4007e53aad94a5b2002fe045ee7bb0b3d98f1a47f8b2bc851dcd1c74332919 openssl-1.0.2h.tar.gz +# From https://www.openssl.org/source/openssl-1.0.2k.tar.gz.sha256 +sha256 6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0 openssl-1.0.2k.tar.gz # Locally computed sha256 eddd8a5123748052c598214487ac178e4bfa4e31ba2ec520c70d59c8c5bfa2e9 openssl-1.0.2a-parallel-install-dirs.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d sha256 147c3eeaad614c044749ea527cb433eae5e2d5cad34a78c6ba61cd967bfbe01f openssl-1.0.2a-parallel-obj-headers.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d diff --git a/bsp/buildroot/package/openssl/openssl.mk b/bsp/buildroot/package/openssl/openssl.mk index b926fe30..1536982f 100644 --- a/bsp/buildroot/package/openssl/openssl.mk +++ b/bsp/buildroot/package/openssl/openssl.mk @@ -4,7 +4,7 @@ # ################################################################################ -OPENSSL_VERSION = 1.0.2h +OPENSSL_VERSION = 1.0.2k OPENSSL_SITE = http://www.openssl.org/source OPENSSL_LICENSE = OpenSSL or SSLeay OPENSSL_LICENSE_FILES = LICENSE @@ -28,14 +28,9 @@ ifeq ($(BR2_USE_MMU),) OPENSSL_CFLAGS += -DHAVE_FORK=0 endif -ifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y) +ifeq ($(BR2_PACKAGE_HAS_CRYPTODEV),y) OPENSSL_CFLAGS += -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS -OPENSSL_DEPENDENCIES += cryptodev-linux -endif - -ifeq ($(BR2_PACKAGE_OCF_LINUX),y) -OPENSSL_CFLAGS += -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS -OPENSSL_DEPENDENCIES += ocf-linux +OPENSSL_DEPENDENCIES += cryptodev endif # Some architectures are optimized in OpenSSL @@ -107,23 +102,23 @@ OPENSSL_POST_CONFIGURE_HOOKS += OPENSSL_FIXUP_STATIC_MAKEFILE endif define HOST_OPENSSL_BUILD_CMDS - $(MAKE) -C $(@D) + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) endef define OPENSSL_BUILD_CMDS - $(MAKE) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) endef define OPENSSL_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D) INSTALL_PREFIX=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_PREFIX=$(STAGING_DIR) install endef define HOST_OPENSSL_INSTALL_CMDS - $(MAKE) -C $(@D) install + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install endef define OPENSSL_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) INSTALL_PREFIX=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_PREFIX=$(TARGET_DIR) install rm -rf $(TARGET_DIR)/usr/lib/ssl rm -f $(TARGET_DIR)/usr/bin/c_rehash endef diff --git a/bsp/buildroot/package/openswan/0001-uClibc-ng-is-compatible-to-glibc.patch b/bsp/buildroot/package/openswan/0001-uClibc-ng-is-compatible-to-glibc.patch new file mode 100644 index 00000000..aa4d0ede --- /dev/null +++ b/bsp/buildroot/package/openswan/0001-uClibc-ng-is-compatible-to-glibc.patch @@ -0,0 +1,39 @@ +From 0f7bf4706d2932aaa50904fc529a853c9f86478f Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Mon, 13 Feb 2017 22:18:11 +0100 +Subject: [PATCH] uClibc-ng is compatible to glibc + +Signed-off-by: Waldemar Brodkorb + +Pull-Request: https://github.com/xelerance/Openswan/pull/227 + +--- + linux/include/openswan.h | 12 ------------ + 1 file changed, 12 deletions(-) + +diff --git a/linux/include/openswan.h b/linux/include/openswan.h +index e2c45a130..66b9d42b2 100644 +--- a/linux/include/openswan.h ++++ b/linux/include/openswan.h +@@ -27,18 +27,6 @@ + #endif + + /* +- * When using uclibc, malloc(0) returns NULL instead of success. This is +- * to make it use the inbuilt work-around. +- * See: http://osdir.com/ml/network.freeswan.devel/2003-11/msg00009.html +- */ +-#ifdef __UCLIBC__ +-# if !defined(__MALLOC_GLIBC_COMPAT__) && !defined(MALLOC_GLIBC_COMPAT) +-# warning Please compile uclibc with GLIBC_COMPATIBILITY defined +-# endif +-#endif +- +- +-/* + * We've just got to have some datatypes defined... And annoyingly, just + * where we get them depends on whether we're in userland or not. + */ +-- +2.11.1 + diff --git a/bsp/buildroot/package/openswan/Config.in b/bsp/buildroot/package/openswan/Config.in index ba5d53df..5db665c6 100644 --- a/bsp/buildroot/package/openswan/Config.in +++ b/bsp/buildroot/package/openswan/Config.in @@ -10,7 +10,7 @@ config BR2_PACKAGE_OPENSWAN http://www.openswan.org -comment "openswan needs a uClibc or glibc toolchain toolchain w/ headers >= 3.0" +comment "openswan needs a uClibc or glibc toolchain w/ headers >= 3.0" depends on BR2_USE_MMU depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 || \ BR2_TOOLCHAIN_USES_MUSL diff --git a/bsp/buildroot/package/opentyrian/opentyrian.mk b/bsp/buildroot/package/opentyrian/opentyrian.mk index b74e4cf3..6efbe4ee 100644 --- a/bsp/buildroot/package/opentyrian/opentyrian.mk +++ b/bsp/buildroot/package/opentyrian/opentyrian.mk @@ -20,7 +20,7 @@ OPENTYRIAN_NETWORK = false endif define OPENTYRIAN_BUILD_CMDS - $(MAKE) PLATFORM=UNIX \ + $(TARGET_MAKE_ENV) $(MAKE) PLATFORM=UNIX \ CC="$(TARGET_CC)" \ STRIP="/bin/true" \ SDL_CONFIG="$(STAGING_DIR)/usr/bin/sdl-config" \ diff --git a/bsp/buildroot/package/openvmtools/openvmtools.hash b/bsp/buildroot/package/openvmtools/openvmtools.hash index ae283778..bf344e50 100644 --- a/bsp/buildroot/package/openvmtools/openvmtools.hash +++ b/bsp/buildroot/package/openvmtools/openvmtools.hash @@ -1,2 +1,2 @@ # locally computed -sha256 6b415f6093a15ffce10d3c4b69aa7ff106bdc0efd88e18a70a59d6941d4d2379 openvmtools-stable-9.10.2.tar.gz +sha256 ff384ab0c11e19db0fd6ddab60e8ae48a4591b141fb3a8e8f1d4e1a489dd293f openvmtools-5a9033ddfa95786d867e4d02bbb9a29bac8fb64f.tar.gz diff --git a/bsp/buildroot/package/openvmtools/openvmtools.mk b/bsp/buildroot/package/openvmtools/openvmtools.mk index 40a7dac0..d3eda5c0 100644 --- a/bsp/buildroot/package/openvmtools/openvmtools.mk +++ b/bsp/buildroot/package/openvmtools/openvmtools.mk @@ -4,11 +4,12 @@ # ################################################################################ -OPENVMTOOLS_VERSION = stable-9.10.2 +OPENVMTOOLS_VERSION = 5a9033ddfa95786d867e4d02bbb9a29bac8fb64f OPENVMTOOLS_SITE = $(call github,vmware,open-vm-tools,$(OPENVMTOOLS_VERSION)) OPENVMTOOLS_SUBDIR = open-vm-tools OPENVMTOOLS_LICENSE = LGPLv2.1 OPENVMTOOLS_LICENSE_FILES = $(OPENVMTOOLS_SUBDIR)/COPYING + # Autoreconf needed or config/missing will run configure again at buildtime OPENVMTOOLS_AUTORECONF = YES OPENVMTOOLS_CONF_OPTS = --with-dnet \ @@ -45,13 +46,6 @@ else OPENVMTOOLS_CONF_OPTS += --without-pam endif -# configure needs execution permission -define OPENVMTOOLS_PRE_CONFIGURE_CHMOD - chmod 0755 $(@D)/$(OPENVMTOOLS_SUBDIR)/configure -endef - -OPENVMTOOLS_PRE_CONFIGURE_HOOKS += OPENVMTOOLS_PRE_CONFIGURE_CHMOD - # symlink needed by lib/system/systemLinux.c (or will cry in /var/log/messages) # defined in lib/misc/hostinfoPosix.c # /sbin/shutdown needed for Guest OS restart/shutdown from hypervisor diff --git a/bsp/buildroot/package/openvpn/Config.in b/bsp/buildroot/package/openvpn/Config.in index 8ba4ea19..5fa191d9 100644 --- a/bsp/buildroot/package/openvpn/Config.in +++ b/bsp/buildroot/package/openvpn/Config.in @@ -28,10 +28,4 @@ config BR2_PACKAGE_OPENVPN_SMALL You loose eurephia, debugging info, help messages and more. It saves around 100 KiB in binary file size. -config BR2_PACKAGE_OPENVPN_PWSAVE - bool "Allow passwords in files" - help - Allow --askpass and --auth-user-pass passwords to be read - from a file. - endif diff --git a/bsp/buildroot/package/openvpn/openvpn.hash b/bsp/buildroot/package/openvpn/openvpn.hash index 179198e5..600c2507 100644 --- a/bsp/buildroot/package/openvpn/openvpn.hash +++ b/bsp/buildroot/package/openvpn/openvpn.hash @@ -1,2 +1,2 @@ -# Locally calculated after checking pgp signature -sha256 0f5f1ca1dc5743fa166d93dd4ec952f014b5f33bafd88f0ea34b455cae1434a7 openvpn-2.3.11.tar.xz +# Locally calculated +sha256 6f23ba49a1dbeb658f49c7ae17d9ea979de6d92c7357de3d55cd4525e1b2f87e openvpn-2.4.0.tar.xz diff --git a/bsp/buildroot/package/openvpn/openvpn.mk b/bsp/buildroot/package/openvpn/openvpn.mk index f3985cd2..5e3df59f 100644 --- a/bsp/buildroot/package/openvpn/openvpn.mk +++ b/bsp/buildroot/package/openvpn/openvpn.mk @@ -4,7 +4,7 @@ # ################################################################################ -OPENVPN_VERSION = 2.3.11 +OPENVPN_VERSION = 2.4.0 OPENVPN_SOURCE = openvpn-$(OPENVPN_VERSION).tar.xz OPENVPN_SITE = http://swupdate.openvpn.net/community/releases OPENVPN_DEPENDENCIES = host-pkgconf openssl @@ -42,12 +42,6 @@ else OPENVPN_CONF_OPTS += --disable-lzo endif -ifeq ($(BR2_PACKAGE_OPENVPN_PWSAVE),y) -OPENVPN_CONF_OPTS += --enable-password-save -else -OPENVPN_CONF_OPTS += --disable-password-save -endif - define OPENVPN_INSTALL_TARGET_CMDS $(INSTALL) -m 755 $(@D)/src/openvpn/openvpn \ $(TARGET_DIR)/usr/sbin/openvpn diff --git a/bsp/buildroot/package/openzwave/openzwave.hash b/bsp/buildroot/package/openzwave/openzwave.hash index bab940ef..d07961ed 100644 --- a/bsp/buildroot/package/openzwave/openzwave.hash +++ b/bsp/buildroot/package/openzwave/openzwave.hash @@ -1,2 +1,3 @@ # Locally computed: -sha256 ca122365f6237dc245be0129eb460e78126976b9c7bd06487795d3acfc9f2a5f openzwave-v1.4.tar.gz +sha256 abfb4c7e7728e86ba374c2e0ef7de912594eb24a8c44935457352df844530238 openzwave-V1.5.tar.gz +sha256 98851964fd8de3dd40f00d0032b47c61c17a4cf789ad5792e14149da5ab8755e 599e2a11c6f48dde744012ec45686c08e15f3059.patch diff --git a/bsp/buildroot/package/openzwave/openzwave.mk b/bsp/buildroot/package/openzwave/openzwave.mk index c8892a90..199d9e1b 100644 --- a/bsp/buildroot/package/openzwave/openzwave.mk +++ b/bsp/buildroot/package/openzwave/openzwave.mk @@ -4,7 +4,7 @@ # ################################################################################ -OPENZWAVE_VERSION = v1.4 +OPENZWAVE_VERSION = V1.5 OPENZWAVE_SITE = $(call github,OpenZWave,open-zwave,$(OPENZWAVE_VERSION)) OPENZWAVE_LICENSE = LGPLv3+, GPLv3 (examples), Apache-2.0 (sh2ju.sh) OPENZWAVE_LICENSE_FILES = license/license.txt license/lgpl.txt \ @@ -13,6 +13,12 @@ OPENZWAVE_LICENSE_FILES = license/license.txt license/lgpl.txt \ OPENZWAVE_DEPENDENCIES = host-pkgconf udev OPENZWAVE_INSTALL_STAGING = YES +# This patch fixes incorrect default value of LIBDIR: +# http://autobuild.buildroot.net/results/68719fdf1320a69310bada6d3c47654dacdb5898 +# This patch is currently in dev branch and will be a part of v1.6 +OPENZWAVE_PATCH = \ + https://github.com/OpenZWave/open-zwave/commit/599e2a11c6f48dde744012ec45686c08e15f3059.patch + # Set instlibdir to install libopenzwave.so* in the correct directory # otherwise openzwave will check that /lib64 exists (on the host) to # know if the library should be installed in $(PREFIX)/lib or $(PREFIX)/lib64. diff --git a/bsp/buildroot/package/opkg-utils/Config.in.host b/bsp/buildroot/package/opkg-utils/Config.in.host new file mode 100644 index 00000000..1c9c474a --- /dev/null +++ b/bsp/buildroot/package/opkg-utils/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_OPKG_UTILS + bool "host opkg-utils" + help + Helper scripts for use with the opkg package manager. + + https://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/ diff --git a/bsp/buildroot/package/opkg-utils/opkg-utils.hash b/bsp/buildroot/package/opkg-utils/opkg-utils.hash new file mode 100644 index 00000000..332823f2 --- /dev/null +++ b/bsp/buildroot/package/opkg-utils/opkg-utils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c14284d999cdd18fee4c6b22720f38beee962b2c8e099166d8d55d76a2111beb opkg-utils-0.3.4.tar.gz diff --git a/bsp/buildroot/package/opkg-utils/opkg-utils.mk b/bsp/buildroot/package/opkg-utils/opkg-utils.mk new file mode 100644 index 00000000..aa3c44d9 --- /dev/null +++ b/bsp/buildroot/package/opkg-utils/opkg-utils.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# opkg-utils +# +################################################################################ + +OPKG_UTILS_VERSION = 0.3.4 +OPKG_UTILS_SITE = http://git.yoctoproject.org/git/opkg-utils +OPKG_UTILS_SITE_METHOD = git +OPKG_UTILS_LICENSE = GPLv2+ +OPKG_UTILS_LICENSE_FILES = COPYING + +define HOST_OPKG_UTILS_BUILD_CMDS + $(MAKE) -C $(@D) $(HOST_CONFIGURE_OPTS) +endef + +define HOST_OPKG_UTILS_INSTALL_CMDS + $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) PREFIX=/usr install +endef + +$(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/oprofile/0002-Fix-FTBFS-problem-with-GCC-6.patch b/bsp/buildroot/package/oprofile/0002-Fix-FTBFS-problem-with-GCC-6.patch new file mode 100644 index 00000000..34bf3652 --- /dev/null +++ b/bsp/buildroot/package/oprofile/0002-Fix-FTBFS-problem-with-GCC-6.patch @@ -0,0 +1,51 @@ +From 39d4d46a0bd504ac708ffe72df87bf74cd12ad30 Mon Sep 17 00:00:00 2001 +From: William Cohen +Date: Fri, 5 Feb 2016 17:30:19 -0500 +Subject: [PATCH] Fix FTBFS problem with GCC-6 + +GCC-6 is pickier about some of the type conversions causing the Fedora +24 mass rebuild the build of oprofile failed with: + +make[3]: Entering directory '/builddir/build/BUILD/oprofile-1.1.0/libutil++' +g++ -DHAVE_CONFIG_H -I. -I.. -I ../libutil -I ../libop -I ../libpp -W -Wall -fno-common -ftemplate-depth-50 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -c -o op_bfd.o op_bfd.cpp +op_bfd.cpp: In member function 'void op_bfd::get_symbol_range(symbol_index_t, long long unsigned int&, long long unsigned int&) const': +op_bfd.cpp:538:47: error: cannot convert 'std::ostream {aka std::basic_ostream}' to 'const bool' in initialization + bool const verbose = cverb << (vbfd & vlevel1); + ^ +op_bfd.cpp:546:7: error: in argument to unary ! + if (!verbose) + ^~~~~~~ + +Avoid the intermediate bool type to make GCC-6 happy. + +Signed-off-by: William Cohen +[Backported from upstream] +Signed-off-by: Romain Naour +--- + libutil++/op_bfd.cpp | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/libutil++/op_bfd.cpp b/libutil++/op_bfd.cpp +index 389c920..f2eb42b 100644 +--- a/libutil++/op_bfd.cpp ++++ b/libutil++/op_bfd.cpp +@@ -535,15 +535,13 @@ void op_bfd::get_symbol_range(symbol_index_t sym_idx, + { + op_bfd_symbol const & sym = syms[sym_idx]; + +- bool const verbose = cverb << (vbfd & vlevel1); +- + if (anon_obj) + start = sym.vma(); + else + start = sym.filepos(); + end = start + sym.size(); + +- if (!verbose) ++ if (!(cverb << (vbfd & vlevel1))) + return; + + io_state state(cverb << (vbfd & vlevel1)); +-- +2.5.5 + diff --git a/bsp/buildroot/package/oprofile/Config.in b/bsp/buildroot/package/oprofile/Config.in index c75ccd90..e2adde58 100644 --- a/bsp/buildroot/package/oprofile/Config.in +++ b/bsp/buildroot/package/oprofile/Config.in @@ -8,17 +8,21 @@ config BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS BR2_powerpc64 || BR2_powerpc64le || BR2_sh || \ BR2_sparc || BR2_sparc64 || BR2_x86_64 +config BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4 + bool + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + config BR2_PACKAGE_OPROFILE bool "oprofile" depends on BR2_USE_MMU # fork() select BR2_PACKAGE_POPT select BR2_PACKAGE_BINUTILS - select BR2_PACKAGE_LIBPFM4 if BR2_powerpc + select BR2_PACKAGE_LIBPFM4 if BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4 depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_WCHAR # binutils depends on BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS # libpfm4 is needed on PowerPC, and requires thread support - depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_powerpc + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4 help OProfile is a system-wide profiler for Linux systems, capable of profiling all running code at low overhead. @@ -40,6 +44,6 @@ comment "oprofile needs a toolchain w/ C++, wchar" depends on BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR -comment "oprofile needs a toolchain w/ NPTL on PPC" - depends on BR2_USE_MMU && BR2_powerpc +comment "oprofile needs a toolchain w/ NPTL on PowerPC(64)" + depends on BR2_USE_MMU && BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4 depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/bsp/buildroot/package/oprofile/oprofile.mk b/bsp/buildroot/package/oprofile/oprofile.mk index d91ddab7..f6c0f130 100644 --- a/bsp/buildroot/package/oprofile/oprofile.mk +++ b/bsp/buildroot/package/oprofile/oprofile.mk @@ -17,7 +17,7 @@ OPROFILE_BINARIES = \ utils/ophelp pp/opannotate pp/oparchive pp/opgprof \ pp/opreport opjitconv/opjitconv \ utils/op-check-perfevents libabi/opimport \ - pe_counting/ocount + pe_counting/ocount pe_profiling/operf ifeq ($(BR2_i386),y) OPROFILE_ARCH = i386 diff --git a/bsp/buildroot/package/opus/opus.hash b/bsp/buildroot/package/opus/opus.hash index 1d483987..7349ec4b 100644 --- a/bsp/buildroot/package/opus/opus.hash +++ b/bsp/buildroot/package/opus/opus.hash @@ -1,2 +1,2 @@ # From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt -sha256 0e290078e31211baa7b5886bcc8ab6bc048b9fc83882532da4a1a45e58e907fd opus-1.1.2.tar.gz +sha256 9122b6b380081dd2665189f97bfd777f04f92dc3ab6698eea1dbb27ad59d8692 opus-1.1.4.tar.gz diff --git a/bsp/buildroot/package/opus/opus.mk b/bsp/buildroot/package/opus/opus.mk index 71fdcb3f..020be88b 100644 --- a/bsp/buildroot/package/opus/opus.mk +++ b/bsp/buildroot/package/opus/opus.mk @@ -4,7 +4,7 @@ # ################################################################################ -OPUS_VERSION = 1.1.2 +OPUS_VERSION = 1.1.4 OPUS_SITE = http://downloads.xiph.org/releases/opus OPUS_LICENSE = BSD-3c OPUS_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/mysql/0000-ac_cache_check.patch b/bsp/buildroot/package/oracle-mysql/0000-ac_cache_check.patch similarity index 100% rename from bsp/buildroot/package/mysql/0000-ac_cache_check.patch rename to bsp/buildroot/package/oracle-mysql/0000-ac_cache_check.patch diff --git a/bsp/buildroot/package/mysql/0001-configure-ps-cache-check.patch b/bsp/buildroot/package/oracle-mysql/0001-configure-ps-cache-check.patch similarity index 100% rename from bsp/buildroot/package/mysql/0001-configure-ps-cache-check.patch rename to bsp/buildroot/package/oracle-mysql/0001-configure-ps-cache-check.patch diff --git a/bsp/buildroot/package/mysql/0002-use-new-readline-iface.patch b/bsp/buildroot/package/oracle-mysql/0002-use-new-readline-iface.patch similarity index 100% rename from bsp/buildroot/package/mysql/0002-use-new-readline-iface.patch rename to bsp/buildroot/package/oracle-mysql/0002-use-new-readline-iface.patch diff --git a/bsp/buildroot/package/mysql/0003-ac_stack_direction-is-unset.patch b/bsp/buildroot/package/oracle-mysql/0003-ac_stack_direction-is-unset.patch similarity index 100% rename from bsp/buildroot/package/mysql/0003-ac_stack_direction-is-unset.patch rename to bsp/buildroot/package/oracle-mysql/0003-ac_stack_direction-is-unset.patch diff --git a/bsp/buildroot/package/mysql/0004-Fix-gen_lex_hash-execution.patch b/bsp/buildroot/package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch similarity index 100% rename from bsp/buildroot/package/mysql/0004-Fix-gen_lex_hash-execution.patch rename to bsp/buildroot/package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch diff --git a/bsp/buildroot/package/mysql/0005-bison_3_breaks_mysql_server_build.patch b/bsp/buildroot/package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch similarity index 100% rename from bsp/buildroot/package/mysql/0005-bison_3_breaks_mysql_server_build.patch rename to bsp/buildroot/package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch diff --git a/bsp/buildroot/package/mysql/0006-no-force-static-build.patch b/bsp/buildroot/package/oracle-mysql/0006-no-force-static-build.patch similarity index 100% rename from bsp/buildroot/package/mysql/0006-no-force-static-build.patch rename to bsp/buildroot/package/oracle-mysql/0006-no-force-static-build.patch diff --git a/bsp/buildroot/package/mysql/0007-dont-install-in-mysql-directory.patch b/bsp/buildroot/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch similarity index 100% rename from bsp/buildroot/package/mysql/0007-dont-install-in-mysql-directory.patch rename to bsp/buildroot/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch diff --git a/bsp/buildroot/package/mysql/S97mysqld b/bsp/buildroot/package/oracle-mysql/S97mysqld similarity index 72% rename from bsp/buildroot/package/mysql/S97mysqld rename to bsp/buildroot/package/oracle-mysql/S97mysqld index 1d87e68d..110ca2cd 100644 --- a/bsp/buildroot/package/mysql/S97mysqld +++ b/bsp/buildroot/package/oracle-mysql/S97mysqld @@ -1,15 +1,20 @@ #!/bin/sh +MYSQL_DIR="/var/mysql" +MYSQL_USER="mysql" + +[ -r /etc/default/mysql ] && . /etc/default/mysql + case "$1" in start) - if [ ! -d /var/mysql/mysql ] ; then + if [ ! -d $MYSQL_DIR/mysql ] ; then echo "Creating MySQL system tables..." - mysql_install_db --user=mysql --ldata=/var/mysql + mysql_install_db --user=$MYSQL_USER --ldata=$MYSQL_DIR fi # mysqld runs as user mysql, but /run is only writable by root # so create a subdirectory for mysql. - install -d -o mysql -g root -m 0700 /run/mysql + install -d -o mysql -g root -m 0755 /run/mysql # We don't use start-stop-daemon because mysqld has # its own wrapper script. diff --git a/bsp/buildroot/package/mysql/mysqld.service b/bsp/buildroot/package/oracle-mysql/mysqld.service similarity index 79% rename from bsp/buildroot/package/mysql/mysqld.service rename to bsp/buildroot/package/oracle-mysql/mysqld.service index 2ded9c27..c9e5e42f 100644 --- a/bsp/buildroot/package/mysql/mysqld.service +++ b/bsp/buildroot/package/oracle-mysql/mysqld.service @@ -5,6 +5,9 @@ Description=MySQL database server ExecStartPre=/bin/sh -c 'test -d /var/mysql/mysql || mysql_install_db --user=mysql --ldata=/var/mysql' ExecStart=/usr/bin/mysqld_safe Restart=always +User=mysql +RuntimeDirectory=mysql +RuntimeDirectoryMode=0755 [Install] WantedBy=multi-user.target diff --git a/bsp/buildroot/package/mysql/mysql.hash b/bsp/buildroot/package/oracle-mysql/oracle-mysql.hash similarity index 55% rename from bsp/buildroot/package/mysql/mysql.hash rename to bsp/buildroot/package/oracle-mysql/oracle-mysql.hash index 84f33615..bc309ec9 100644 --- a/bsp/buildroot/package/mysql/mysql.hash +++ b/bsp/buildroot/package/oracle-mysql/oracle-mysql.hash @@ -1,2 +1,4 @@ # From https://downloads.mariadb.com/archives/mysql-5.1/mysql-5.1.73.tar.gz.md5 md5 887f869bcc757957067b9198f707f32f mysql-5.1.73.tar.gz +# Locally computed +sha256 05ebe21305408b24407d14b77607a3e5ffa3c300e03f1359d3066f301989dcb5 mysql-5.1.73.tar.gz diff --git a/bsp/buildroot/package/oracle-mysql/oracle-mysql.mk b/bsp/buildroot/package/oracle-mysql/oracle-mysql.mk new file mode 100644 index 00000000..f0f06496 --- /dev/null +++ b/bsp/buildroot/package/oracle-mysql/oracle-mysql.mk @@ -0,0 +1,136 @@ +################################################################################ +# +# oracle-mysql +# +################################################################################ + +ORACLE_MYSQL_VERSION_MAJOR = 5.1 +ORACLE_MYSQL_VERSION = $(ORACLE_MYSQL_VERSION_MAJOR).73 +ORACLE_MYSQL_SOURCE = mysql-$(ORACLE_MYSQL_VERSION).tar.gz +ORACLE_MYSQL_SITE = http://dev.mysql.com/get/Downloads/MySQL-$(ORACLE_MYSQL_VERSION_MAJOR) +ORACLE_MYSQL_INSTALL_STAGING = YES +ORACLE_MYSQL_DEPENDENCIES = readline ncurses +ORACLE_MYSQL_AUTORECONF = YES +ORACLE_MYSQL_LICENSE = GPLv2 +ORACLE_MYSQL_LICENSE_FILES = README COPYING +ORACLE_MYSQL_PROVIDES = mysql + +# Unix socket. This variable can also be consulted by other buildroot packages +MYSQL_SOCKET = /run/mysql/mysql.sock + +ORACLE_MYSQL_CONF_ENV = \ + ac_cv_sys_restartable_syscalls=yes \ + ac_cv_path_PS=/bin/ps \ + ac_cv_FIND_PROC="/bin/ps p \$\$PID | grep -v grep | grep mysqld > /dev/null" \ + ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes \ + ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no \ + ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes \ + mysql_cv_new_rl_interface=yes + +ORACLE_MYSQL_CONF_OPTS = \ + --without-ndb-binlog \ + --without-docs \ + --without-man \ + --without-libedit \ + --without-readline \ + --with-low-memory \ + --enable-thread-safe-client \ + --with-unix-socket-path=$(MYSQL_SOCKET) \ + --disable-mysql-maintainer-mode + +# host-oracle-mysql only installs what is needed to build mysql, i.e. the +# gen_lex_hash tool, and it only builds the parts that are needed to +# create this tool +HOST_ORACLE_MYSQL_DEPENDENCIES = host-zlib host-ncurses + +HOST_ORACLE_MYSQL_CONF_OPTS = \ + --with-embedded-server \ + --disable-mysql-maintainer-mode + +define HOST_ORACLE_MYSQL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/include my_config.h + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/mysys libmysys.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/strings libmystrings.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/vio libvio.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/dbug libdbug.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/regex libregex.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sql gen_lex_hash +endef + +define HOST_ORACLE_MYSQL_INSTALL_CMDS + $(INSTALL) -m 0755 $(@D)/sql/gen_lex_hash $(HOST_DIR)/usr/bin/ +endef + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ORACLE_MYSQL_DEPENDENCIES += openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ORACLE_MYSQL_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_ORACLE_MYSQL_SERVER),y) +ORACLE_MYSQL_DEPENDENCIES += host-oracle-mysql host-bison + +ORACLE_MYSQL_CONF_OPTS += \ + --localstatedir=/var/mysql \ + --with-atomic-ops=up \ + --with-embedded-server \ + --without-query-cache \ + --without-plugin-partition \ + --without-plugin-daemon_example \ + --without-plugin-ftexample \ + --without-plugin-archive \ + --without-plugin-blackhole \ + --without-plugin-example \ + --without-plugin-federated \ + --without-plugin-ibmdb2i \ + --without-plugin-innobase \ + --without-plugin-innodb_plugin \ + --without-plugin-ndbcluster + +# Debugging is only available for the server, so no need for +# this if-block outside of the server if-block +ifeq ($(BR2_ENABLE_DEBUG),y) +ORACLE_MYSQL_CONF_OPTS += --with-debug=full +else +ORACLE_MYSQL_CONF_OPTS += --without-debug +endif + +define ORACLE_MYSQL_USERS + mysql -1 nogroup -1 * /var/mysql - - MySQL daemon +endef + +define ORACLE_MYSQL_ADD_FOLDER + $(INSTALL) -d $(TARGET_DIR)/var/mysql +endef + +ORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_ADD_FOLDER + +define ORACLE_MYSQL_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(ORACLE_MYSQL_PKGDIR)/S97mysqld \ + $(TARGET_DIR)/etc/init.d/S97mysqld +endef + +define ORACLE_MYSQL_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(ORACLE_MYSQL_PKGDIR)/mysqld.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mysqld.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/mysqld.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service +endef + +else +ORACLE_MYSQL_CONF_OPTS += \ + --without-server +endif + + +define ORACLE_MYSQL_REMOVE_TEST_PROGS + rm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench +endef + +ORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_REMOVE_TEST_PROGS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/bsp/buildroot/package/orc/orc.hash b/bsp/buildroot/package/orc/orc.hash index 178d3741..200467cf 100644 --- a/bsp/buildroot/package/orc/orc.hash +++ b/bsp/buildroot/package/orc/orc.hash @@ -1,2 +1,2 @@ -# From https://lists.freedesktop.org/archives/gstreamer-devel/2016-March/057056.html -sha256 c1b1d54a58f26d483f0b3881538984789fe5d5460ab8fab74a1cacbd3d1c53d1 orc-0.4.25.tar.xz +# From https://lists.freedesktop.org/archives/gstreamer-devel/2016-August/060159.html +sha256 7d52fa80ef84988359c3434e1eea302d077a08987abdde6905678ebcad4fa649 orc-0.4.26.tar.xz diff --git a/bsp/buildroot/package/orc/orc.mk b/bsp/buildroot/package/orc/orc.mk index 5a49cbae..4456f531 100644 --- a/bsp/buildroot/package/orc/orc.mk +++ b/bsp/buildroot/package/orc/orc.mk @@ -4,7 +4,7 @@ # ################################################################################ -ORC_VERSION = 0.4.25 +ORC_VERSION = 0.4.26 ORC_SOURCE = orc-$(ORC_VERSION).tar.xz ORC_SITE = http://gstreamer.freedesktop.org/data/src/orc ORC_LICENSE = BSD-2c, BSD-3c diff --git a/bsp/buildroot/package/ortp/Config.in b/bsp/buildroot/package/ortp/Config.in index 2de3c91f..788eaf4b 100644 --- a/bsp/buildroot/package/ortp/Config.in +++ b/bsp/buildroot/package/ortp/Config.in @@ -1,10 +1,12 @@ config BR2_PACKAGE_ORTP bool "oRTP" + depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_BCTOOLBOX help oRTP, a Real-time Transport Protocol (RTP,RFC3550) library http://www.linphone.org/eng/documentation/dev/ortp.html -comment "ortp needs a toolchain w/ threads" - depends on !BR2_TOOLCHAIN_HAS_THREADS +comment "ortp needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/ortp/ortp.hash b/bsp/buildroot/package/ortp/ortp.hash index 8b099a70..c990d96e 100644 --- a/bsp/buildroot/package/ortp/ortp.hash +++ b/bsp/buildroot/package/ortp/ortp.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 0deb826b79b1fd329f7638821d5439dc343bc55bb122daa6c90d19116cfe8d9a ortp-0.25.0.tar.gz +sha256 eb61a833ab3ad80978d7007411240f46e9b2d1034373b9d9dfaac88c1b6ec0af ortp-0.27.0.tar.gz diff --git a/bsp/buildroot/package/ortp/ortp.mk b/bsp/buildroot/package/ortp/ortp.mk index ca4a90d6..da17231f 100644 --- a/bsp/buildroot/package/ortp/ortp.mk +++ b/bsp/buildroot/package/ortp/ortp.mk @@ -4,12 +4,13 @@ # ################################################################################ -ORTP_VERSION = 0.25.0 +ORTP_VERSION = 0.27.0 ORTP_SITE = http://download.savannah.nongnu.org/releases/linphone/ortp/sources ORTP_CONF_OPTS = --disable-strict ORTP_INSTALL_STAGING = YES ORTP_LICENSE = LGPLv2.1+ ORTP_LICENSE_FILES = COPYING +ORTP_DEPENDENCIES = bctoolbox $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/owfs/owfs.mk b/bsp/buildroot/package/owfs/owfs.mk index 83614afc..e0679d21 100644 --- a/bsp/buildroot/package/owfs/owfs.mk +++ b/bsp/buildroot/package/owfs/owfs.mk @@ -66,6 +66,13 @@ OWFS_MAKE_ENV += \ _python_prefix=/usr \ _python_exec_prefix=/usr OWFS_DEPENDENCIES += python host-swig +# The configure scripts finds PYSITEDIR as the python_lib directory of +# host-python, and then prepends DESTDIR in front of it. So we end up +# installing things in $(TARGET_DIR)/$(HOST_DIR)/usr/lib/python which is +# clearly wrong. +# Patching owfs to do the right thing is not trivial, it's much easier to +# override the PYSITEDIR variable in make. +OWFS_EXTRA_MAKE_OPTS += PYSITEDIR=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages else OWFS_CONF_OPTS += --disable-owpython --without-python endif @@ -75,6 +82,8 @@ ifeq ($(BR2_STATIC_LIBS),y) OWFS_CONF_OPTS += --disable-zero endif +OWFS_MAKE = $(MAKE) $(OWFS_EXTRA_MAKE_OPTS) + define OWFS_INSTALL_INIT_SYSV $(INSTALL) -D -m 0755 $(OWFS_PKGDIR)S25owserver \ $(TARGET_DIR)/etc/init.d/S25owserver diff --git a/bsp/buildroot/package/p7zip/p7zip.mk b/bsp/buildroot/package/p7zip/p7zip.mk index 4bac859e..15d51381 100644 --- a/bsp/buildroot/package/p7zip/p7zip.mk +++ b/bsp/buildroot/package/p7zip/p7zip.mk @@ -14,7 +14,7 @@ P7ZIP_LICENSE_FILES = DOC/License.txt # CXXFLAGS, so we can't pass them. Instead, it accepts ALLFLAGS_C # and ALLFLAGS_CPP as variables to pass the CFLAGS and CXXFLAGS. define P7ZIP_BUILD_CMDS - $(MAKE) CC="$(TARGET_CC)" ALLFLAGS_C="$(TARGET_CFLAGS)" \ + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" ALLFLAGS_C="$(TARGET_CFLAGS)" \ CXX="$(TARGET_CXX)" ALLFLAGS_CPP="$(TARGET_CXXFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" \ -C $(@D) 7zr diff --git a/bsp/buildroot/package/p910nd/p910nd.mk b/bsp/buildroot/package/p910nd/p910nd.mk index 73667d7c..a1afdb38 100644 --- a/bsp/buildroot/package/p910nd/p910nd.mk +++ b/bsp/buildroot/package/p910nd/p910nd.mk @@ -11,7 +11,7 @@ P910ND_LICENSE = GPLv2 P910ND_LICENSE_FILES = COPYING define P910ND_BUILD_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) endef define P910ND_INSTALL_TARGET_CMDS diff --git a/bsp/buildroot/package/paho-mqtt-c/Config.in b/bsp/buildroot/package/paho-mqtt-c/Config.in new file mode 100644 index 00000000..3560d8c0 --- /dev/null +++ b/bsp/buildroot/package/paho-mqtt-c/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PAHO_MQTT_C + bool "paho-mqtt-c" + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + MQTT client C library + + https://eclipse.org/paho/clients/c/ + +comment "paho-mqtt-c needs a toolchain w/ threads and dynamic library support" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/paho-mqtt-c/paho-mqtt-c.hash b/bsp/buildroot/package/paho-mqtt-c/paho-mqtt-c.hash new file mode 100644 index 00000000..8807d788 --- /dev/null +++ b/bsp/buildroot/package/paho-mqtt-c/paho-mqtt-c.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 970b9621efc24251441d386274cd0a90cf6ad52b64031f3c8cb53fdd5526f5f3 paho-mqtt-c-v1.1.0.tar.gz diff --git a/bsp/buildroot/package/paho-mqtt-c/paho-mqtt-c.mk b/bsp/buildroot/package/paho-mqtt-c/paho-mqtt-c.mk new file mode 100644 index 00000000..7fb3026d --- /dev/null +++ b/bsp/buildroot/package/paho-mqtt-c/paho-mqtt-c.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# paho-mqtt-c +# +################################################################################ + +PAHO_MQTT_C_VERSION = v1.1.0 +PAHO_MQTT_C_SITE = $(call github,eclipse,paho.mqtt.c,$(PAHO_MQTT_C_VERSION)) +PAHO_MQTT_C_LICENSE = EPL-1.0 or BSD-3c +PAHO_MQTT_C_LICENSE_FILES = epl-v10 edl-v10 +PAHO_MQTT_C_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PAHO_MQTT_C_DEPENDENCIES += openssl +PAHO_MQTT_C_CONF_OPTS += -DPAHO_WITH_SSL=TRUE +else +PAHO_MQTT_C_CONF_OPTS += -DPAHO_WITH_SSL=FALSE +endif + +$(eval $(cmake-package)) diff --git a/bsp/buildroot/package/pango/pango.hash b/bsp/buildroot/package/pango/pango.hash index 67b67f04..1ea9f6bd 100644 --- a/bsp/buildroot/package/pango/pango.hash +++ b/bsp/buildroot/package/pango/pango.hash @@ -1,2 +1,2 @@ -# From http://ftp.gnome.org/pub/GNOME/sources/pango/1.36/pango-1.40.1.sha256sum -sha256 e27af54172c72b3ac6be53c9a4c67053e16c905e02addcf3a603ceb2005c1a40 pango-1.40.1.tar.xz +# From http://ftp.gnome.org/pub/GNOME/sources/pango/1.40/pango-1.40.3.sha256sum +sha256 abba8b5ce728520c3a0f1535eab19eac3c14aeef7faa5aded90017ceac2711d3 pango-1.40.3.tar.xz diff --git a/bsp/buildroot/package/pango/pango.mk b/bsp/buildroot/package/pango/pango.mk index bdad8c68..b45bf9a9 100644 --- a/bsp/buildroot/package/pango/pango.mk +++ b/bsp/buildroot/package/pango/pango.mk @@ -5,7 +5,7 @@ ################################################################################ PANGO_VERSION_MAJOR = 1.40 -PANGO_VERSION = $(PANGO_VERSION_MAJOR).1 +PANGO_VERSION = $(PANGO_VERSION_MAJOR).3 PANGO_SOURCE = pango-$(PANGO_VERSION).tar.xz PANGO_SITE = http://ftp.gnome.org/pub/GNOME/sources/pango/$(PANGO_VERSION_MAJOR) PANGO_AUTORECONF = YES diff --git a/bsp/buildroot/package/pangomm/pangomm.hash b/bsp/buildroot/package/pangomm/pangomm.hash index 4f39e515..b5d527fa 100644 --- a/bsp/buildroot/package/pangomm/pangomm.hash +++ b/bsp/buildroot/package/pangomm/pangomm.hash @@ -1,2 +1,2 @@ -# From http://ftp.gnome.org/pub/gnome/sources/pangomm/2.40/pangomm-2.40.0.sha256sum -sha256 7dd0afa9dcce57cdb0aad77da9ea46823ee8515d5f3ffd895b9ede7365c3d70d pangomm-2.40.0.tar.xz +# From http://ftp.gnome.org/pub/gnome/sources/pangomm/2.40/pangomm-2.40.1.sha256sum +sha256 9762ee2a2d5781be6797448d4dd2383ce14907159b30bc12bf6b08e7227be3af pangomm-2.40.1.tar.xz diff --git a/bsp/buildroot/package/pangomm/pangomm.mk b/bsp/buildroot/package/pangomm/pangomm.mk index 2db78900..2a85e39f 100644 --- a/bsp/buildroot/package/pangomm/pangomm.mk +++ b/bsp/buildroot/package/pangomm/pangomm.mk @@ -5,7 +5,7 @@ ################################################################################ PANGOMM_VERSION_MAJOR = 2.40 -PANGOMM_VERSION = $(PANGOMM_VERSION_MAJOR).0 +PANGOMM_VERSION = $(PANGOMM_VERSION_MAJOR).1 PANGOMM_SOURCE = pangomm-$(PANGOMM_VERSION).tar.xz PANGOMM_SITE = http://ftp.gnome.org/pub/gnome/sources/pangomm/$(PANGOMM_VERSION_MAJOR) PANGOMM_LICENSE = LGPLv2.1+ (library), GPLv2+ (tools) diff --git a/bsp/buildroot/package/patchelf/patchelf.hash b/bsp/buildroot/package/patchelf/patchelf.hash index 0da413e6..653eb466 100644 --- a/bsp/buildroot/package/patchelf/patchelf.hash +++ b/bsp/buildroot/package/patchelf/patchelf.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 14af06a2da688d577d64ff8dac065bb8903bbffbe01d30c62df7af9bf4ce72fe patchelf-0.8.tar.gz +sha256 a0f65c1ba148890e9f2f7823f4bedf7ecad5417772f64f994004f59a39014f83 patchelf-0.9.tar.bz2 diff --git a/bsp/buildroot/package/patchelf/patchelf.mk b/bsp/buildroot/package/patchelf/patchelf.mk index 043224da..cf2e43a7 100644 --- a/bsp/buildroot/package/patchelf/patchelf.mk +++ b/bsp/buildroot/package/patchelf/patchelf.mk @@ -4,8 +4,9 @@ # ################################################################################ -PATCHELF_VERSION = 0.8 -PATCHELF_SITE = http://releases.nixos.org/patchelf/patchelf-0.8 +PATCHELF_VERSION = 0.9 +PATCHELF_SITE = http://releases.nixos.org/patchelf/patchelf-$(PATCHELF_VERSION) +PATCHELF_SOURCE = patchelf-$(PATCHELF_VERSION).tar.bz2 PATCHELF_LICENSE = GPLv3+ PATCHELF_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/pciutils/pciutils.hash b/bsp/buildroot/package/pciutils/pciutils.hash index efdb108c..2572c35b 100644 --- a/bsp/buildroot/package/pciutils/pciutils.hash +++ b/bsp/buildroot/package/pciutils/pciutils.hash @@ -1,2 +1,2 @@ # From https://www.kernel.org/pub/software/utils/pciutils/sha256sums.asc -sha256 2bf3a4605a562fb6b8b7673bff85a474a5cf383ed7e4bd8886b4f0939013d42f pciutils-3.5.1.tar.xz +sha256 3a99141a9f40528d0a0035665a06dc37ddb1ae341658e51b50a76ecf86235efc pciutils-3.5.2.tar.xz diff --git a/bsp/buildroot/package/pciutils/pciutils.mk b/bsp/buildroot/package/pciutils/pciutils.mk index 4714ceac..e65eadca 100644 --- a/bsp/buildroot/package/pciutils/pciutils.mk +++ b/bsp/buildroot/package/pciutils/pciutils.mk @@ -4,7 +4,7 @@ # ################################################################################ -PCIUTILS_VERSION = 3.5.1 +PCIUTILS_VERSION = 3.5.2 PCIUTILS_SITE = $(BR2_KERNEL_MIRROR)/software/utils/pciutils PCIUTILS_SOURCE = pciutils-$(PCIUTILS_VERSION).tar.xz PCIUTILS_INSTALL_STAGING = YES diff --git a/bsp/buildroot/package/pcre/pcre.hash b/bsp/buildroot/package/pcre/pcre.hash index bc50042e..4c3c6c32 100644 --- a/bsp/buildroot/package/pcre/pcre.hash +++ b/bsp/buildroot/package/pcre/pcre.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 b858099f82483031ee02092711689e7245586ada49e534a06e678b8ea9549e8b pcre-8.39.tar.bz2 +sha256 00e27a29ead4267e3de8111fcaa59b132d0533cdfdbdddf4b0604279acbcf4f4 pcre-8.40.tar.bz2 diff --git a/bsp/buildroot/package/pcre/pcre.mk b/bsp/buildroot/package/pcre/pcre.mk index a10950d4..211e2359 100644 --- a/bsp/buildroot/package/pcre/pcre.mk +++ b/bsp/buildroot/package/pcre/pcre.mk @@ -4,7 +4,7 @@ # ################################################################################ -PCRE_VERSION = 8.39 +PCRE_VERSION = 8.40 PCRE_SITE = ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre PCRE_SOURCE = pcre-$(PCRE_VERSION).tar.bz2 PCRE_LICENSE = BSD-3c diff --git a/bsp/buildroot/package/perl-db-file/Config.in b/bsp/buildroot/package/perl-db-file/Config.in deleted file mode 100644 index f07e5df4..00000000 --- a/bsp/buildroot/package/perl-db-file/Config.in +++ /dev/null @@ -1,11 +0,0 @@ -config BR2_PACKAGE_PERL_DB_FILE - bool "perl-db-file" - depends on !BR2_STATIC_LIBS - select BR2_PACKAGE_BERKELEYDB - help - Perl5 access to Berkeley DB version 1.x or 2.x. - - https://metacpan.org/release/DB_File - -comment "perl-db-file needs a toolchain w/ dynamic library" - depends on BR2_STATIC_LIBS diff --git a/bsp/buildroot/package/perl-db-file/perl-db-file.hash b/bsp/buildroot/package/perl-db-file/perl-db-file.hash deleted file mode 100644 index df0113c8..00000000 --- a/bsp/buildroot/package/perl-db-file/perl-db-file.hash +++ /dev/null @@ -1,3 +0,0 @@ -# retrieved by scancpan from http://cpan.metacpan.org/ -md5 0ae7910cabc31a44e50b713a8a475514 DB_File-1.835.tar.gz -sha256 41206f39a1bac49db8c1595e300b04c70e1393b2d78ccb9ef15c5c0b81037cfc DB_File-1.835.tar.gz diff --git a/bsp/buildroot/package/perl-db-file/perl-db-file.mk b/bsp/buildroot/package/perl-db-file/perl-db-file.mk deleted file mode 100644 index 3db8c563..00000000 --- a/bsp/buildroot/package/perl-db-file/perl-db-file.mk +++ /dev/null @@ -1,22 +0,0 @@ -################################################################################ -# -# perl-db-file -# -################################################################################ - -PERL_DB_FILE_VERSION = 1.835 -PERL_DB_FILE_SOURCE = DB_File-$(PERL_DB_FILE_VERSION).tar.gz -PERL_DB_FILE_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PM/PMQS -PERL_DB_FILE_DEPENDENCIES = berkeleydb -PERL_DB_FILE_LICENSE = Artistic or GPLv1+ -PERL_DB_FILE_LICENSE_FILES = README - -define PERL_DB_FILE_FIX_CONFIG_IN - $(SED) 's%^INCLUDE.*%INCLUDE = $(STAGING_DIR)/usr/include%' \ - $(@D)/config.in - $(SED) 's%^LIB.*%LIB = $(STAGING_DIR)/usr/lib%' \ - $(@D)/config.in -endef -PERL_DB_FILE_POST_PATCH_HOOKS += PERL_DB_FILE_FIX_CONFIG_IN - -$(eval $(perl-package)) diff --git a/bsp/buildroot/package/perl-gd/0002-lgd.patch b/bsp/buildroot/package/perl-gd/0002-lgd.patch index 4a69c2ae..2827cd76 100644 --- a/bsp/buildroot/package/perl-gd/0002-lgd.patch +++ b/bsp/buildroot/package/perl-gd/0002-lgd.patch @@ -7,7 +7,7 @@ Index: b/Makefile.PL =================================================================== --- a/Makefile.PL +++ b/Makefile.PL -@@ -34,9 +34,9 @@ +@@ -42,9 +42,9 @@ END } @@ -18,7 +18,7 @@ Index: b/Makefile.PL # support for AMD64 libraries if (-d '/usr/lib64') { -@@ -291,7 +291,6 @@ +@@ -294,7 +294,6 @@ @$LIBPATH = map {s/^-L// && "-L$_"} split /\s+/,$ldflags; @$LIBS = split /\s+/,$libs; diff --git a/bsp/buildroot/package/perl-gd/0003-force.patch b/bsp/buildroot/package/perl-gd/0003-force.patch index 0a121a99..611066b9 100644 --- a/bsp/buildroot/package/perl-gd/0003-force.patch +++ b/bsp/buildroot/package/perl-gd/0003-force.patch @@ -7,7 +7,7 @@ Index: b/Makefile.PL =================================================================== --- a/Makefile.PL +++ b/Makefile.PL -@@ -35,13 +35,15 @@ +@@ -43,13 +43,15 @@ } push @LIBS, "-lgd"; diff --git a/bsp/buildroot/package/perl-gd/0004-gdlib-config-is-now-configurable.patch b/bsp/buildroot/package/perl-gd/0004-gdlib-config-is-now-configurable.patch index dea61261..58df2255 100644 --- a/bsp/buildroot/package/perl-gd/0004-gdlib-config-is-now-configurable.patch +++ b/bsp/buildroot/package/perl-gd/0004-gdlib-config-is-now-configurable.patch @@ -53,7 +53,7 @@ index dfe8ad7..0fa6ef3 100644 ############################################################################################# if ($^O eq 'VMS'){ -@@ -275,7 +286,7 @@ exit 0; +@@ -278,7 +289,7 @@ exit 0; sub try_to_autoconfigure { my ($options,$lib_gd_path,$INC,$LIBPATH,$LIBS) = @_; diff --git a/bsp/buildroot/package/perl-gd/Config.in b/bsp/buildroot/package/perl-gd/Config.in index 61f7e5da..2b7a265f 100644 --- a/bsp/buildroot/package/perl-gd/Config.in +++ b/bsp/buildroot/package/perl-gd/Config.in @@ -6,7 +6,7 @@ config BR2_PACKAGE_PERL_GD select BR2_PACKAGE_FREETYPE select BR2_PACKAGE_GD help - Interface to Gd Graphics Library + Perl interface to the gd2 graphics library https://metacpan.org/release/GD diff --git a/bsp/buildroot/package/perl-gd/perl-gd.hash b/bsp/buildroot/package/perl-gd/perl-gd.hash index c6822aea..0c16d3f5 100644 --- a/bsp/buildroot/package/perl-gd/perl-gd.hash +++ b/bsp/buildroot/package/perl-gd/perl-gd.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 d2c9b18123bcaff8672eb50f2eb37ed3 GD-2.53.tar.gz -sha256 d05d01fe95e581adb3468cf05ab5d405db7497c0fb3ec7ecf23d023705fab7aa GD-2.53.tar.gz +md5 c4b3afd98b2c4ce3c2e1027d101a8f1e GD-2.56.tar.gz +sha256 1f103d1c98de8621504642ed7fb79f1b40f5f6a63c2abe9390a8ab78617248f9 GD-2.56.tar.gz diff --git a/bsp/buildroot/package/perl-gd/perl-gd.mk b/bsp/buildroot/package/perl-gd/perl-gd.mk index 99568cbf..ea8fd5cd 100644 --- a/bsp/buildroot/package/perl-gd/perl-gd.mk +++ b/bsp/buildroot/package/perl-gd/perl-gd.mk @@ -4,12 +4,13 @@ # ################################################################################ -PERL_GD_VERSION = 2.53 +PERL_GD_VERSION = 2.56 PERL_GD_SOURCE = GD-$(PERL_GD_VERSION).tar.gz PERL_GD_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LD/LDS PERL_GD_DEPENDENCIES = zlib libpng freetype gd -PERL_GD_LICENSE = Artistic-2.0 or GPLv1+ +PERL_GD_LICENSE = Artistic or GPLv1+ PERL_GD_LICENSE_FILES = LICENSE +PERL_GD_PREFER_INSTALLER = EUMM PERL_GD_CONF_OPTS = \ -options=FT,PNG \ diff --git a/bsp/buildroot/package/perl-gdgraph/perl-gdgraph.hash b/bsp/buildroot/package/perl-gdgraph/perl-gdgraph.hash index 7005cc92..2e85452c 100644 --- a/bsp/buildroot/package/perl-gdgraph/perl-gdgraph.hash +++ b/bsp/buildroot/package/perl-gdgraph/perl-gdgraph.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 8bb270a30fea27491302b39b701b3d4e GDGraph-1.49.tar.gz -sha256 d26538c827e35c1d4b27f3c045b60f1ab6b45401c54a87e86103cd7c2374cff5 GDGraph-1.49.tar.gz +md5 38c6a188519e6272e9b2b722b315c3d8 GDGraph-1.54.tar.gz +sha256 b96f5c10b656c17d16ab65a1777c908297b028d3b6815f6d54b2337f006bfa4f GDGraph-1.54.tar.gz diff --git a/bsp/buildroot/package/perl-gdgraph/perl-gdgraph.mk b/bsp/buildroot/package/perl-gdgraph/perl-gdgraph.mk index dbc789e1..dc7ffd9b 100644 --- a/bsp/buildroot/package/perl-gdgraph/perl-gdgraph.mk +++ b/bsp/buildroot/package/perl-gdgraph/perl-gdgraph.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_GDGRAPH_VERSION = 1.49 +PERL_GDGRAPH_VERSION = 1.54 PERL_GDGRAPH_SOURCE = GDGraph-$(PERL_GDGRAPH_VERSION).tar.gz PERL_GDGRAPH_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RU/RUZ PERL_GDGRAPH_DEPENDENCIES = perl-gd perl-gdtextutil diff --git a/bsp/buildroot/package/perl-json-tiny/perl-json-tiny.hash b/bsp/buildroot/package/perl-json-tiny/perl-json-tiny.hash index 0a1e7cac..4b6bb89c 100644 --- a/bsp/buildroot/package/perl-json-tiny/perl-json-tiny.hash +++ b/bsp/buildroot/package/perl-json-tiny/perl-json-tiny.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 70957d3df2ea67f8e2c760166fce7b24 JSON-Tiny-0.53.tar.gz -sha256 37e547c5b5b7f4dd9adf00db7c77454f3451f79c1be93ef11d4f2ddc9c10aad9 JSON-Tiny-0.53.tar.gz +md5 52a57f8bd5b7727bc0ee8c4591431045 JSON-Tiny-0.56.tar.gz +sha256 f5e3eecd278ddc0b15e3b3d8d108f89fa47cc039852bdb80b909b6bc1b538d04 JSON-Tiny-0.56.tar.gz diff --git a/bsp/buildroot/package/perl-json-tiny/perl-json-tiny.mk b/bsp/buildroot/package/perl-json-tiny/perl-json-tiny.mk index 7a2a42e0..3892da60 100644 --- a/bsp/buildroot/package/perl-json-tiny/perl-json-tiny.mk +++ b/bsp/buildroot/package/perl-json-tiny/perl-json-tiny.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_JSON_TINY_VERSION = 0.53 +PERL_JSON_TINY_VERSION = 0.56 PERL_JSON_TINY_SOURCE = JSON-Tiny-$(PERL_JSON_TINY_VERSION).tar.gz PERL_JSON_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DAVIDO PERL_JSON_TINY_LICENSE = Artistic-2.0 diff --git a/bsp/buildroot/package/perl-libwww-perl/perl-libwww-perl.hash b/bsp/buildroot/package/perl-libwww-perl/perl-libwww-perl.hash index ffc180f8..d3b33286 100644 --- a/bsp/buildroot/package/perl-libwww-perl/perl-libwww-perl.hash +++ b/bsp/buildroot/package/perl-libwww-perl/perl-libwww-perl.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 6888c9d8728cd6f3ea3c9754461c9f94 libwww-perl-6.15.tar.gz -sha256 6f349d45c21b1ec0501c4437dfcb70570940e6c3d5bff783bd91d4cddead8322 libwww-perl-6.15.tar.gz +md5 0880fade10edcf5f60087e42f1db4481 libwww-perl-6.16.tar.gz +sha256 daffd268000f92d241f8ae5508ae5616dbd02f15a587b4fbcd14998ccc15ce22 libwww-perl-6.16.tar.gz diff --git a/bsp/buildroot/package/perl-libwww-perl/perl-libwww-perl.mk b/bsp/buildroot/package/perl-libwww-perl/perl-libwww-perl.mk index 594eb7d6..8d4d00e3 100644 --- a/bsp/buildroot/package/perl-libwww-perl/perl-libwww-perl.mk +++ b/bsp/buildroot/package/perl-libwww-perl/perl-libwww-perl.mk @@ -4,11 +4,9 @@ # ################################################################################ -PERL_LIBWWW_PERL_VERSION = 6.15 +PERL_LIBWWW_PERL_VERSION = 6.16 PERL_LIBWWW_PERL_SOURCE = libwww-perl-$(PERL_LIBWWW_PERL_VERSION).tar.gz -PERL_LIBWWW_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER -PERL_LIBWWW_PERL_LICENSE = Artistic or GPLv1+ -PERL_LIBWWW_LICENSE_FILES = README +PERL_LIBWWW_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS PERL_LIBWWW_PERL_DEPENDENCIES = \ perl-encode-locale \ perl-file-listing \ @@ -22,5 +20,7 @@ PERL_LIBWWW_PERL_DEPENDENCIES = \ perl-net-http \ perl-uri \ perl-www-robotrules +PERL_LIBWWW_PERL_LICENSE = Artistic or GPLv1+ +PERL_LIBWWW_PERL_LICENSE_FILES = LICENSE $(eval $(perl-package)) diff --git a/bsp/buildroot/package/perl-mailtools/perl-mailtools.hash b/bsp/buildroot/package/perl-mailtools/perl-mailtools.hash index b67867a4..65a424b0 100644 --- a/bsp/buildroot/package/perl-mailtools/perl-mailtools.hash +++ b/bsp/buildroot/package/perl-mailtools/perl-mailtools.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 813ae849683367bb75e6be89e4e8cc46 MailTools-2.14.tar.gz -sha256 4b7c7ef674b2ef75ea793f053cd067c6a4b33e58e3adf08a89c8ea4c56b3dff8 MailTools-2.14.tar.gz +md5 972468ab5207b90398d77bed4ffc361d MailTools-2.18.tar.gz +sha256 dfee9e770257371112f20d978e637759e81bc4f19e97b083585c71ecab37b527 MailTools-2.18.tar.gz diff --git a/bsp/buildroot/package/perl-mailtools/perl-mailtools.mk b/bsp/buildroot/package/perl-mailtools/perl-mailtools.mk index d3c049d5..1c41831c 100644 --- a/bsp/buildroot/package/perl-mailtools/perl-mailtools.mk +++ b/bsp/buildroot/package/perl-mailtools/perl-mailtools.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_MAILTOOLS_VERSION = 2.14 +PERL_MAILTOOLS_VERSION = 2.18 PERL_MAILTOOLS_SOURCE = MailTools-$(PERL_MAILTOOLS_VERSION).tar.gz PERL_MAILTOOLS_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MA/MARKOV PERL_MAILTOOLS_DEPENDENCIES = perl-timedate diff --git a/bsp/buildroot/package/perl-module-build/perl-module-build.hash b/bsp/buildroot/package/perl-module-build/perl-module-build.hash index d42dbada..0363ac57 100644 --- a/bsp/buildroot/package/perl-module-build/perl-module-build.hash +++ b/bsp/buildroot/package/perl-module-build/perl-module-build.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 7e3b17e14b54036c5ac18c27f7955e79 Module-Build-0.4218.tar.gz -sha256 1ef0aa529a3f296f894a5e79240a77d71be60dd595e8cad3a0d04c7ea187c0d0 Module-Build-0.4218.tar.gz +md5 9df204e188462a4410d496f316c2c531 Module-Build-0.4220.tar.gz +sha256 fb1207c7e799366f7a8adda3f135bf8141c4d6068505650d4db2b2d3ce34b5a2 Module-Build-0.4220.tar.gz diff --git a/bsp/buildroot/package/perl-module-build/perl-module-build.mk b/bsp/buildroot/package/perl-module-build/perl-module-build.mk index 0effbacb..3c270029 100644 --- a/bsp/buildroot/package/perl-module-build/perl-module-build.mk +++ b/bsp/buildroot/package/perl-module-build/perl-module-build.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_MODULE_BUILD_VERSION = 0.4218 +PERL_MODULE_BUILD_VERSION = 0.4220 PERL_MODULE_BUILD_SOURCE = Module-Build-$(PERL_MODULE_BUILD_VERSION).tar.gz PERL_MODULE_BUILD_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT PERL_MODULE_BUILD_LICENSE = Artistic or GPLv1+ diff --git a/bsp/buildroot/package/perl-mojolicious/perl-mojolicious.hash b/bsp/buildroot/package/perl-mojolicious/perl-mojolicious.hash index 23a30e50..21b2768b 100644 --- a/bsp/buildroot/package/perl-mojolicious/perl-mojolicious.hash +++ b/bsp/buildroot/package/perl-mojolicious/perl-mojolicious.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 91799c9c21e116dc438fdec1ede5a977 Mojolicious-7.0.tar.gz -sha256 2da57d411aaf718d6b93deebd08d3c36e7f32ef66b6a539854f72119ad9b6bc2 Mojolicious-7.0.tar.gz +md5 97a935d64fc2aaf5538e6ab704bbc420 Mojolicious-7.20.tar.gz +sha256 ddd034bdd2b99f64498f30b9859c2f2607318f43983dfe36e14bfdf1526fd693 Mojolicious-7.20.tar.gz diff --git a/bsp/buildroot/package/perl-mojolicious/perl-mojolicious.mk b/bsp/buildroot/package/perl-mojolicious/perl-mojolicious.mk index 1bc31bb8..b3e6615f 100644 --- a/bsp/buildroot/package/perl-mojolicious/perl-mojolicious.mk +++ b/bsp/buildroot/package/perl-mojolicious/perl-mojolicious.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_MOJOLICIOUS_VERSION = 7.0 +PERL_MOJOLICIOUS_VERSION = 7.20 PERL_MOJOLICIOUS_SOURCE = Mojolicious-$(PERL_MOJOLICIOUS_VERSION).tar.gz PERL_MOJOLICIOUS_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SR/SRI PERL_MOJOLICIOUS_LICENSE = Artistic-2.0 diff --git a/bsp/buildroot/package/perl-net-dns/Config.in b/bsp/buildroot/package/perl-net-dns/Config.in index 24ce481a..de720bf2 100644 --- a/bsp/buildroot/package/perl-net-dns/Config.in +++ b/bsp/buildroot/package/perl-net-dns/Config.in @@ -2,6 +2,6 @@ config BR2_PACKAGE_PERL_NET_DNS bool "perl-net-dns" select BR2_PACKAGE_PERL_DIGEST_HMAC help - Net::DNS is a DNS resolver implemented in Perl. + Perl Interface to the Domain Name System http://www.net-dns.org diff --git a/bsp/buildroot/package/perl-net-dns/perl-net-dns.hash b/bsp/buildroot/package/perl-net-dns/perl-net-dns.hash index bb1fdfa2..d2f07251 100644 --- a/bsp/buildroot/package/perl-net-dns/perl-net-dns.hash +++ b/bsp/buildroot/package/perl-net-dns/perl-net-dns.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 5a6f6e6811d6bf8eefd84ce778c2bc2e Net-DNS-1.04.tar.gz -sha256 4b9f220304c5722658fbdbe4db31ab77486b5f0aaada78c9d1b528e4b0680965 Net-DNS-1.04.tar.gz +md5 96c1a801cab92b81696a037c7c326e59 Net-DNS-1.07.tar.gz +sha256 5f91497f1af9f690153fa05a27a7d73ddada08bed40536fe2d0ac759b7af8492 Net-DNS-1.07.tar.gz diff --git a/bsp/buildroot/package/perl-net-dns/perl-net-dns.mk b/bsp/buildroot/package/perl-net-dns/perl-net-dns.mk index 63376128..f1a0b88d 100644 --- a/bsp/buildroot/package/perl-net-dns/perl-net-dns.mk +++ b/bsp/buildroot/package/perl-net-dns/perl-net-dns.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_NET_DNS_VERSION = 1.04 +PERL_NET_DNS_VERSION = 1.07 PERL_NET_DNS_SOURCE = Net-DNS-$(PERL_NET_DNS_VERSION).tar.gz PERL_NET_DNS_SITE = $(BR2_CPAN_MIRROR)/authors/id/N/NL/NLNETLABS PERL_NET_DNS_DEPENDENCIES = perl-digest-hmac diff --git a/bsp/buildroot/package/perl-net-http/Config.in b/bsp/buildroot/package/perl-net-http/Config.in index 6f18dd5a..63215772 100644 --- a/bsp/buildroot/package/perl-net-http/Config.in +++ b/bsp/buildroot/package/perl-net-http/Config.in @@ -2,6 +2,6 @@ config BR2_PACKAGE_PERL_NET_HTTP bool "perl-net-http" select BR2_PACKAGE_PERL_URI help - The `Net::HTTP' class is a low-level HTTP client. + Low-level HTTP connection (client) - http://github.com/libwww-perl/net-http + https://github.com/libwww-perl/Net-HTTP diff --git a/bsp/buildroot/package/perl-net-http/perl-net-http.hash b/bsp/buildroot/package/perl-net-http/perl-net-http.hash index 79f43c5f..4dfad86e 100644 --- a/bsp/buildroot/package/perl-net-http/perl-net-http.hash +++ b/bsp/buildroot/package/perl-net-http/perl-net-http.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 3d84d17f64c7316d69e7eb7b4e292b9a Net-HTTP-6.09.tar.gz -sha256 52762b939d84806908ba544581c5708375f7938c3c0e496c128ca3fbc425e58d Net-HTTP-6.09.tar.gz +md5 988c72ce2890df56e41df6695d108e5d Net-HTTP-6.12.tar.gz +sha256 8565aff76b3d09084642f3a83c654fb4ced8220e8e19d35c78b661519b4c1be6 Net-HTTP-6.12.tar.gz diff --git a/bsp/buildroot/package/perl-net-http/perl-net-http.mk b/bsp/buildroot/package/perl-net-http/perl-net-http.mk index 9dbc4ab4..ec74a3f3 100644 --- a/bsp/buildroot/package/perl-net-http/perl-net-http.mk +++ b/bsp/buildroot/package/perl-net-http/perl-net-http.mk @@ -4,11 +4,11 @@ # ################################################################################ -PERL_NET_HTTP_VERSION = 6.09 +PERL_NET_HTTP_VERSION = 6.12 PERL_NET_HTTP_SOURCE = Net-HTTP-$(PERL_NET_HTTP_VERSION).tar.gz -PERL_NET_HTTP_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER +PERL_NET_HTTP_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS PERL_NET_HTTP_DEPENDENCIES = perl-uri PERL_NET_HTTP_LICENSE = Artistic or GPLv1+ -PERL_NET_HTTP_LICENSE_FILES = README +PERL_NET_HTTP_LICENSE_FILES = LICENSE $(eval $(perl-package)) diff --git a/bsp/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.hash b/bsp/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.hash index 19bba208..fde62b12 100644 --- a/bsp/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.hash +++ b/bsp/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 bca8406520b6535a3f9661d385705d97 NetAddr-IP-4.078.tar.gz -sha256 b9a12294e58dcece0189630ddb6926e37169cbbb24c76091f1e604e426c19614 NetAddr-IP-4.078.tar.gz +md5 990dfcbffae356835c536e8ab56a2880 NetAddr-IP-4.079.tar.gz +sha256 ec5a82dfb7028bcd28bb3d569f95d87dd4166cc19867f2184ed3a59f6d6ca0e7 NetAddr-IP-4.079.tar.gz diff --git a/bsp/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.mk b/bsp/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.mk index f2eec6c0..b5ee9a1c 100644 --- a/bsp/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.mk +++ b/bsp/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_NETADDR_IP_VERSION = 4.078 +PERL_NETADDR_IP_VERSION = 4.079 PERL_NETADDR_IP_SOURCE = NetAddr-IP-$(PERL_NETADDR_IP_VERSION).tar.gz PERL_NETADDR_IP_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIKER PERL_NETADDR_IP_LICENSE = Artistic or GPLv1+ diff --git a/bsp/buildroot/package/perl-path-tiny/perl-path-tiny.hash b/bsp/buildroot/package/perl-path-tiny/perl-path-tiny.hash index a62c1653..259469cc 100644 --- a/bsp/buildroot/package/perl-path-tiny/perl-path-tiny.hash +++ b/bsp/buildroot/package/perl-path-tiny/perl-path-tiny.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 840696b295230682c727297c87fe42d6 Path-Tiny-0.072.tar.gz -sha256 d7507c7822d4f7f60a5329d26c8afce31022cd92d02b011e367cc6a1eeae6981 Path-Tiny-0.072.tar.gz +md5 92ece7b2aa09f18035b0550b0118bdee Path-Tiny-0.100.tar.gz +sha256 8b8c4c9db710470a26b356e7187eba47217fbba1fe8bd0ad72c5b2cc8f6ba10c Path-Tiny-0.100.tar.gz diff --git a/bsp/buildroot/package/perl-path-tiny/perl-path-tiny.mk b/bsp/buildroot/package/perl-path-tiny/perl-path-tiny.mk index 0af84fdd..ed1304d4 100644 --- a/bsp/buildroot/package/perl-path-tiny/perl-path-tiny.mk +++ b/bsp/buildroot/package/perl-path-tiny/perl-path-tiny.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_PATH_TINY_VERSION = 0.072 +PERL_PATH_TINY_VERSION = 0.100 PERL_PATH_TINY_SOURCE = Path-Tiny-$(PERL_PATH_TINY_VERSION).tar.gz PERL_PATH_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DAGOLDEN PERL_PATH_TINY_LICENSE = Apache-2.0 diff --git a/bsp/buildroot/package/perl-try-tiny/Config.in b/bsp/buildroot/package/perl-try-tiny/Config.in index ea25589b..5c115b63 100644 --- a/bsp/buildroot/package/perl-try-tiny/Config.in +++ b/bsp/buildroot/package/perl-try-tiny/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_PERL_TRY_TINY bool "perl-try-tiny" help - minimal try/catch with proper preservation of $@ + Minimal try/catch with proper preservation of $@ - https://github.com/karenetheridge/Try-Tiny + https://github.com/p5sagit/Try-Tiny diff --git a/bsp/buildroot/package/perl-try-tiny/perl-try-tiny.hash b/bsp/buildroot/package/perl-try-tiny/perl-try-tiny.hash index dc44f18b..c6dbd44f 100644 --- a/bsp/buildroot/package/perl-try-tiny/perl-try-tiny.hash +++ b/bsp/buildroot/package/perl-try-tiny/perl-try-tiny.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 1a12a51cfeb7e2c301e4ae093c7ecdfb Try-Tiny-0.24.tar.gz -sha256 9b7a1af24c0256973d175369ebbdc25ec01e2452a97f2d3ab61481c826f38d81 Try-Tiny-0.24.tar.gz +md5 e2f8af601a62981aab30df15a6f47475 Try-Tiny-0.28.tar.gz +sha256 f1d166be8aa19942c4504c9111dade7aacb981bc5b3a2a5c5f6019646db8c146 Try-Tiny-0.28.tar.gz diff --git a/bsp/buildroot/package/perl-try-tiny/perl-try-tiny.mk b/bsp/buildroot/package/perl-try-tiny/perl-try-tiny.mk index f0331976..b4d35ab1 100644 --- a/bsp/buildroot/package/perl-try-tiny/perl-try-tiny.mk +++ b/bsp/buildroot/package/perl-try-tiny/perl-try-tiny.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_TRY_TINY_VERSION = 0.24 +PERL_TRY_TINY_VERSION = 0.28 PERL_TRY_TINY_SOURCE = Try-Tiny-$(PERL_TRY_TINY_VERSION).tar.gz PERL_TRY_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER PERL_TRY_TINY_LICENSE = MIT diff --git a/bsp/buildroot/package/perl-xml-libxml/perl-xml-libxml.hash b/bsp/buildroot/package/perl-xml-libxml/perl-xml-libxml.hash index 1d42bf2f..b6195c3b 100644 --- a/bsp/buildroot/package/perl-xml-libxml/perl-xml-libxml.hash +++ b/bsp/buildroot/package/perl-xml-libxml/perl-xml-libxml.hash @@ -1,3 +1,3 @@ # retrieved by scancpan from http://cpan.metacpan.org/ -md5 c6007524ddec3be6cfbb8f68f5aa791c XML-LibXML-2.0126.tar.gz -sha256 0e735ab72e2ba77070a58a737fd6c61fa6aa198527abc59a5d5627f0650a60af XML-LibXML-2.0126.tar.gz +md5 9904690371679e082ff2c23677b6c90e XML-LibXML-2.0128.tar.gz +sha256 26e7ba451f3bade4d29ff00653a2ee01d13fe38b9a2ebcd0b0f3f82f9f688f2b XML-LibXML-2.0128.tar.gz diff --git a/bsp/buildroot/package/perl-xml-libxml/perl-xml-libxml.mk b/bsp/buildroot/package/perl-xml-libxml/perl-xml-libxml.mk index 66c606b3..8d8f5905 100644 --- a/bsp/buildroot/package/perl-xml-libxml/perl-xml-libxml.mk +++ b/bsp/buildroot/package/perl-xml-libxml/perl-xml-libxml.mk @@ -4,7 +4,7 @@ # ################################################################################ -PERL_XML_LIBXML_VERSION = 2.0126 +PERL_XML_LIBXML_VERSION = 2.0128 PERL_XML_LIBXML_SOURCE = XML-LibXML-$(PERL_XML_LIBXML_VERSION).tar.gz PERL_XML_LIBXML_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SH/SHLOMIF PERL_XML_LIBXML_DEPENDENCIES = zlib libxml2 perl-xml-namespacesupport perl-xml-sax perl-xml-sax-base diff --git a/bsp/buildroot/package/perl/0001-fix-static-build-with-gdbm-gettext.patch b/bsp/buildroot/package/perl/0001-fix-static-build-with-gdbm-gettext.patch new file mode 100644 index 00000000..ca6bf011 --- /dev/null +++ b/bsp/buildroot/package/perl/0001-fix-static-build-with-gdbm-gettext.patch @@ -0,0 +1,20 @@ +fix static build with gdbm + gettext + +see doc http://perldoc.perl.org/ExtUtils/MakeMaker.html#LIBS + +Signed-off-by: Francois Perrad + +index: b/ext/GDBM_File/Makefile.PL +=================================================================== +--- a/ext/GDBM_File/Makefile.PL ++++ b/ext/GDBM_File/Makefile.PL +@@ -2,7 +2,7 @@ use ExtUtils::MakeMaker; + use ExtUtils::Constant 0.11 'WriteConstants'; + WriteMakefile( + NAME => 'GDBM_File', +- LIBS => ["-lgdbm", "-ldbm"], ++ LIBS => ["-lgdbm -lintl", "-lgdbm", "-ldbm"], + XSPROTOARG => '-noprototypes', # XXX remove later? + VERSION_FROM => 'GDBM_File.pm', + realclean => {FILES=> 'const-c.inc const-xs.inc'}, + diff --git a/bsp/buildroot/package/perl/perl.hash b/bsp/buildroot/package/perl/perl.hash index 4afbd06d..41c1ce8a 100644 --- a/bsp/buildroot/package/perl/perl.hash +++ b/bsp/buildroot/package/perl/perl.hash @@ -1,7 +1,7 @@ -# Hashes from: http://www.cpan.org/src/5.0/perl-5.22.2.tar.bz2.{md5,sha1,sha256}.txt -md5 24ec0b41fdd1a4cce0e66811ae1f5e1b perl-5.22.2.tar.bz2 -sha1 e2f465446dcd45a7fa3da696037f9ebe73e78e55 perl-5.22.2.tar.bz2 -sha256 f2322b9b04fe0cdbca9fe755360da04892cb6483d44959457cfebc0bcddc8058 perl-5.22.2.tar.bz2 +# Hashes from: http://www.cpan.org/src/5.0/perl-5.24.1.tar.xz.{md5,sha1,sha256}.txt +md5 af6a84c7c3e2b8b269c105a5db2f6d53 perl-5.24.1.tar.xz +sha1 5bec25d8821b81a5939ee220997f4c8ab1c13e31 perl-5.24.1.tar.xz +sha256 03a77bac4505c270f1890ece75afc7d4b555090b41aa41ea478747e23b2afb3f perl-5.24.1.tar.xz -# No upstream hashes for the following -sha256 250ab6e6c034a8b7ae447fa2b453fa0b61ebb7db4d039eba60c52e44ab5899bd perl-5.22.1-cross-1.0.2.tar.gz +# Hashes from: http://github.com/arsv/perl-cross/releases/download/1.1.3/perl-cross-1.1.3.hash +sha256 181b24ff71815fb2c8065e6ea139d106796eee0964aebfd8081f0b7f69e0696d perl-cross-1.1.3.tar.gz diff --git a/bsp/buildroot/package/perl/perl.mk b/bsp/buildroot/package/perl/perl.mk index 29b44559..224b4cba 100644 --- a/bsp/buildroot/package/perl/perl.mk +++ b/bsp/buildroot/package/perl/perl.mk @@ -5,24 +5,20 @@ ################################################################################ # When updating the version here, also update support/scripts/scancpan -PERL_VERSION_MAJOR = 22 -PERL_VERSION = 5.$(PERL_VERSION_MAJOR).2 +PERL_VERSION_MAJOR = 24 +PERL_VERSION = 5.$(PERL_VERSION_MAJOR).1 PERL_SITE = http://www.cpan.org/src/5.0 -PERL_SOURCE = perl-$(PERL_VERSION).tar.bz2 +PERL_SOURCE = perl-$(PERL_VERSION).tar.xz PERL_LICENSE = Artistic or GPLv1+ PERL_LICENSE_FILES = Artistic Copying README PERL_INSTALL_STAGING = YES -PERL_CROSS_VERSION = 1.0.2 -PERL_CROSS_BASE_VERSION = 5.$(PERL_VERSION_MAJOR).1 +PERL_CROSS_VERSION = 1.1.3 # DO NOT refactor with the github helper (the result is not the same) PERL_CROSS_SITE = https://github.com/arsv/perl-cross/releases/download/$(PERL_CROSS_VERSION) -PERL_CROSS_SOURCE = perl-$(PERL_CROSS_BASE_VERSION)-cross-$(PERL_CROSS_VERSION).tar.gz +PERL_CROSS_SOURCE = perl-cross-$(PERL_CROSS_VERSION).tar.gz PERL_EXTRA_DOWNLOADS = $(PERL_CROSS_SITE)/$(PERL_CROSS_SOURCE) -PERL_CROSS_OLD_POD = perl$(subst .,,$(PERL_CROSS_BASE_VERSION))delta.pod -PERL_CROSS_NEW_POD = perl$(subst .,,$(PERL_VERSION))delta.pod - # We use the perlcross hack to cross-compile perl. It should # be extracted over the perl sources, so we don't define that # as a separate package. Instead, it is downloaded and extracted @@ -33,10 +29,11 @@ define PERL_CROSS_EXTRACT endef PERL_POST_EXTRACT_HOOKS += PERL_CROSS_EXTRACT -define PERL_CROSS_SET_POD - $(SED) s/$(PERL_CROSS_OLD_POD)/$(PERL_CROSS_NEW_POD)/g $(@D)/Makefile -endef -PERL_POST_PATCH_HOOKS += PERL_CROSS_SET_POD +# Even though perl is not an autotools-package, it uses config.sub and +# config.guess. Up-to-date versions of these files may be needed to build perl +# on newer host architectures, so we borrow the hook which updates them from the +# autotools infrastructure. +PERL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK ifeq ($(BR2_PACKAGE_BERKELEYDB),y) PERL_DEPENDENCIES += berkeleydb @@ -75,20 +72,21 @@ PERL_CONF_OPTS += --only-mod=$(subst $(space),$(comma),$(PERL_MODULES)) endif define PERL_CONFIGURE_CMDS - (cd $(@D); HOSTCC='$(HOSTCC_NOCCACHE)' ./configure $(PERL_CONF_OPTS)) + (cd $(@D); $(TARGET_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \ + ./configure $(PERL_CONF_OPTS)) $(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h endef define PERL_BUILD_CMDS - $(MAKE1) -C $(@D) all + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) all endef define PERL_INSTALL_STAGING_CMDS - $(MAKE1) -C $(@D) DESTDIR="$(STAGING_DIR)" install.perl + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(STAGING_DIR)" install.perl install.sym endef define PERL_INSTALL_TARGET_CMDS - $(MAKE1) -C $(@D) DESTDIR="$(TARGET_DIR)" install.perl + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(TARGET_DIR)" install.perl install.sym endef HOST_PERL_CONF_OPTS = \ @@ -97,15 +95,16 @@ HOST_PERL_CONF_OPTS = \ -Dcc="$(HOSTCC)" define HOST_PERL_CONFIGURE_CMDS - (cd $(@D); HOSTCC='$(HOSTCC_NOCCACHE)' ./Configure $(HOST_PERL_CONF_OPTS)) + (cd $(@D); $(HOST_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \ + ./Configure $(HOST_PERL_CONF_OPTS)) endef define HOST_PERL_BUILD_CMDS - $(MAKE) -C $(@D) + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) endef define HOST_PERL_INSTALL_CMDS - $(MAKE) -C $(@D) INSTALL_DEPENDENCE='' install + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_DEPENDENCE='' install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/php-amqp/Config.in b/bsp/buildroot/package/php-amqp/Config.in new file mode 100644 index 00000000..0aa2021f --- /dev/null +++ b/bsp/buildroot/package/php-amqp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PHP_AMQP + bool "php-amqp" + depends on BR2_PACKAGE_PHP + depends on BR2_TOOLCHAIN_HAS_THREADS # rabbitmq-c + select BR2_PACKAGE_RABBITMQ_C + help + Communicate with any AMQP compliant server. + + http://pecl.php.net/package/amqp + +comment "php-amqp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/php-amqp/php-amqp.hash b/bsp/buildroot/package/php-amqp/php-amqp.hash new file mode 100644 index 00000000..73c69d92 --- /dev/null +++ b/bsp/buildroot/package/php-amqp/php-amqp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 38a92eaef1aa863404170bcd15605f7f78140eeec1ff5be6af65c5b8081e2599 amqp-1.7.1.tgz diff --git a/bsp/buildroot/package/php-amqp/php-amqp.mk b/bsp/buildroot/package/php-amqp/php-amqp.mk new file mode 100644 index 00000000..d3ffe160 --- /dev/null +++ b/bsp/buildroot/package/php-amqp/php-amqp.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-amqp +# +################################################################################ + +PHP_AMQP_VERSION = 1.7.1 +PHP_AMQP_SOURCE = amqp-$(PHP_AMQP_VERSION).tgz +PHP_AMQP_SITE = https://pecl.php.net/get +PHP_AMQP_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-amqp=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_AMQP_DEPENDENCIES = rabbitmq-c php host-autoconf +PHP_AMQP_LICENSE = PHP +PHP_AMQP_LICENSE_FILES = LICENSE + +define PHP_AMQP_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/usr/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/usr/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_AMQP_PRE_CONFIGURE_HOOKS += PHP_AMQP_PHPIZE + +$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/php-imagick/php-imagick.hash b/bsp/buildroot/package/php-imagick/php-imagick.hash index 551bed62..e9912371 100644 --- a/bsp/buildroot/package/php-imagick/php-imagick.hash +++ b/bsp/buildroot/package/php-imagick/php-imagick.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 a729fbd69e0aa145824d61dc9225bfb636dcd8421874a5667ac3822e609449e1 imagick-3.4.1.tgz +sha256 50bbc46e78cd6e1ea5d7660be1722258e60b1729483ca14b02da7cf9f5ed3e6a imagick-3.4.3RC1.tgz diff --git a/bsp/buildroot/package/php-imagick/php-imagick.mk b/bsp/buildroot/package/php-imagick/php-imagick.mk index 84cc3119..ddcefdaa 100644 --- a/bsp/buildroot/package/php-imagick/php-imagick.mk +++ b/bsp/buildroot/package/php-imagick/php-imagick.mk @@ -4,7 +4,7 @@ # ################################################################################ -PHP_IMAGICK_VERSION = 3.4.1 +PHP_IMAGICK_VERSION = 3.4.3RC1 PHP_IMAGICK_SOURCE = imagick-$(PHP_IMAGICK_VERSION).tgz PHP_IMAGICK_SITE = http://pecl.php.net/get PHP_IMAGICK_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ diff --git a/bsp/buildroot/package/php-ssh2/Config.in b/bsp/buildroot/package/php-ssh2/Config.in index c795dd52..b4579007 100644 --- a/bsp/buildroot/package/php-ssh2/Config.in +++ b/bsp/buildroot/package/php-ssh2/Config.in @@ -1,8 +1,6 @@ config BR2_PACKAGE_PHP_SSH2 bool "php-ssh2" depends on BR2_PACKAGE_PHP - depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS \ - && !BR2_PACKAGE_OPENSSL # libssh2, libgcrypt select BR2_PACKAGE_LIBSSH2 help PHP bindings for the libssh2 library. diff --git a/bsp/buildroot/package/php-zmq/Config.in b/bsp/buildroot/package/php-zmq/Config.in index c2582725..058f93d9 100644 --- a/bsp/buildroot/package/php-zmq/Config.in +++ b/bsp/buildroot/package/php-zmq/Config.in @@ -1,12 +1,10 @@ -comment "php-zmq needs a toolchain w/ C++, wchar, threads" - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR \ - && BR2_TOOLCHAIN_HAS_THREADS) +comment "php-zmq needs a toolchain w/ C++, threads" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) config BR2_PACKAGE_PHP_ZMQ bool "php-zmq" depends on BR2_PACKAGE_PHP depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_WCHAR # util-linux depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_ZEROMQ help diff --git a/bsp/buildroot/package/php/0006-Fix-php-fpm.service.in.patch b/bsp/buildroot/package/php/0006-Fix-php-fpm.service.in.patch deleted file mode 100644 index 68cb50a3..00000000 --- a/bsp/buildroot/package/php/0006-Fix-php-fpm.service.in.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 1a8714d0b56e06301b3c261eaef93d897ec5d834 Mon Sep 17 00:00:00 2001 -From: Floris Bos -Date: Fri, 1 May 2015 15:28:55 +0200 -Subject: [PATCH] Fix php-fpm.service.in - -- Expand file paths. -- Remove obsolete After=syslog.target. Syslog is socket activated nowadays. - -Signed-off-by: Floris Bos ---- - sapi/fpm/php-fpm.service.in | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/sapi/fpm/php-fpm.service.in b/sapi/fpm/php-fpm.service.in -index a2df30e..c135f04 100644 ---- a/sapi/fpm/php-fpm.service.in -+++ b/sapi/fpm/php-fpm.service.in -@@ -1,11 +1,11 @@ - [Unit] - Description=The PHP FastCGI Process Manager --After=syslog.target network.target -+After=network.target - - [Service] - Type=@php_fpm_systemd@ --PIDFile=@localstatedir@/run/php-fpm.pid --ExecStart=@sbindir@/php-fpm --nodaemonize --fpm-config @sysconfdir@/php-fpm.conf -+PIDFile=@EXPANDED_LOCALSTATEDIR@/run/php-fpm.pid -+ExecStart=@EXPANDED_SBINDIR@/php-fpm --nodaemonize --fpm-config @EXPANDED_SYSCONFDIR@/php-fpm.conf - ExecReload=/bin/kill -USR2 $MAINPID - - [Install] --- -2.7.4 - diff --git a/bsp/buildroot/package/php/0007-avoid-bfin-gcc-segfault.patch b/bsp/buildroot/package/php/0007-avoid-bfin-gcc-segfault.patch new file mode 100644 index 00000000..4dccb25f --- /dev/null +++ b/bsp/buildroot/package/php/0007-avoid-bfin-gcc-segfault.patch @@ -0,0 +1,16 @@ +Avoid gcc segmentation fault + +Signed-off-by: Waldemar Brodkorb + +diff -Nur php-7.0.12.orig/Zend/zend_portability.h php-7.0.12/Zend/zend_portability.h +--- php-7.0.12.orig/Zend/zend_portability.h 2016-10-13 16:04:17.000000000 +0200 ++++ php-7.0.12/Zend/zend_portability.h 2016-11-08 02:49:39.118388999 +0100 +@@ -97,7 +97,7 @@ + + #if defined(ZEND_WIN32) && !defined(__clang__) + # define ZEND_ASSUME(c) __assume(c) +-#elif ((defined(__GNUC__) && ZEND_GCC_VERSION >= 4005) || __has_builtin(__builtin_unreachable)) && PHP_HAVE_BUILTIN_EXPECT ++#elif ((defined(__GNUC__) && ZEND_GCC_VERSION >= 4005) || __has_builtin(__builtin_unreachable)) && PHP_HAVE_BUILTIN_EXPECT && !defined(__bfin__) + # define ZEND_ASSUME(c) do { \ + if (__builtin_expect(!(c), 0)) __builtin_unreachable(); \ + } while (0) diff --git a/bsp/buildroot/package/php/0007-phpdbg_prompt-enclose-phpdbg_load_module_or_extensio.patch b/bsp/buildroot/package/php/0007-phpdbg_prompt-enclose-phpdbg_load_module_or_extensio.patch deleted file mode 100644 index 006a0348..00000000 --- a/bsp/buildroot/package/php/0007-phpdbg_prompt-enclose-phpdbg_load_module_or_extensio.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 9ca3de0446fcd31b1561b333020ae0674a83bec7 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Tue, 9 Aug 2016 11:39:10 +0200 -Subject: [PATCH] phpdbg_prompt: enclose phpdbg_load_module_or_extension() in - HAVE_LIBDL - -The phpdbg_load_module_or_extension() function relies on libdl -functionality, so it should be enclosed in HAVE_LIBDL to avoid the -following build failure when libdl support is not available: - -php-7.0.9/sapi/phpdbg/phpdbg_prompt.c:(.text+0x1c20): undefined reference to `_DL_LOAD' -php-7.0.9/sapi/phpdbg/phpdbg_prompt.c:(.text+0x1c36): undefined reference to `_GET_DL_ERROR' -php-7.0.9/sapi/phpdbg/phpdbg_prompt.c:(.text+0x1c6a): undefined reference to `_DL_FETCH_SYMBOL' -php-7.0.9/sapi/phpdbg/phpdbg_prompt.c:(.text+0x1c7e): undefined reference to `_DL_FETCH_SYMBOL' -php-7.0.9/sapi/phpdbg/phpdbg_prompt.c:(.text+0x1dc6): undefined reference to `_DL_UNLOAD' - -This function is only called in the "dl" debug command, inside an -HAVE_LIBDL condition. - -Signed-off-by: Thomas Petazzoni ---- - sapi/phpdbg/phpdbg_prompt.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c -index 6f73d30..6768dc5 100644 ---- a/sapi/phpdbg/phpdbg_prompt.c -+++ b/sapi/phpdbg/phpdbg_prompt.c -@@ -1019,6 +1019,7 @@ static int add_zendext_info(zend_extension *ext) /* {{{ */ { - } - /* }}} */ - -+#ifdef HAVE_LIBDL - PHPDBG_API const char *phpdbg_load_module_or_extension(char **path, char **name) /* {{{ */ { - DL_HANDLE handle; - char *extension_dir; -@@ -1158,6 +1159,7 @@ quit: - DL_UNLOAD(handle); - return NULL; - } -+#endif - /* }}} */ - - PHPDBG_COMMAND(dl) /* {{{ */ --- -2.7.4 - diff --git a/bsp/buildroot/package/php/0008-fix-asm-constraints-in-aarch64-multiply-macro.patch b/bsp/buildroot/package/php/0008-fix-asm-constraints-in-aarch64-multiply-macro.patch new file mode 100644 index 00000000..f4812daa --- /dev/null +++ b/bsp/buildroot/package/php/0008-fix-asm-constraints-in-aarch64-multiply-macro.patch @@ -0,0 +1,28 @@ +From 1622f24fde4220967bd907bf8f0325d444bf9339 Mon Sep 17 00:00:00 2001 +From: Andy Postnikov +Date: Sat, 10 Dec 2016 23:51:17 +0300 +Subject: [PATCH] Fix bug #70015 - Compilation failure on aarch64 + +Fixes build at -O0. + +[From pull request https://github.com/php/php-src/pull/2236.] +Signed-off-by: Tatsuyuki Ishi +--- + Zend/zend_multiply.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h +index 75769db..fbd69ab 100644 +--- a/Zend/zend_multiply.h ++++ b/Zend/zend_multiply.h +@@ -75,8 +75,8 @@ + __asm__("mul %0, %2, %3\n" \ + "smulh %1, %2, %3\n" \ + "sub %1, %1, %0, asr #63\n" \ +- : "=X"(__tmpvar), "=X"(usedval) \ +- : "X"(a), "X"(b)); \ ++ : "=&r"(__tmpvar), "=&r"(usedval) \ ++ : "r"(a), "r"(b)); \ + if (usedval) (dval) = (double) (a) * (double) (b); \ + else (lval) = __tmpvar; \ + } while (0) diff --git a/bsp/buildroot/package/php/0009-Call-apxs-with-correct-prefix.patch b/bsp/buildroot/package/php/0009-Call-apxs-with-correct-prefix.patch new file mode 100644 index 00000000..b850ab77 --- /dev/null +++ b/bsp/buildroot/package/php/0009-Call-apxs-with-correct-prefix.patch @@ -0,0 +1,49 @@ +From 4342bdea7a1a21430ce0d051fa4387441166c473 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 11 Dec 2016 23:12:46 +0100 +Subject: [PATCH] Call apxs with correct prefix + +php uses apache's apxs script from staging directory to install libphp +dynamic library and update /etc/apache2/httpd.conf in the staging and target +directories. Here is the full command line: +"apxs -S LIBEXECDIR='$(INSTALL_ROOT)/usr/modules' + -S SYSCONFDIR='$(INSTALL_ROOT)/etc/apache2' -i -a -n php7" +This does not work for target directory as apxs sets the full path of the +library and not the relative one. Indeed, apxs is smart enough to substitute +away the prefix specified in $(STAGING_DIR)/usr/build/config_vars.mk so +httpd.conf will only be correct in the staging directory. +To fix this, add -S PREFIX='$(INSTALL_ROOT)/usr' to apxs call in configure + +Signed-off-by: Fabrice Fontaine +--- + sapi/apache2handler/config.m4 | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/sapi/apache2handler/config.m4 b/sapi/apache2handler/config.m4 +index 2e64b21..f5bf002 100644 +--- a/sapi/apache2handler/config.m4 ++++ b/sapi/apache2handler/config.m4 +@@ -66,10 +66,12 @@ if test "$PHP_APXS2" != "no"; then + AC_MSG_ERROR([Please note that Apache version >= 2.0.44 is required]) + fi + ++ APXS_PREFIX='$(INSTALL_ROOT)'/usr + APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR` + if test -z `$APXS -q SYSCONFDIR`; then + INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \ + $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \ ++ -S PREFIX='$APXS_PREFIX' \ + -i -n php7" + else + APXS_SYSCONFDIR='$(INSTALL_ROOT)'`$APXS -q SYSCONFDIR` +@@ -77,6 +79,7 @@ if test "$PHP_APXS2" != "no"; then + \$(mkinstalldirs) '$APXS_SYSCONFDIR' && \ + $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \ + -S SYSCONFDIR='$APXS_SYSCONFDIR' \ ++ -S PREFIX='$APXS_PREFIX' \ + -i -a -n php7" + fi + +-- +2.5.0 + diff --git a/bsp/buildroot/package/php/Config.ext b/bsp/buildroot/package/php/Config.ext index 82aaf41e..7c3ba7e8 100644 --- a/bsp/buildroot/package/php/Config.ext +++ b/bsp/buildroot/package/php/Config.ext @@ -113,10 +113,6 @@ endif config BR2_PACKAGE_PHP_EXT_MYSQLI bool "Mysqli" - depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_MMU # mysql - depends on BR2_TOOLCHAIN_HAS_THREADS # mysql - select BR2_PACKAGE_MYSQL help MySQL Improved extension support @@ -135,17 +131,9 @@ if BR2_PACKAGE_PHP_EXT_PDO config BR2_PACKAGE_PHP_EXT_PDO_MYSQL bool "MySQL" - depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_MMU # mysql - depends on BR2_TOOLCHAIN_HAS_THREADS # mysql - select BR2_PACKAGE_MYSQL help PDO driver for MySQL -comment "MySQL drivers need a toolchain w/ C++, threads" - depends on BR2_USE_MMU - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS - config BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL bool "PostgreSQL" select BR2_PACKAGE_POSTGRESQL diff --git a/bsp/buildroot/package/php/Config.in b/bsp/buildroot/package/php/Config.in index eee8d264..0fb80063 100644 --- a/bsp/buildroot/package/php/Config.in +++ b/bsp/buildroot/package/php/Config.in @@ -1,5 +1,11 @@ config BR2_PACKAGE_PHP bool "php" + select BR2_PACKAGE_PHP_SAPI_CGI if \ + !BR2_PACKAGE_PHP_SAPI_APACHE && \ + !BR2_PACKAGE_PHP_SAPI_CLI && \ + !BR2_PACKAGE_PHP_SAPI_FPM && \ + BR2_USE_MMU + select BR2_PACKAGE_PHP_SAPI_CLI if !BR2_USE_MMU help PHP is a widely-used general-purpose scripting language that is especially suited for Web development @@ -9,61 +15,32 @@ config BR2_PACKAGE_PHP if BR2_PACKAGE_PHP -config BR2_PACKAGE_PHP_CLI - bool - -config BR2_PACKAGE_PHP_CGI - bool - -config BR2_PACKAGE_PHP_FPM - bool - -choice - prompt "Interface" - default BR2_PACKAGE_PHP_SAPI_CGI +config BR2_PACKAGE_PHP_SAPI_APACHE + bool "Apache interface" + depends on BR2_PACKAGE_APACHE help - Select the PHP interface(s). + Apache module config BR2_PACKAGE_PHP_SAPI_CGI - bool "CGI" + bool "CGI interface" # CGI uses fork() depends on BR2_USE_MMU - select BR2_PACKAGE_PHP_CGI help Common Gateway Interface config BR2_PACKAGE_PHP_SAPI_CLI - bool "CLI" - select BR2_PACKAGE_PHP_CLI + bool "CLI interface" help Command Line Interface config BR2_PACKAGE_PHP_SAPI_FPM - bool "FPM" + bool "FPM interface" depends on BR2_USE_MMU - select BR2_PACKAGE_PHP_FPM + # "Sparc v8 and predecessors are not and will not be supported" + depends on !BR2_sparc help PHP-FPM (FastCGI Process Manager) -config BR2_PACKAGE_PHP_SAPI_CLI_CGI - bool "CGI and CLI" - # CGI uses fork() - depends on BR2_USE_MMU - select BR2_PACKAGE_PHP_CLI - select BR2_PACKAGE_PHP_CGI - help - Command line and Common gateway interfaces - -config BR2_PACKAGE_PHP_SAPI_CLI_FPM - bool "FPM and CLI" - depends on BR2_USE_MMU - select BR2_PACKAGE_PHP_CLI - select BR2_PACKAGE_PHP_FPM - help - Command line and PHP-FPM (FastCGI Process Manager) - -endchoice - source "package/php/Config.ext" endif diff --git a/bsp/buildroot/package/php/php-fpm.conf b/bsp/buildroot/package/php/php-fpm.conf index b75a58fe..88014b8c 100644 --- a/bsp/buildroot/package/php/php-fpm.conf +++ b/bsp/buildroot/package/php/php-fpm.conf @@ -1,9 +1,6 @@ [www] -# Only start children when there are requests to be processed pm = ondemand -# Terminate them again after there haven't been any for 2 minutes pm.process_idle_timeout = 120s -# Maximum number of children processing PHP requests concurrently pm.max_children = 5 listen = /var/run/php-fpm.sock diff --git a/bsp/buildroot/package/php/php.hash b/bsp/buildroot/package/php/php.hash index 6e146f81..9c94b9e4 100644 --- a/bsp/buildroot/package/php/php.hash +++ b/bsp/buildroot/package/php/php.hash @@ -1,2 +1,2 @@ # From http://php.net/downloads.php -sha256 970c322ba3e472cb0264b8ba9d4d92e87918da5d0cca53c4aba2a70545b8626d php-7.0.9.tar.xz +sha256 b3565b0c1441064eba204821608df1ec7367abff881286898d900c2c2a5ffe70 php-7.1.1.tar.xz diff --git a/bsp/buildroot/package/php/php.mk b/bsp/buildroot/package/php/php.mk index d7e27a13..1379ad57 100644 --- a/bsp/buildroot/package/php/php.mk +++ b/bsp/buildroot/package/php/php.mk @@ -4,7 +4,7 @@ # ################################################################################ -PHP_VERSION = 7.0.9 +PHP_VERSION = 7.1.1 PHP_SITE = http://www.php.net/distributions PHP_SOURCE = php-$(PHP_VERSION).tar.xz PHP_INSTALL_STAGING = YES @@ -19,6 +19,7 @@ PHP_CONF_OPTS = \ --disable-all \ --without-pear \ --with-config-file-path=/etc \ + --disable-phpdbg \ --disable-rpath PHP_CONF_ENV = \ ac_cv_func_strcasestr=yes \ @@ -76,9 +77,19 @@ else PHP_CONF_ENV += ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=no endif -PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_CLI),,--disable-cli) -PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_CGI),,--disable-cgi) -PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_FPM),--enable-fpm,--disable-fpm) +PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_SAPI_CLI),--enable-cli,--disable-cli) +PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_SAPI_CGI),--enable-cgi,--disable-cgi) +PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_SAPI_FPM),--enable-fpm,--disable-fpm) + +ifeq ($(BR2_PACKAGE_PHP_SAPI_APACHE),y) +PHP_DEPENDENCIES += apache +PHP_CONF_OPTS += --with-apxs2=$(STAGING_DIR)/usr/bin/apxs + +# Enable thread safety option if Apache MPM is event or worker +ifeq ($(BR2_PACKAGE_APACHE_MPM_EVENT)$(BR2_PACKAGE_APACHE_MPM_WORKER),y) +PHP_CONF_OPTS += --enable-maintainer-zts +endif +endif ### Extensions PHP_CONF_OPTS += \ @@ -181,8 +192,7 @@ endif ### Native SQL extensions ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQLI),y) -PHP_CONF_OPTS += --with-mysqli=$(STAGING_DIR)/usr/bin/mysql_config -PHP_DEPENDENCIES += mysql +PHP_CONF_OPTS += --with-mysqli endif ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE),y) PHP_CONF_OPTS += --with-sqlite3=$(STAGING_DIR)/usr @@ -199,8 +209,7 @@ PHP_DEPENDENCIES += sqlite PHP_CFLAGS += -DSQLITE_OMIT_LOAD_EXTENSION endif ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y) -PHP_CONF_OPTS += --with-pdo-mysql=$(STAGING_DIR)/usr -PHP_DEPENDENCIES += mysql +PHP_CONF_OPTS += --with-pdo-mysql endif ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL),y) PHP_CONF_OPTS += --with-pdo-pgsql=$(STAGING_DIR)/usr @@ -212,6 +221,11 @@ PHP_DEPENDENCIES += unixodbc endif endif +ifneq ($(BR2_PACKAGE_PHP_EXT_MYSQLI)$(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),) +# Set default MySQL unix socket to what the MySQL server is using by default +PHP_CONF_OPTS += --with-mysql-sock=$(MYSQL_SOCKET) +endif + define PHP_DISABLE_PCRE_JIT $(SED) '/^#define SUPPORT_JIT/d' $(@D)/ext/pcre/pcrelib/config.h endef @@ -281,7 +295,7 @@ PHP_CONF_OPTS += \ PHP_DEPENDENCIES += jpeg libpng freetype endif -ifeq ($(BR2_PACKAGE_PHP_FPM),y) +ifeq ($(BR2_PACKAGE_PHP_SAPI_FPM),y) define PHP_INSTALL_INIT_SYSV $(INSTALL) -D -m 0755 $(@D)/sapi/fpm/init.d.php-fpm \ $(TARGET_DIR)/etc/init.d/S49php-fpm diff --git a/bsp/buildroot/package/pifmrds/pifmrds.mk b/bsp/buildroot/package/pifmrds/pifmrds.mk index 51797152..a30c0136 100644 --- a/bsp/buildroot/package/pifmrds/pifmrds.mk +++ b/bsp/buildroot/package/pifmrds/pifmrds.mk @@ -11,7 +11,7 @@ PIFMRDS_LICENSE = GPLv3+ PIFMRDS_LICENSE_FILES = LICENSE define PIFMRDS_BUILD_CMDS - $(MAKE) -C $(@D)/src CC="$(TARGET_CC)" LDFLAGS="$(TARGET_LDFLAGS)" \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src CC="$(TARGET_CC)" LDFLAGS="$(TARGET_LDFLAGS)" \ CFLAGS="$(TARGET_CFLAGS) -std=gnu99 -ffast-math -c" \ app rds_wav endef diff --git a/bsp/buildroot/package/pkg-autotools.mk b/bsp/buildroot/package/pkg-autotools.mk index d1cdb89f..f7b84888 100644 --- a/bsp/buildroot/package/pkg-autotools.mk +++ b/bsp/buildroot/package/pkg-autotools.mk @@ -59,7 +59,7 @@ endef # define LIBTOOL_PATCH_HOOK @$(call MESSAGE,"Patching libtool") - $(Q)for i in `find $($(PKG)_SRCDIR) -name ltmain.sh`; do \ + $(Q)for i in `find $($(PKG)_DIR) -name ltmain.sh`; do \ ltmain_version=`sed -n '/^[ \t]*VERSION=/{s/^[ \t]*VERSION=//;p;q;}' $$i | \ sed -e 's/\([0-9]*\.[0-9]*\).*/\1/' -e 's/\"//'`; \ ltmain_patchlevel=`sed -n '/^[ \t]*VERSION=/{s/^[ \t]*VERSION=//;p;q;}' $$i | \ @@ -78,6 +78,15 @@ define LIBTOOL_PATCH_HOOK done endef +# +# Hook to patch common issue with configure on powerpc64{,le} failing +# to detect shared library support: +# +define CONFIGURE_FIX_POWERPC64_HOOK + @$(call MESSAGE,"Checking configure (powerpc64/powerpc64le)") + support/scripts/fix-configure-powerpc64.sh $($(PKG)_DIR) +endef + # # Hook to gettextize the package if needed # @@ -255,6 +264,13 @@ endif endif +# Append a configure hook if building for a powerpc64 (or powerpc64le) arch. +# Must be added after other pre-configure hooks that might regenerate the +# configure script and overwrite the changes made here. +ifneq ($$(filter powerpc64%,$$(if $$(filter target,$(4)),$$(ARCH),$$(HOSTARCH))),) +$(2)_PRE_CONFIGURE_HOOKS += CONFIGURE_FIX_POWERPC64_HOOK +endif + # # Build step. Only define it if not already defined by the package .mk # file. diff --git a/bsp/buildroot/package/pkg-cmake.mk b/bsp/buildroot/package/pkg-cmake.mk index 13206dd9..a7c8dc3b 100644 --- a/bsp/buildroot/package/pkg-cmake.mk +++ b/bsp/buildroot/package/pkg-cmake.mk @@ -87,7 +87,6 @@ define $(2)_CONFIGURE_CMDS PATH=$$(BR_PATH) \ $$($$(PKG)_CONF_ENV) $$(BR2_CMAKE) $$($$(PKG)_SRCDIR) \ -DCMAKE_TOOLCHAIN_FILE="$$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake" \ - -DCMAKE_BUILD_TYPE=$$(if $$(BR2_ENABLE_DEBUG),RelWithDebInfo,Release) \ -DCMAKE_INSTALL_PREFIX="/usr" \ -DCMAKE_COLOR_MAKEFILE=OFF \ -DBUILD_DOC=OFF \ @@ -146,9 +145,7 @@ endif # primitives to find {C,LD}FLAGS, add it to the dependency list. $(2)_DEPENDENCIES += host-pkgconf -ifneq ($$(USE_SYSTEM_CMAKE),YES) - $(2)_DEPENDENCIES += host-cmake -endif +$(2)_DEPENDENCIES += $(BR2_CMAKE_HOST_DEPENDENCY) # # Build step. Only define it if not already defined by the package .mk @@ -249,5 +246,6 @@ $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake: -e 's#@@TARGET_FC@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_FC)))#' \ -e 's#@@CMAKE_SYSTEM_PROCESSOR@@#$(call qstrip,$(CMAKE_SYSTEM_PROCESSOR))#' \ -e 's#@@TOOLCHAIN_HAS_FORTRAN@@#$(if $(BR2_TOOLCHAIN_HAS_FORTRAN),1,0)#' \ + -e 's#@@CMAKE_BUILD_TYPE@@#$(if $(BR2_ENABLE_DEBUG),Debug,Release)#' \ $(TOPDIR)/support/misc/toolchainfile.cmake.in \ > $@ diff --git a/bsp/buildroot/package/pkg-download.mk b/bsp/buildroot/package/pkg-download.mk index 315203f3..cfc550e7 100644 --- a/bsp/buildroot/package/pkg-download.mk +++ b/bsp/buildroot/package/pkg-download.mk @@ -81,7 +81,8 @@ define DOWNLOAD_GIT -- \ $($(PKG)_SITE) \ $($(PKG)_DL_VERSION) \ - $($(PKG)_BASE_NAME) + $($(PKG)_RAW_BASE_NAME) \ + $($(PKG)_DL_OPTS) endef # TODO: improve to check that the given PKG_DL_VERSION exists on the remote @@ -97,7 +98,8 @@ define DOWNLOAD_BZR -- \ $($(PKG)_SITE) \ $($(PKG)_DL_VERSION) \ - $($(PKG)_BASE_NAME) + $($(PKG)_RAW_BASE_NAME) \ + $($(PKG)_DL_OPTS) endef define SOURCE_CHECK_BZR @@ -112,7 +114,8 @@ define DOWNLOAD_CVS $(call stripurischeme,$(call qstrip,$($(PKG)_SITE))) \ $($(PKG)_DL_VERSION) \ $($(PKG)_RAWNAME) \ - $($(PKG)_BASE_NAME) + $($(PKG)_RAW_BASE_NAME) \ + $($(PKG)_DL_OPTS) endef # Not all CVS servers support ls/rls, use login to see if we can connect @@ -127,7 +130,8 @@ define DOWNLOAD_SVN -- \ $($(PKG)_SITE) \ $($(PKG)_DL_VERSION) \ - $($(PKG)_BASE_NAME) + $($(PKG)_RAW_BASE_NAME) \ + $($(PKG)_DL_OPTS) endef define SOURCE_CHECK_SVN @@ -143,7 +147,8 @@ define DOWNLOAD_SCP -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ $(QUIET) \ -- \ - '$(call stripurischeme,$(call qstrip,$(1)))' + '$(call stripurischeme,$(call qstrip,$(1)))' \ + $($(PKG)_DL_OPTS) endef define SOURCE_CHECK_SCP @@ -157,7 +162,8 @@ define DOWNLOAD_HG -- \ $($(PKG)_SITE) \ $($(PKG)_DL_VERSION) \ - $($(PKG)_BASE_NAME) + $($(PKG)_RAW_BASE_NAME) \ + $($(PKG)_DL_OPTS) endef # TODO: improve to check that the given PKG_DL_VERSION exists on the remote @@ -172,7 +178,8 @@ define DOWNLOAD_WGET -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ $(QUIET) \ -- \ - '$(call qstrip,$(1))' + '$(call qstrip,$(1))' \ + $($(PKG)_DL_OPTS) endef define SOURCE_CHECK_WGET @@ -185,7 +192,8 @@ define DOWNLOAD_LOCALFILES -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ $(QUIET) \ -- \ - $(call stripurischeme,$(call qstrip,$(1))) + $(call stripurischeme,$(call qstrip,$(1))) \ + $($(PKG)_DL_OPTS) endef define SOURCE_CHECK_LOCALFILES @@ -202,6 +210,10 @@ endef # # E.G. use like this: # $(call DOWNLOAD,$(FOO_SITE)) +# +# For PRIMARY and BACKUP site, any ? in the URL is replaced by %3F. A ? in +# the URL is used to separate query arguments, but the PRIMARY and BACKUP +# sites serve just plain files. ################################################################################ define DOWNLOAD @@ -218,7 +230,7 @@ define DOWNLOAD_INNER case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \ file) $(call $(3)_LOCALFILES,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \ scp) $(call $(3)_SCP,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \ - *) $(call $(3)_WGET,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \ + *) $(call $(3)_WGET,$(BR2_PRIMARY_SITE)/$(subst ?,%3F,$(2)),$(2)) && exit ;; \ esac ; \ fi ; \ if test "$(BR2_PRIMARY_SITE_ONLY)" = "y" ; then \ @@ -237,7 +249,7 @@ define DOWNLOAD_INNER esac ; \ fi ; \ if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \ - $(call $(3)_WGET,$(BR2_BACKUP_SITE)/$(2),$(2)) && exit ; \ + $(call $(3)_WGET,$(BR2_BACKUP_SITE)/$(subst ?,%3F,$(2)),$(2)) && exit ; \ fi ; \ exit 1 endef diff --git a/bsp/buildroot/package/pkg-generic.mk b/bsp/buildroot/package/pkg-generic.mk index 68ead3d1..e8a8021e 100644 --- a/bsp/buildroot/package/pkg-generic.mk +++ b/bsp/buildroot/package/pkg-generic.mk @@ -95,6 +95,21 @@ define check_host_rpath endef GLOBAL_INSTRUMENTATION_HOOKS += check_host_rpath +define step_check_build_dir_one + if [ -d $(2) ]; then \ + printf "%s: installs files in %s\n" $(1) $(2) >&2; \ + exit 1; \ + fi +endef + +define step_check_build_dir + $(if $(filter install-staging,$(2)),\ + $(if $(filter end,$(1)),$(call step_check_build_dir_one,$(3),$(STAGING_DIR)/$(O)))) + $(if $(filter install-target,$(2)),\ + $(if $(filter end,$(1)),$(call step_check_build_dir_one,$(3),$(TARGET_DIR)/$(O)))) +endef +GLOBAL_INSTRUMENTATION_HOOKS += step_check_build_dir + # User-supplied script ifneq ($(BR2_INSTRUMENTATION_SCRIPTS),) define step_user @@ -146,8 +161,8 @@ $(BUILD_DIR)/%/.stamp_extracted: # used. $(BUILD_DIR)/%/.stamp_rsynced: @$(call MESSAGE,"Syncing from source dir $(SRCDIR)") - @test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1) $(foreach hook,$($(PKG)_PRE_RSYNC_HOOKS),$(call $(hook))$(sep)) + @test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1) rsync -au --chmod=u=rwX,go=rX $(RSYNC_VCS_EXCLUSIONS) $(call qstrip,$(SRCDIR))/ $(@D) $(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ @@ -317,6 +332,16 @@ be selected at a time. Please fix your configuration) endif endef +define pkg-graph-depends + @$$(INSTALL) -d $$(GRAPHS_DIR) + @cd "$$(CONFIG_DIR)"; \ + $$(TOPDIR)/support/scripts/graph-depends $$(BR2_GRAPH_DEPS_OPTS) \ + -p $(1) $(2) -o $$(GRAPHS_DIR)/$$(@).dot + dot $$(BR2_GRAPH_DOT_OPTS) -T$$(BR_GRAPH_OUT) \ + -o $$(GRAPHS_DIR)/$$(@).$$(BR_GRAPH_OUT) \ + $$(GRAPHS_DIR)/$$(@).dot +endef + ################################################################################ # inner-generic-package -- generates the make targets needed to build a # generic package @@ -698,14 +723,14 @@ $(1)-show-version: $(1)-show-depends: @echo $$($(2)_FINAL_ALL_DEPENDENCIES) +$(1)-show-rdepends: + @echo $$($(2)_RDEPENDENCIES) + $(1)-graph-depends: graph-depends-requirements - @$$(INSTALL) -d $$(GRAPHS_DIR) - @cd "$$(CONFIG_DIR)"; \ - $$(TOPDIR)/support/scripts/graph-depends $$(BR2_GRAPH_DEPS_OPTS) \ - -p $(1) -o $$(GRAPHS_DIR)/$$(@).dot - dot $$(BR2_GRAPH_DOT_OPTS) -T$$(BR_GRAPH_OUT) \ - -o $$(GRAPHS_DIR)/$$(@).$$(BR_GRAPH_OUT) \ - $$(GRAPHS_DIR)/$$(@).dot + $(call pkg-graph-depends,$(1),--direct) + +$(1)-graph-rdepends: graph-depends-requirements + $(call pkg-graph-depends,$(1),--reverse) $(1)-all-source: $(1)-source $(1)-all-source: $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-source) @@ -767,9 +792,9 @@ $$($(2)_TARGET_DIRCLEAN): PKG=$(2) # kernel case, the bootloaders case, and the normal packages case. ifeq ($(1),linux) $(2)_KCONFIG_VAR = BR2_LINUX_KERNEL -else ifneq ($$(filter boot/% $(BR2_EXTERNAL)/boot/%,$(pkgdir)),) +else ifneq ($$(filter boot/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/boot/%),$(pkgdir)),) $(2)_KCONFIG_VAR = BR2_TARGET_$(2) -else ifneq ($$(filter toolchain/% $(BR2_EXTERNAL)/toolchain/%,$(pkgdir)),) +else ifneq ($$(filter toolchain/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/toolchain/%),$(pkgdir)),) $(2)_KCONFIG_VAR = BR2_$(2) else $(2)_KCONFIG_VAR = BR2_PACKAGE_$(2) @@ -779,7 +804,6 @@ endif ifneq ($$($(2)_LICENSE_FILES),) $(2)_MANIFEST_LICENSE_FILES = $$($(2)_LICENSE_FILES) endif -$(2)_MANIFEST_LICENSE_FILES ?= not saved # We need to extract and patch a package to be able to retrieve its # license files (if any) and the list of patches applied to it (if @@ -808,7 +832,6 @@ ifneq ($$(call qstrip,$$($(2)_SOURCE)),) # is that the license still applies to the files distributed as part # of the rootfs, even if the sources are not themselves redistributed. ifeq ($$(call qstrip,$$($(2)_LICENSE_FILES)),) - @$$(call legal-license-nofiles,$$($(2)_RAW_BASE_NAME),$$(call UPPERCASE,$(4))) @$$(call legal-warning-pkg,$$($(2)_RAW_BASE_NAME),cannot save license ($(2)_LICENSE_FILES not defined)) else @$$(foreach F,$$($(2)_LICENSE_FILES),$$(call legal-license-file,$$($(2)_RAW_BASE_NAME),$$(F),$$($(2)_DIR)/$$(F),$$(call UPPERCASE,$(4)))$$(sep)) @@ -856,6 +879,10 @@ $$(foreach pkg,$$($(2)_PROVIDES),\ $$(eval $$(call virt-provides-single,$$(pkg),$$(call UPPERCASE,$$(pkg)),$(1))$$(sep))) endif +# Register package as a reverse-dependencies of all its dependencies +$$(eval $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),\ + $$(call UPPERCASE,$$(p))_RDEPENDENCIES += $(1)$$(sep))) + # Ensure unified variable name conventions between all packages Some # of the variables are used by more than one infrastructure; so, # rather than duplicating the checks in each infrastructure, we check @@ -899,13 +926,7 @@ else ifeq ($$($(2)_SITE_METHOD),cvs) DL_TOOLS_DEPENDENCIES += cvs endif # SITE_METHOD -# $(firstword) is used here because the extractor can have arguments, like -# ZCAT="gzip -d -c", and to check for the dependency we only want 'gzip'. -# Do not add xzcat to the list of required dependencies, as it gets built -# automatically if it isn't found. -ifneq ($$(call suitable-extractor,$$($(2)_SOURCE)),$$(XZCAT)) -DL_TOOLS_DEPENDENCIES += $$(firstword $$(call suitable-extractor,$$($(2)_SOURCE))) -endif +DL_TOOLS_DEPENDENCIES += $$(call extractor-dependency,$$($(2)_SOURCE)) # Ensure all virtual targets are PHONY. Listed alphabetically. .PHONY: $(1) \ diff --git a/bsp/buildroot/package/pkg-kconfig.mk b/bsp/buildroot/package/pkg-kconfig.mk index b0f51789..215f01b4 100644 --- a/bsp/buildroot/package/pkg-kconfig.mk +++ b/bsp/buildroot/package/pkg-kconfig.mk @@ -36,6 +36,7 @@ $(2)_KCONFIG_EDITORS ?= menuconfig $(2)_KCONFIG_OPTS ?= $(2)_KCONFIG_FIXUP_CMDS ?= $(2)_KCONFIG_FRAGMENT_FILES ?= +$(2)_KCONFIG_DOTCONFIG ?= .config # The config file as well as the fragments could be in-tree, so before # depending on them the package should be extracted (and patched) first. @@ -91,10 +92,10 @@ endef # fragments are merged together to .config, after the package has been patched. # Since the file could be a defconfig file it needs to be expanded to a # full .config first. -$$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES) +$$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG): $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES) $$(Q)$$(if $$($(2)_KCONFIG_DEFCONFIG), \ $$($(2)_KCONFIG_MAKE) $$($(2)_KCONFIG_DEFCONFIG), \ - cp $$($(2)_KCONFIG_FILE) $$(@)) + $$(INSTALL) -m 0644 -D $$($(2)_KCONFIG_FILE) $$(@)) $$(Q)support/kconfig/merge_config.sh -m -O $$(@D) \ $$(@) $$($(2)_KCONFIG_FRAGMENT_FILES) $$($(2)_REGEN_DOT_CONFIG) @@ -102,7 +103,7 @@ $$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES) # If _KCONFIG_FILE or _KCONFIG_FRAGMENT_FILES exists, this dependency is # already implied, but if we only have a _KCONFIG_DEFCONFIG we have to add # it explicitly. It doesn't hurt to always have it though. -$$($(2)_DIR)/.config: | $(1)-patch +$$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG): | $(1)-patch # In order to get a usable, consistent configuration, some fixup may be needed. # The exact rules are specified by the package .mk file. @@ -112,12 +113,18 @@ define $(2)_FIXUP_DOT_CONFIG $$(Q)touch $$($(2)_DIR)/.stamp_kconfig_fixup_done endef -$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/.config +$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_FIXUP_DOT_CONFIG) # Before running configure, the configuration file should be present and fixed $$($(2)_TARGET_CONFIGURE): $$($(2)_DIR)/.stamp_kconfig_fixup_done +# Force olddefconfig again on -reconfigure +$(1)-clean-for-reconfigure: $(1)-clean-kconfig-for-reconfigure + +$(1)-clean-kconfig-for-reconfigure: + rm -f $$($(2)_DIR)/.stamp_kconfig_fixup_done + # Only enable the foo-*config targets when the package is actually enabled. # Note: the variable $(2)_KCONFIG_VAR is not related to the kconfig # infrastructure, but defined by pkg-generic.mk. The generic infrastructure is @@ -202,8 +209,8 @@ $(1)-update-config: $(1)-check-configuration-done echo "Unable to perform $(1)-update-config when fragment files are set"; exit 1) @$$(if $$($(2)_KCONFIG_DEFCONFIG), \ echo "Unable to perform $(1)-update-config when using a defconfig rule"; exit 1) - cp -f $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE) - touch --reference $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE) + cp -f $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FILE) + touch --reference $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FILE) # Note: make sure the timestamp of the stored configuration is not newer than # the .config to avoid a useless rebuild. Note that, contrary to @@ -215,7 +222,7 @@ $(1)-update-defconfig: $(1)-savedefconfig @$$(if $$($(2)_KCONFIG_DEFCONFIG), \ echo "Unable to perform $(1)-update-defconfig when using a defconfig rule"; exit 1) cp -f $$($(2)_DIR)/defconfig $$($(2)_KCONFIG_FILE) - touch --reference $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE) + touch --reference $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FILE) endif # package enabled diff --git a/bsp/buildroot/package/pkg-perl.mk b/bsp/buildroot/package/pkg-perl.mk index a0278101..cc94cd9f 100644 --- a/bsp/buildroot/package/pkg-perl.mk +++ b/bsp/buildroot/package/pkg-perl.mk @@ -20,7 +20,7 @@ ################################################################################ PERL_ARCHNAME = $(ARCH)-linux -PERL_RUN = PERL5LIB= $(HOST_DIR)/usr/bin/perl +PERL_RUN = PERL5LIB= PERL_USE_UNSAFE_INC=1 $(HOST_DIR)/usr/bin/perl ################################################################################ # inner-perl-package -- defines how the configuration, compilation and @@ -49,6 +49,14 @@ else $(2)_DEPENDENCIES += host-perl endif +# From http://perldoc.perl.org/CPAN.html#Config-Variables - prefer_installer +# legal values are MB and EUMM: if a module comes +# with both a Makefile.PL and a Build.PL, use the +# former (EUMM) or the latter (MB); if the module +# comes with only one of the two, that one will be +# used no matter the setting +$(2)_PREFER_INSTALLER ?= MB + # # Configure step. Only define it if not already defined by the package # .mk file. And take care of the differences between host and target @@ -59,7 +67,7 @@ ifeq ($(4),target) # Configure package for target define $(2)_CONFIGURE_CMDS - cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ $$($(2)_CONF_ENV) \ PERL_MM_USE_DEFAULT=1 \ $$(PERL_RUN) Build.PL \ @@ -109,7 +117,7 @@ else # Configure package for host define $(2)_CONFIGURE_CMDS - cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ $$($(2)_CONF_ENV) \ PERL_MM_USE_DEFAULT=1 \ $$(PERL_RUN) Build.PL \ @@ -135,7 +143,7 @@ ifeq ($(4),target) # Build package for target define $(2)_BUILD_CMDS - cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ $$(PERL_RUN) Build $$($(2)_BUILD_OPTS) build; \ else \ $$(MAKE1) \ @@ -148,7 +156,7 @@ else # Build package for host define $(2)_BUILD_CMDS - cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ $$(PERL_RUN) Build $$($(2)_BUILD_OPTS) build; \ else \ $$(MAKE1) $$($(2)_BUILD_OPTS) pure_all; \ @@ -163,7 +171,7 @@ endif # ifndef $(2)_INSTALL_CMDS define $(2)_INSTALL_CMDS - cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ $$(PERL_RUN) Build $$($(2)_INSTALL_TARGET_OPTS) install; \ else \ $$(MAKE1) $$($(2)_INSTALL_TARGET_OPTS) pure_install; \ @@ -177,7 +185,7 @@ endif # ifndef $(2)_INSTALL_TARGET_CMDS define $(2)_INSTALL_TARGET_CMDS - cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] ; then \ + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ $$(PERL_RUN) Build $$($(2)_INSTALL_TARGET_OPTS) install; \ else \ $$(MAKE1) $$($(2)_INSTALL_TARGET_OPTS) pure_install; \ diff --git a/bsp/buildroot/package/pkg-utils.mk b/bsp/buildroot/package/pkg-utils.mk index c61b3b67..c95e7795 100644 --- a/bsp/buildroot/package/pkg-utils.mk +++ b/bsp/buildroot/package/pkg-utils.mk @@ -5,43 +5,6 @@ # ################################################################################ -# Case conversion macros. This is inspired by the 'up' macro from gmsl -# (http://gmsl.sf.net). It is optimised very heavily because these macros -# are used a lot. It is about 5 times faster than forking a shell and tr. -# -# The caseconvert-helper creates a definition of the case conversion macro. -# After expansion by the outer $(eval ), the UPPERCASE macro is defined as: -# $(strip $(eval __tmp := $(1)) $(eval __tmp := $(subst a,A,$(__tmp))) ... ) -# In other words, every letter is substituted one by one. -# -# The caseconvert-helper allows us to create this definition out of the -# [FROM] and [TO] lists, so we don't need to write down every substition -# manually. The uses of $ and $$ quoting are chosen in order to do as -# much expansion as possible up-front. -# -# Note that it would be possible to conceive a slightly more optimal -# implementation that avoids the use of __tmp, but that would be even -# more unreadable and is not worth the effort. - -[FROM] := a b c d e f g h i j k l m n o p q r s t u v w x y z - . -[TO] := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ _ - -define caseconvert-helper -$(1) = $$(strip \ - $$(eval __tmp := $$(1))\ - $(foreach c, $(2),\ - $$(eval __tmp := $$(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),$$(__tmp))))\ - $$(__tmp)) -endef - -$(eval $(call caseconvert-helper,UPPERCASE,$(join $(addsuffix :,$([FROM])),$([TO])))) -$(eval $(call caseconvert-helper,LOWERCASE,$(join $(addsuffix :,$([TO])),$([FROM])))) - -# Sanitize macro cleans up generic strings so it can be used as a filename -# and in rules. Particularly useful for VCS version strings, that can contain -# slashes, colons (OK in filenames but not in rules), and spaces. -sanitize = $(subst $(space),_,$(subst :,_,$(subst /,_,$(strip $(1))))) - # # Manipulation of .config files based on the Kconfig # infrastructure. Used by the BusyBox package, the Linux kernel @@ -73,6 +36,7 @@ pkgname = $(lastword $(subst /, ,$(pkgdir))) # Define extractors for different archive suffixes INFLATE.bz2 = $(BZCAT) INFLATE.gz = $(ZCAT) +INFLATE.lz = $(LZCAT) INFLATE.lzma = $(XZCAT) INFLATE.tbz = $(BZCAT) INFLATE.tbz2 = $(BZCAT) @@ -82,64 +46,12 @@ INFLATE.tar = cat # suitable-extractor(filename): returns extractor based on suffix suitable-extractor = $(INFLATE$(suffix $(1))) -# MESSAGE Macro -- display a message in bold type -MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(call qstrip,$(1))$(TERM_RESET)" -TERM_BOLD := $(shell tput smso 2>/dev/null) -TERM_RESET := $(shell tput rmso 2>/dev/null) - -# Utility functions for 'find' -# findfileclauses(filelist) => -name 'X' -o -name 'Y' -findfileclauses = $(call notfirstword,$(patsubst %,-o -name '%',$(1))) -# finddirclauses(base, dirlist) => -path 'base/dirX' -o -path 'base/dirY' -finddirclauses = $(call notfirstword,$(patsubst %,-o -path '$(1)/%',$(2))) - -# Miscellaneous utility functions -# notfirstword(wordlist): returns all but the first word in wordlist -notfirstword = $(wordlist 2,$(words $(1)),$(1)) - -# Needed for the foreach loops to loop over the list of hooks, so that -# each hook call is properly separated by a newline. -define sep - - -endef - -PERCENT = % -QUOTE = ' -# ' # Meh... syntax-highlighting - -# This macro properly escapes a command string, then prints it with printf: -# -# - first, backslash '\' are self-escaped, so that they do not escape -# the following char and so that printf properly outputs a backslash; -# -# - next, single quotes are escaped by closing an existing one, adding -# an escaped one, and re-openning a new one (see below for the reason); -# -# - then '%' signs are self-escaped so that the printf does not interpret -# them as a format specifier, in case the variable contains an actual -# printf with a format; -# -# - finally, $(sep) is replaced with the literal '\n' so that make does -# not break on the so-expanded variable, but so that the printf does -# correctly output an LF. -# -# Note: this must be escaped in this order to avoid over-escaping the -# previously escaped elements. -# -# Once everything has been escaped, it is passed between single quotes -# (that's why the single-quotes are escaped they way they are, above, -# and why the dollar sign is not escaped) to printf(1). A trailing -# newline is apended, too. -# -# Note: leading or trailing spaces are *not* stripped. -# -define PRINTF - printf '$(subst $(sep),\n,\ - $(subst $(PERCENT),$(PERCENT)$(PERCENT),\ - $(subst $(QUOTE),$(QUOTE)\$(QUOTE)$(QUOTE),\ - $(subst \,\\,$(1)))))\n' -endef +# extractor-dependency(filename): returns extractor for 'filename' if the +# extractor is a dependency. If we build the extractor return nothing. +# $(firstword) is used here because the extractor can have arguments, like +# ZCAT="gzip -d -c", and to check for the dependency we only want 'gzip'. +extractor-dependency = $(firstword $(INFLATE$(filter-out \ + $(EXTRACTOR_DEPENDENCY_PRECHECKED_EXTENSIONS),$(suffix $(1))))) # check-deprecated-variable -- throw an error on deprecated variables # example: @@ -171,19 +83,7 @@ define legal-manifest # pkg, version, license, license-files, source, url, {HOST echo '"$(1)","$(2)","$(3)","$(4)","$(5)","$(6)"' >>$(LEGAL_MANIFEST_CSV_$(7)) endef -define legal-license-header # pkg, license-file, {HOST|TARGET} - printf "$(LEGAL_INFO_SEPARATOR)\n\t$(1):\ - $(2)\n$(LEGAL_INFO_SEPARATOR)\n\n\n" >>$(LEGAL_LICENSES_TXT_$(3)) -endef - -define legal-license-nofiles # pkg, {HOST|TARGET} - $(call legal-license-header,$(1),unknown license file(s),$(2)) -endef - define legal-license-file # pkg, filename, file-fullpath, {HOST|TARGET} - $(call legal-license-header,$(1),$(2) file,$(4)) && \ - cat $(3) >>$(LEGAL_LICENSES_TXT_$(4)) && \ - echo >>$(LEGAL_LICENSES_TXT_$(4)) && \ mkdir -p $(LICENSE_FILES_DIR_$(4))/$(1)/$(dir $(2)) && \ cp $(3) $(LICENSE_FILES_DIR_$(4))/$(1)/$(2) endef diff --git a/bsp/buildroot/package/pkg-waf.mk b/bsp/buildroot/package/pkg-waf.mk new file mode 100644 index 00000000..2cdd654b --- /dev/null +++ b/bsp/buildroot/package/pkg-waf.mk @@ -0,0 +1,125 @@ +################################################################################ +# WAF package infrastructure +# +# This file implements an infrastructure that eases development of package +# .mk files for WAF packages. It should be used for all packages that use +# WAF as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this WAF infrastructure requires the .mk file +# to only specify metadata information about the package: name, version, +# download URL, etc. +# +# We still allow the package .mk file to override what the different steps +# are doing, if needed. For example, if _BUILD_CMDS is already defined, +# it is used as the list of commands to perform to build the package, +# instead of the default WAF behaviour. The package can also define some +# post operation hooks. +# +################################################################################ + +################################################################################ +# inner-waf-package -- defines how the configuration, compilation and +# installation of a waf package should be done, implements a few hooks +# to tune the build process for waf specifities and calls the generic +# package infrastructure to generate the necessary make targets +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +define inner-waf-package + +# We need host-python to run waf +$(2)_DEPENDENCIES += host-python + +$(2)_NEEDS_EXTERNAL_WAF ?= NO + +# If the package does not have its own waf, use our own. +ifeq ($$($(2)_NEEDS_EXTERNAL_WAF),YES) +$(2)_DEPENDENCIES += host-waf +$(2)_WAF = $(HOST_DIR)/usr/bin/waf +else +$(2)_WAF = ./waf +endif + +$(2)_BUILD_OPTS ?= +$(2)_INSTALL_STAGING_OPTS ?= +$(2)_INSTALL_TARGET_OPTS ?= +$(2)_WAF_OPTS ?= + +# +# Configure step. Only define it if not already defined by the package +# .mk file. +# +ifndef $(2)_CONFIGURE_CMDS +define $(2)_CONFIGURE_CMDS + cd $$(@D) && \ + $$(TARGET_CONFIGURE_OPTS) \ + $$($(2)_CONF_ENV) \ + $$(HOST_DIR)/usr/bin/python2 $$($(2)_WAF) configure \ + --prefix=/usr \ + --libdir=/usr/lib \ + $$($(2)_CONF_OPTS) \ + $$($(2)_WAF_OPTS) +endef +endif + +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + cd $$(@D) && \ + $$(TARGET_MAKE_ENV) $$(HOST_DIR)/usr/bin/python2 $$($(2)_WAF) \ + build -j $$(PARALLEL_JOBS) $$($(2)_BUILD_OPTS) \ + $$($(2)_WAF_OPTS) +endef +endif + +# +# Staging installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_STAGING_CMDS +define $(2)_INSTALL_STAGING_CMDS + cd $$(@D) && \ + $$(TARGET_MAKE_ENV) $$(HOST_DIR)/usr/bin/python2 $$($(2)_WAF) \ + install --destdir=$$(STAGING_DIR) \ + $$($(2)_INSTALL_STAGING_OPTS) \ + $$($(2)_WAF_OPTS) +endef +endif + +# +# Target installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + cd $$(@D) && \ + $$(TARGET_MAKE_ENV) $$(HOST_DIR)/usr/bin/python2 $$($(2)_WAF) \ + install --destdir=$$(TARGET_DIR) \ + $$($(2)_INSTALL_TARGET_OPTS) \ + $$($(2)_WAF_OPTS) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# waf-package -- the target generator macro for WAF packages +################################################################################ + +waf-package = $(call inner-waf-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) diff --git a/bsp/buildroot/package/pkgconf/0001-Fix-all-variables-sysroot-prefix-problem.patch b/bsp/buildroot/package/pkgconf/0001-Fix-all-variables-sysroot-prefix-problem.patch index bac9f620..bc2b5273 100644 --- a/bsp/buildroot/package/pkgconf/0001-Fix-all-variables-sysroot-prefix-problem.patch +++ b/bsp/buildroot/package/pkgconf/0001-Fix-all-variables-sysroot-prefix-problem.patch @@ -1,4 +1,4 @@ -From abc7a780f2a52a1aa3ee288e17140b817b545cc3 Mon Sep 17 00:00:00 2001 +From aa6bbc09e68426592faf722630fe92b6ede75bc8 Mon Sep 17 00:00:00 2001 From: Gustavo Zacarias Date: Mon, 2 Nov 2015 18:38:00 -0300 Subject: [PATCH] Fix all-variables sysroot prefix problem @@ -14,15 +14,19 @@ the directories may be requested barebones via pkg-config --variable=includedir libfool for example. Signed-off-by: Gustavo Zacarias + +Added pkgdatadir to the list of to-be-prefixed variables. + +Signed-off-by: Bernd Kuhls --- - main.c | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) + main.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/main.c b/main.c -index 6947126..52d16c2 100644 +index 6947126..ce5e18f 100644 --- a/main.c +++ b/main.c -@@ -313,9 +313,12 @@ print_variable(pkg_t *pkg, void *data, unsigned int flags) +@@ -313,9 +313,13 @@ print_variable(pkg_t *pkg, void *data, unsigned int flags) memset(req->buf, 0, sizeof(req->buf)); if (*var == '/' && (flags & PKGF_MUNGE_SYSROOT_PREFIX) && @@ -33,12 +37,13 @@ index 6947126..52d16c2 100644 + (!strcmp(req->variable, "includedir") || \ + !strcmp(req->variable, "libdir") || \ + !strcmp(req->variable, "mapdir") || \ ++ !strcmp(req->variable, "pkgdatadir") || \ + !strcmp(req->variable, "sdkdir"))) + strlcat(req->buf, sysroot_dir, sizeof(req->buf)); strlcat(req->buf, var, sizeof(req->buf)); return; } -@@ -323,8 +326,12 @@ print_variable(pkg_t *pkg, void *data, unsigned int flags) +@@ -323,8 +327,13 @@ print_variable(pkg_t *pkg, void *data, unsigned int flags) strlcat(req->buf, " ", sizeof(req->buf)); if (*var == '/' && (flags & PKGF_MUNGE_SYSROOT_PREFIX) && @@ -48,6 +53,7 @@ index 6947126..52d16c2 100644 + (!strcmp(req->variable, "includedir") || \ + !strcmp(req->variable, "libdir") || \ + !strcmp(req->variable, "mapdir") || \ ++ !strcmp(req->variable, "pkgdatadir") || \ + !strcmp(req->variable, "sdkdir"))) + strlcat(req->buf, sysroot_dir, sizeof(req->buf)); diff --git a/bsp/buildroot/package/poco/Config.in b/bsp/buildroot/package/poco/Config.in index dfdc8d17..b3b247f9 100644 --- a/bsp/buildroot/package/poco/Config.in +++ b/bsp/buildroot/package/poco/Config.in @@ -5,7 +5,7 @@ config BR2_PACKAGE_POCO depends on BR2_TOOLCHAIN_HAS_THREADS depends on !BR2_STATIC_LIBS # dlopen() depends on !(BR2_arc || BR2_bfin || BR2_microblaze || BR2_mipsel \ - || BR2_xtensa) + || BR2_or1k || BR2_xtensa) select BR2_PACKAGE_ZLIB select BR2_PACKAGE_PCRE help @@ -65,4 +65,4 @@ comment "poco needs a toolchain w/ wchar, threads, C++, dynamic library" depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \ || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS depends on !(BR2_arc || BR2_bfin || BR2_microblaze || BR2_mipsel \ - || BR2_xtensa) + || BR2_or1k || BR2_xtensa) diff --git a/bsp/buildroot/package/poco/poco.mk b/bsp/buildroot/package/poco/poco.mk index 79452c02..90dfb343 100644 --- a/bsp/buildroot/package/poco/poco.mk +++ b/bsp/buildroot/package/poco/poco.mk @@ -47,7 +47,7 @@ POCO_MAKE_TARGET = all_release endif define POCO_CONFIGURE_CMDS - (cd $(@D); ./configure \ + (cd $(@D); $(TARGET_MAKE_ENV) ./configure \ --config=Linux \ --prefix=/usr \ --omit="$(POCO_OMIT)" \ @@ -57,20 +57,21 @@ define POCO_CONFIGURE_CMDS --no-samples) endef +# Use $(MAKE1) to avoid failures on heavilly parallel machines (e.g. -j25) define POCO_BUILD_CMDS - $(MAKE) POCO_TARGET_OSARCH=$(ARCH) CROSS_COMPILE=$(TARGET_CROSS) \ + $(TARGET_MAKE_ENV) $(MAKE1) POCO_TARGET_OSARCH=$(ARCH) CROSS_COMPILE=$(TARGET_CROSS) \ MYSQL_LIBDIR=$(STAGING_DIR)/usr/lib/mysql \ MYSQL_INCDIR=$(STAGING_DIR)/usr/include/mysql \ DEFAULT_TARGET=$(POCO_MAKE_TARGET) -C $(@D) endef define POCO_INSTALL_STAGING_CMDS - $(MAKE) DESTDIR=$(STAGING_DIR) POCO_TARGET_OSARCH=$(ARCH) \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(STAGING_DIR) POCO_TARGET_OSARCH=$(ARCH) \ DEFAULT_TARGET=$(POCO_MAKE_TARGET) install -C $(@D) endef define POCO_INSTALL_TARGET_CMDS - $(MAKE) DESTDIR=$(TARGET_DIR) POCO_TARGET_OSARCH=$(ARCH) \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) POCO_TARGET_OSARCH=$(ARCH) \ DEFAULT_TARGET=$(POCO_MAKE_TARGET) install -C $(@D) endef diff --git a/bsp/buildroot/package/polarssl/polarssl.mk b/bsp/buildroot/package/polarssl/polarssl.mk index 9199f28a..7f4c5827 100644 --- a/bsp/buildroot/package/polarssl/polarssl.mk +++ b/bsp/buildroot/package/polarssl/polarssl.mk @@ -25,7 +25,7 @@ ifeq ($(BR2_ENABLE_DEBUG)$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_ARM_INSTRUCTIONS_THU POLARSSL_POST_CONFIGURE_HOOKS += POLARSSL_DISABLE_ASM else ifeq ($(BR2_microblaze),y) POLARSSL_POST_CONFIGURE_HOOKS += POLARSSL_DISABLE_ASM -else ifeq ($(BR2_mips_32r6)$(BR2_mips_64r6),y) +else ifeq ($(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) POLARSSL_POST_CONFIGURE_HOOKS += POLARSSL_DISABLE_ASM endif diff --git a/bsp/buildroot/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch b/bsp/buildroot/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch new file mode 100644 index 00000000..bbd6895e --- /dev/null +++ b/bsp/buildroot/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch @@ -0,0 +1,131 @@ +The addition of this patch makes the use of DESTDIR +mandatory as there are conditional checks which would fail if it's not +defined. + +This patch was updated from the patch provided by Niranjan Reddy to +accomodate version 2.5 + +Signed-off-by: Clayton Shotwell +Signed-off-by: Niranjan Reddy +Signed-off-by: Adam Duskett +Signed-off-by: Adam Duskett +--- + policycoreutils/Makefile | 2 +- + policycoreutils/newrole/Makefile | 4 ++-- + policycoreutils/restorecond/Makefile | 5 +++-- + policycoreutils/run_init/Makefile | 4 ++-- + policycoreutils/sepolicy/Makefile | 2 +- + policycoreutils/sestatus/Makefile | 2 +- + policycoreutils/setfiles/Makefile | 4 ++-- + 7 files changed, 12 insertions(+), 11 deletions(-) + +diff --git a/Makefile b/Makefile +index 962ac12..0634a2a 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,6 +1,6 @@ + SUBDIRS = sepolicy setfiles semanage load_policy newrole run_init sandbox secon audit2allow sestatus semodule_package semodule semodule_link semodule_expand semodule_deps sepolgen-ifgen setsebool scripts po man gui hll + +-INOTIFYH = $(shell ls /usr/include/sys/inotify.h 2>/dev/null) ++INOTIFYH = $(shell ls $(DESTDIR)/usr/include/sys/inotify.h 2>/dev/null) + + ifeq (${INOTIFYH}, /usr/include/sys/inotify.h) + SUBDIRS += restorecond +diff --git a/newrole/Makefile b/newrole/Makefile +index 646cd4d..f124a6a 100644 +--- a/newrole/Makefile ++++ b/newrole/Makefile +@@ -4,8 +4,8 @@ BINDIR ?= $(PREFIX)/bin + MANDIR ?= $(PREFIX)/share/man + ETCDIR ?= $(DESTDIR)/etc + LOCALEDIR = /usr/share/locale +-PAMH = $(shell ls /usr/include/security/pam_appl.h 2>/dev/null) +-AUDITH = $(shell ls /usr/include/libaudit.h 2>/dev/null) ++PAMH = $(shell ls $(DESTDIR)/usr/include/security/pam_appl.h 2>/dev/null) ++AUDITH = $(shell ls $(DESTDIR)/usr/include/libaudit.h 2>/dev/null) + # Enable capabilities to permit newrole to generate audit records. + # This will make newrole a setuid root program. + # The capabilities used are: CAP_AUDIT_WRITE. +diff --git a/restorecond/Makefile b/restorecond/Makefile +index f99e1e7..92a4a4d 100644 +--- a/restorecond/Makefile ++++ b/restorecond/Makefile +@@ -11,11 +11,12 @@ autostart_DATA = sealertauto.desktop + INITDIR ?= $(DESTDIR)/etc/rc.d/init.d + SELINUXDIR = $(DESTDIR)/etc/selinux + +-DBUSFLAGS = -DHAVE_DBUS -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/lib/dbus-1.0/include ++DBUSFLAGS = -DHAVE_DBUS -I$(DESTDIR)/usr/include/dbus-1.0 -I$(DESTDIR)/usr/lib64/dbus-1.0/include -I$(DESTDIR)/usr/lib/dbus-1.0/include + DBUSLIB = -ldbus-glib-1 -ldbus-1 + + CFLAGS ?= -g -Werror -Wall -W +-override CFLAGS += -I$(PREFIX)/include $(DBUSFLAGS) -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/lib/glib-2.0/include ++override CFLAGS += -I$(DESTDIR)/usr/include $(DBUSFLAGS) -I$(DESTDIR)/usr/include/glib-2.0 \ ++-I$(DESTDIR)/usr/lib64/glib-2.0/include -I$(DESTDIR)/usr/lib/glib-2.0/include + + LDLIBS += -lselinux $(DBUSLIB) -lglib-2.0 -L$(LIBDIR) + +diff --git a/run_init/Makefile b/run_init/Makefile +index 5815a08..c81179b 100644 +--- a/run_init/Makefile ++++ b/run_init/Makefile +@@ -5,8 +5,8 @@ SBINDIR ?= $(PREFIX)/sbin + MANDIR ?= $(PREFIX)/share/man + ETCDIR ?= $(DESTDIR)/etc + LOCALEDIR ?= /usr/share/locale +-PAMH = $(shell ls /usr/include/security/pam_appl.h 2>/dev/null) +-AUDITH = $(shell ls /usr/include/libaudit.h 2>/dev/null) ++PAMH = $(shell ls $(DESTDIR)/usr/include/security/pam_appl.h 2>/dev/null) ++AUDITH = $(shell ls $(DESTDIR)/usr/include/libaudit.h 2>/dev/null) + + CFLAGS ?= -Werror -Wall -W + override CFLAGS += -I$(PREFIX)/include -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" +diff --git a/sepolicy/Makefile b/sepolicy/Makefile +index 39d46e8..6624373 100644 +--- a/sepolicy/Makefile ++++ b/sepolicy/Makefile +@@ -12,7 +12,7 @@ LOCALEDIR ?= /usr/share/locale + BASHCOMPLETIONDIR ?= $(DESTDIR)/usr/share/bash-completion/completions + SHAREDIR ?= $(PREFIX)/share/sandbox + CFLAGS ?= -Wall -Werror -Wextra -W +-override CFLAGS += -I$(PREFIX)/include -DPACKAGE="policycoreutils" -DSHARED -shared ++override CFLAGS = $(LDFLAGS) -I$(DESTDIR)/usr/include -DPACKAGE="policycoreutils" -Wall -Werror -Wextra -W -DSHARED -shared + + BASHCOMPLETIONS=sepolicy-bash-completion.sh + +diff --git a/sestatus/Makefile b/sestatus/Makefile +index c04ff00..e10c32c 100644 +--- a/sestatus/Makefile ++++ b/sestatus/Makefile +@@ -6,7 +6,7 @@ ETCDIR ?= $(DESTDIR)/etc + LIBDIR ?= $(PREFIX)/lib + + CFLAGS ?= -Werror -Wall -W +-override CFLAGS += -I$(PREFIX)/include -D_FILE_OFFSET_BITS=64 ++override CFLAGS += -I$(DESTDIR)/usr/include -D_FILE_OFFSET_BITS=64 + LDLIBS = -lselinux -L$(LIBDIR) + + all: sestatus +diff --git a/setfiles/Makefile b/setfiles/Makefile +index 98f4f7d..eb26ed0 100644 +--- a/setfiles/Makefile ++++ b/setfiles/Makefile +@@ -3,13 +3,13 @@ PREFIX ?= $(DESTDIR)/usr + SBINDIR ?= $(DESTDIR)/sbin + MANDIR = $(PREFIX)/share/man + LIBDIR ?= $(PREFIX)/lib +-AUDITH = $(shell ls /usr/include/libaudit.h 2>/dev/null) ++AUDITH = $(shell ls $(DESTDIR)/usr/include/libaudit.h 2>/dev/null) + + PROGRESS_STEP=$(shell grep "^\#define STAR_COUNT" restore.h | awk -S '{ print $$3 }') + ABORT_ON_ERRORS=$(shell grep "^\#define ABORT_ON_ERRORS" setfiles.c | awk -S '{ print $$3 }') + + CFLAGS ?= -g -Werror -Wall -W +-override CFLAGS += -I$(PREFIX)/include ++override CFLAGS += -I$(DESTDIR)/usr/include + LDLIBS = -lselinux -lsepol -L$(LIBDIR) + + ifeq ($(AUDITH), /usr/include/libaudit.h) +-- +2.7.4 + diff --git a/bsp/buildroot/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch b/bsp/buildroot/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch new file mode 100644 index 00000000..56aae74b --- /dev/null +++ b/bsp/buildroot/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch @@ -0,0 +1,211 @@ +From 7f99a727cdb8160d49bb0d0554fc88787980c971 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Thu, 14 Jul 2016 13:16:03 -0400 +Subject: [PATCH] Add PREFIX to host paths + +Updates the remaining hardcoded host paths used in the build to be +prefixed with a PREFIX path to allow cross compilation. + +Updated to work with version 2.5 + +Signed-off-by: Clayton Shotwell +Signed-off-by: Niranjan Reddy +Signed-off-by: Adam Duskett +Signed-off-by: Adam Duskett +--- + policycoreutils/Makefile | 4 +++- + policycoreutils/audit2allow/Makefile | 2 +- + policycoreutils/load_policy/Makefile | 2 +- + policycoreutils/mcstrans/src/Makefile | 17 +++++++++-------- + policycoreutils/newrole/Makefile | 8 ++++---- + policycoreutils/run_init/Makefile | 8 ++++---- + policycoreutils/sepolicy/Makefile | 2 +- + policycoreutils/setfiles/Makefile | 4 ++-- + 8 files changed, 25 insertions(+), 22 deletions(-) + +diff --git a/Makefile b/Makefile +index 0634a2a..bd99b1c 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,8 +1,10 @@ ++PREFIX ?= $(DESTDIR)/usr ++ + SUBDIRS = sepolicy setfiles semanage load_policy newrole run_init sandbox secon audit2allow sestatus semodule_package semodule semodule_link semodule_expand semodule_deps sepolgen-ifgen setsebool scripts po man gui hll + + INOTIFYH = $(shell ls $(DESTDIR)/usr/include/sys/inotify.h 2>/dev/null) + +-ifeq (${INOTIFYH}, /usr/include/sys/inotify.h) ++ifeq (${INOTIFYH}, $(PREFIX)/include/sys/inotify.h) + SUBDIRS += restorecond + endif + +diff --git a/audit2allow/Makefile b/audit2allow/Makefile +index 87d2502..d4108fe 100644 +--- a/audit2allow/Makefile ++++ b/audit2allow/Makefile +@@ -5,7 +5,7 @@ PREFIX ?= $(DESTDIR)/usr + BINDIR ?= $(PREFIX)/bin + LIBDIR ?= $(PREFIX)/lib + MANDIR ?= $(PREFIX)/share/man +-LOCALEDIR ?= /usr/share/locale ++LOCALEDIR ?= $(PREFIX)/share/locale + + all: audit2why + +diff --git a/load_policy/Makefile b/load_policy/Makefile +index 7c5bab0..5cd0bbb 100644 +--- a/load_policy/Makefile ++++ b/load_policy/Makefile +@@ -3,7 +3,7 @@ PREFIX ?= $(DESTDIR)/usr + SBINDIR ?= $(DESTDIR)/sbin + USRSBINDIR ?= $(PREFIX)/sbin + MANDIR ?= $(PREFIX)/share/man +-LOCALEDIR ?= /usr/share/locale ++LOCALEDIR ?= $(PREFIX)/share/locale + + CFLAGS ?= -Werror -Wall -W + override CFLAGS += $(LDFLAGS) -I$(PREFIX)/include -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" +diff --git a/mcstrans/src/Makefile b/mcstrans/src/Makefile +index 907a1f1..6fda57e 100644 +--- a/mcstrans/src/Makefile ++++ b/mcstrans/src/Makefile +@@ -1,23 +1,24 @@ + ARCH = $(shell uname -i) ++# Installation directories. ++PREFIX ?= $(DESTDIR)/usr ++SBINDIR ?= $(DESTDIR)/sbin ++INITDIR ?= $(DESTDIR)/etc/rc.d/init.d ++SYSTEMDDIR ?= $(DESTDIR)/usr/lib/systemd ++ + ifeq "$(ARCH)" "x86_64" + # In case of 64 bit system, use these lines +- LIBDIR=/usr/lib64 ++ LIBDIR=$(PREFIX)/lib64 + else + ifeq "$(ARCH)" "i686" + # In case of 32 bit system, use these lines +- LIBDIR=/usr/lib ++ LIBDIR=$(PREFIX)/lib + else + ifeq "$(ARCH)" "i386" + # In case of 32 bit system, use these lines +- LIBDIR=/usr/lib ++ LIBDIR=$(PREFIX)/lib + endif + endif + endif +-# Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-SBINDIR ?= $(DESTDIR)/sbin +-INITDIR ?= $(DESTDIR)/etc/rc.d/init.d +-SYSTEMDDIR ?= $(DESTDIR)/usr/lib/systemd + + PROG_SRC=mcstrans.c mcscolor.c mcstransd.c mls_level.c + PROG_OBJS= $(patsubst %.c,%.o,$(PROG_SRC)) +diff --git a/newrole/Makefile b/newrole/Makefile +index f124a6a..b687a09 100644 +--- a/newrole/Makefile ++++ b/newrole/Makefile +@@ -3,7 +3,7 @@ PREFIX ?= $(DESTDIR)/usr + BINDIR ?= $(PREFIX)/bin + MANDIR ?= $(PREFIX)/share/man + ETCDIR ?= $(DESTDIR)/etc +-LOCALEDIR = /usr/share/locale ++LOCALEDIR = $(PREFIX)/share/locale + PAMH = $(shell ls $(DESTDIR)/usr/include/security/pam_appl.h 2>/dev/null) + AUDITH = $(shell ls $(DESTDIR)/usr/include/libaudit.h 2>/dev/null) + # Enable capabilities to permit newrole to generate audit records. +@@ -24,7 +24,7 @@ CFLAGS ?= -Werror -Wall -W + EXTRA_OBJS = + override CFLAGS += -DVERSION=\"$(VERSION)\" $(LDFLAGS) -I$(PREFIX)/include -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" + LDLIBS += -lselinux -L$(PREFIX)/lib +-ifeq ($(PAMH), /usr/include/security/pam_appl.h) ++ifeq ($(PAMH), $(PREFIX)/include/security/pam_appl.h) + override CFLAGS += -DUSE_PAM + EXTRA_OBJS += hashtab.o + LDLIBS += -lpam -lpam_misc +@@ -32,7 +32,7 @@ else + override CFLAGS += -D_XOPEN_SOURCE=500 + LDLIBS += -lcrypt + endif +-ifeq ($(AUDITH), /usr/include/libaudit.h) ++ifeq ($(AUDITH), $(PREFIX)/include/libaudit.h) + override CFLAGS += -DUSE_AUDIT + LDLIBS += -laudit + endif +@@ -66,7 +66,7 @@ install: all + test -d $(MANDIR)/man1 || install -m 755 -d $(MANDIR)/man1 + install -m $(MODE) newrole $(BINDIR) + install -m 644 newrole.1 $(MANDIR)/man1/ +-ifeq ($(PAMH), /usr/include/security/pam_appl.h) ++ifeq ($(PAMH), $(PREFIX)/include/security/pam_appl.h) + test -d $(ETCDIR)/pam.d || install -m 755 -d $(ETCDIR)/pam.d + ifeq ($(LSPP_PRIV),y) + install -m 644 newrole-lspp.pamd $(ETCDIR)/pam.d/newrole +diff --git a/run_init/Makefile b/run_init/Makefile +index c81179b..ce0df9f 100644 +--- a/run_init/Makefile ++++ b/run_init/Makefile +@@ -4,21 +4,21 @@ PREFIX ?= $(DESTDIR)/usr + SBINDIR ?= $(PREFIX)/sbin + MANDIR ?= $(PREFIX)/share/man + ETCDIR ?= $(DESTDIR)/etc +-LOCALEDIR ?= /usr/share/locale ++LOCALEDIR ?= $(PREFIX)/share/locale + PAMH = $(shell ls $(DESTDIR)/usr/include/security/pam_appl.h 2>/dev/null) + AUDITH = $(shell ls $(DESTDIR)/usr/include/libaudit.h 2>/dev/null) + + CFLAGS ?= -Werror -Wall -W + override CFLAGS += -I$(PREFIX)/include -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" + LDLIBS += -lselinux -L$(PREFIX)/lib +-ifeq ($(PAMH), /usr/include/security/pam_appl.h) ++ifeq ($(PAMH), $(PREFIX)/include/security/pam_appl.h) + override CFLAGS += -DUSE_PAM + LDLIBS += -lpam -lpam_misc + else + override CFLAGS += -D_XOPEN_SOURCE=500 + LDLIBS += -lcrypt + endif +-ifeq ($(AUDITH), /usr/include/libaudit.h) ++ifeq ($(AUDITH), $(PREFIX)/include/libaudit.h) + override CFLAGS += -DUSE_AUDIT + LDLIBS += -laudit + endif +@@ -38,7 +38,7 @@ install: all + install -m 755 open_init_pty $(SBINDIR) + install -m 644 run_init.8 $(MANDIR)/man8/ + install -m 644 open_init_pty.8 $(MANDIR)/man8/ +-ifeq ($(PAMH), /usr/include/security/pam_appl.h) ++ifeq ($(PAMH), $(PREFIX)/include/security/pam_appl.h) + install -m 644 run_init.pamd $(ETCDIR)/pam.d/run_init + endif + +diff --git a/sepolicy/Makefile b/sepolicy/Makefile +index 6624373..a16f8de 100644 +--- a/sepolicy/Makefile ++++ b/sepolicy/Makefile +@@ -8,7 +8,7 @@ BINDIR ?= $(PREFIX)/bin + SBINDIR ?= $(PREFIX)/sbin + DATADIR ?= $(PREFIX)/share + MANDIR ?= $(PREFIX)/share/man +-LOCALEDIR ?= /usr/share/locale ++LOCALEDIR ?= $(PREFIX)/share/locale + BASHCOMPLETIONDIR ?= $(DESTDIR)/usr/share/bash-completion/completions + SHAREDIR ?= $(PREFIX)/share/sandbox + CFLAGS ?= -Wall -Werror -Wextra -W +diff --git a/setfiles/Makefile b/setfiles/Makefile +index eb26ed0..3c6b80d 100644 +--- a/setfiles/Makefile ++++ b/setfiles/Makefile +@@ -12,7 +12,7 @@ CFLAGS ?= -g -Werror -Wall -W + override CFLAGS += -I$(DESTDIR)/usr/include + LDLIBS = -lselinux -lsepol -L$(LIBDIR) + +-ifeq ($(AUDITH), /usr/include/libaudit.h) ++ifeq ($(AUDITH), $(PREFIX)/include/libaudit.h) + override CFLAGS += -DUSE_AUDIT + LDLIBS += -laudit + endif +-- +2.7.4 + diff --git a/bsp/buildroot/package/policycoreutils/0003-Remove-hardcoded-arch-variable.patch b/bsp/buildroot/package/policycoreutils/0003-Remove-hardcoded-arch-variable.patch new file mode 100644 index 00000000..375fb577 --- /dev/null +++ b/bsp/buildroot/package/policycoreutils/0003-Remove-hardcoded-arch-variable.patch @@ -0,0 +1,43 @@ +From 7424f2bea0cb412e96202f596ad8077131589f40 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Thu, 14 Jul 2016 13:18:24 -0400 +Subject: [PATCH] Remove hardcoded arch variable. + +Allow the ARCH value to be passed in as original configuration was +solely based on host architecture. + +This patch was updated to work with version 2.5 + +Signed-off-by: Clayton Shotwell +Signed-off-by: Niranjan Reddy +Signed-off-by: Adam Duskett +Signed-off-by: Adam Duskett +--- + policycoreutils/mcstrans/src/Makefile | 1 - + policycoreutils/mcstrans/utils/Makefile | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/mcstrans/src/Makefile b/mcstrans/src/Makefile +index 6fda57e..7b4489f 100644 +--- a/mcstrans/src/Makefile ++++ b/mcstrans/src/Makefile +@@ -1,4 +1,3 @@ +-ARCH = $(shell uname -i) + # Installation directories. + PREFIX ?= $(DESTDIR)/usr + SBINDIR ?= $(DESTDIR)/sbin +diff --git a/mcstrans/utils/Makefile b/mcstrans/utils/Makefile +index 1ffb027..912fe12 100644 +--- a/mcstrans/utils/Makefile ++++ b/mcstrans/utils/Makefile +@@ -2,7 +2,6 @@ + PREFIX ?= $(DESTDIR)/usr + BINDIR ?= $(PREFIX)/sbin + +-ARCH = $(shell uname -i) + ifeq "$(ARCH)" "x86_64" + # In case of 64 bit system, use these lines + LIBDIR=/usr/lib64 +-- +2.7.4 + diff --git a/bsp/buildroot/package/policycoreutils/0004-Change-sepolicy-python-install-arguments-to-be-a-var.patch b/bsp/buildroot/package/policycoreutils/0004-Change-sepolicy-python-install-arguments-to-be-a-var.patch new file mode 100644 index 00000000..636b722b --- /dev/null +++ b/bsp/buildroot/package/policycoreutils/0004-Change-sepolicy-python-install-arguments-to-be-a-var.patch @@ -0,0 +1,42 @@ +From 27fd1c85ca95b5d66ab0241a08242a75b60b375c Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Thu, 14 Jul 2016 13:22:57 -0400 +Subject: [PATCH] Change sepolicy python install arguments to be a variable + +To allow the python install arguments to be overwritten, change the +arguments to be a variable. This also cleans up the DESTDIR detection a +little bit. + +Updated to work with version 2.5 + +Signed-off-by: Clayton Shotwell +Signed-off-by: Adam Duskett +Signed-off-by: Adam Duskett +--- + policycoreutils/sepolicy/Makefile | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/sepolicy/Makefile b/sepolicy/Makefile +index a16f8de..2013301 100644 +--- a/sepolicy/Makefile ++++ b/sepolicy/Makefile +@@ -1,4 +1,7 @@ + PYTHON ?= python ++ifneq ($(DESTDIR),) ++PYTHON_INSTALL_ARGS ?= --root $(DESTDIR) ++endif + + # Installation directories. + PREFIX ?= $(DESTDIR)/usr +@@ -32,7 +35,7 @@ test: + @$(PYTHON) test_sepolicy.py -v + + install: +- $(PYTHON) setup.py install `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` ++ $(PYTHON) setup.py install $(PYTHON_INSTALL_ARGS) + [ -d $(BINDIR) ] || mkdir -p $(BINDIR) + install -m 755 sepolicy.py $(BINDIR)/sepolicy + (cd $(BINDIR); ln -sf sepolicy sepolgen) +-- +2.7.4 + diff --git a/bsp/buildroot/package/policycoreutils/0005-Check-to-see-if-DBUS-is-enabled.patch b/bsp/buildroot/package/policycoreutils/0005-Check-to-see-if-DBUS-is-enabled.patch new file mode 100644 index 00000000..37ffac8d --- /dev/null +++ b/bsp/buildroot/package/policycoreutils/0005-Check-to-see-if-DBUS-is-enabled.patch @@ -0,0 +1,56 @@ +From d1bc28c5b2efe60a0ee04d9c171928d0f3475654 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Thu, 14 Jul 2016 13:26:23 -0400 +Subject: [PATCH] Check to see if DBUS is enabled. + +Adds a condition to prevent linking against dbus when at build time +dbus has not been enabled. + +Updated for 2.5. + +Signed-off-by: Matthew Weber +Signed-off-by: Adam Duskett +Signed-off-by: Adam Duskett +--- + policycoreutils/restorecond/Makefile | 2 ++ + policycoreutils/restorecond/user.c | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/restorecond/Makefile b/restorecond/Makefile +index 92a4a4d..95f38a6 100644 +--- a/restorecond/Makefile ++++ b/restorecond/Makefile +@@ -11,8 +11,10 @@ autostart_DATA = sealertauto.desktop + INITDIR ?= $(DESTDIR)/etc/rc.d/init.d + SELINUXDIR = $(DESTDIR)/etc/selinux + ++ifdef ENABLE_DBUS + DBUSFLAGS = -DHAVE_DBUS -I$(DESTDIR)/usr/include/dbus-1.0 -I$(DESTDIR)/usr/lib64/dbus-1.0/include -I$(DESTDIR)/usr/lib/dbus-1.0/include + DBUSLIB = -ldbus-glib-1 -ldbus-1 ++endif + + CFLAGS ?= -g -Werror -Wall -W + override CFLAGS += -I$(DESTDIR)/usr/include $(DBUSFLAGS) -I$(DESTDIR)/usr/include/glib-2.0 \ +diff --git a/restorecond/user.c b/restorecond/user.c +index 714aae7..a04cddb 100644 +--- a/restorecond/user.c ++++ b/restorecond/user.c +@@ -54,7 +54,6 @@ static const char *PATH="/org/selinux/Restorecond"; + static const char *INTERFACE="org.selinux.RestorecondIface"; + static const char *RULE="type='signal',interface='org.selinux.RestorecondIface'"; + +-static int local_lock_fd = -1; + + static DBusHandlerResult + signal_filter (DBusConnection *connection __attribute__ ((__unused__)), DBusMessage *message, void *user_data) +@@ -101,6 +100,7 @@ static int dbus_server(GMainLoop *loop) { + #include + #include + ++static int local_lock_fd = -1; + /* size of the event structure, not counting name */ + #define EVENT_SIZE (sizeof (struct inotify_event)) + /* reasonable guess as to size of 1024 events */ +-- +2.7.4 + diff --git a/bsp/buildroot/package/policycoreutils/Config.in b/bsp/buildroot/package/policycoreutils/Config.in new file mode 100644 index 00000000..53238b4e --- /dev/null +++ b/bsp/buildroot/package/policycoreutils/Config.in @@ -0,0 +1,61 @@ +comment "policycoreutils needs a glibc toolchain w/ threads, dynamic library" + depends on !BR2_arc + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_POLICYCOREUTILS + bool "policycoreutils" + select BR2_PACKAGE_LIBSEMANAGE + select BR2_PACKAGE_LIBCAP_NG + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS # libsemanage + depends on BR2_TOOLCHAIN_HAS_THREADS # libsemanage + depends on !BR2_STATIC_LIBS #libsemanage + depends on !BR2_arc # libsemanage + depends on BR2_TOOLCHAIN_USES_GLIBC # libsemanage + help + Policycoreutils is a collection of policy utilities (originally + the "core" set of utilities needed to use SELinux, although it + has grown a bit over time), which have different dependencies. + sestatus, secon, run_init, and newrole only use libselinux. + load_policy and setfiles only use libselinux and libsepol. + semodule and semanage use libsemanage (and thus bring in + dependencies on libsepol and libselinux as well). setsebool + uses libselinux to make non-persistent boolean changes (via + the kernel interface) and uses libsemanage to make persistent + boolean changes. + + The base package will install the following utilities: + load_policy + newrole + restorecond + run_init + secon + semodule + semodule_deps + semodule_expand + semodule_link + semodule_package + sepolgen-ifgen + sestatus + setfiles + setsebool + + http://selinuxproject.org/page/Main_Page + +if BR2_PACKAGE_POLICYCOREUTILS + +config BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND + bool "restorecond" + select BR2_PACKAGE_LIBGLIB2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + help + Enable restorecond to be built + +comment "restorecond needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +endif diff --git a/bsp/buildroot/package/policycoreutils/policycoreutils.hash b/bsp/buildroot/package/policycoreutils/policycoreutils.hash new file mode 100644 index 00000000..999a7788 --- /dev/null +++ b/bsp/buildroot/package/policycoreutils/policycoreutils.hash @@ -0,0 +1,2 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 68891b376f5048edc53c6ccb2fca44da3dc7f4563f4b6894e201d70c04a05a29 policycoreutils-2.6.tar.gz diff --git a/bsp/buildroot/package/policycoreutils/policycoreutils.mk b/bsp/buildroot/package/policycoreutils/policycoreutils.mk new file mode 100644 index 00000000..6076bb9c --- /dev/null +++ b/bsp/buildroot/package/policycoreutils/policycoreutils.mk @@ -0,0 +1,122 @@ +################################################################################ +# +# policycoreutils +# +################################################################################ + +POLICYCOREUTILS_VERSION = 2.6 +POLICYCOREUTILS_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20161014 +POLICYCOREUTILS_LICENSE = GPLv2 +POLICYCOREUTILS_LICENSE_FILES = COPYING + +POLICYCOREUTILS_DEPENDENCIES = libsemanage libcap-ng + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +POLICYCOREUTILS_DEPENDENCIES += linux-pam +POLICYCOREUTILS_MAKE_OPTS += NAMESPACE_PRIV=y +define POLICYCOREUTILS_INSTALL_TARGET_LINUX_PAM_CONFS + $(INSTALL) -D -m 0644 $(@D)/newrole/newrole-lspp.pamd $(TARGET_DIR)/etc/pam.d/newrole + $(INSTALL) -D -m 0644 $(@D)/run_init/run_init.pamd $(TARGET_DIR)/etc/pam.d/run_init +endef +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +POLICYCOREUTILS_DEPENDENCIES += audit +POLICYCOREUTILS_MAKE_OPTS += AUDIT_LOG_PRIV=y +endif + +# Enable LSPP_PRIV if both audit and linux pam are enabled +ifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_PACKAGE_AUDIT),yy) +POLICYCOREUTILS_MAKE_OPTS += LSPP_PRIV=y +endif + +# Undefining _FILE_OFFSET_BITS here because of a "bug" with glibc fts.h +# large file support. +# See https://bugzilla.redhat.com/show_bug.cgi?id=574992 for more information +POLICYCOREUTILS_MAKE_OPTS += \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -U_FILE_OFFSET_BITS" \ + CPPFLAGS="$(TARGET_CPPFLAGS) -U_FILE_OFFSET_BITS" \ + ARCH="$(BR2_ARCH)" + +POLICYCOREUTILS_MAKE_DIRS = \ + load_policy newrole run_init \ + secon semodule semodule_deps \ + semodule_expand semodule_link \ + semodule_package sepolgen-ifgen \ + sestatus setfiles setsebool + +ifeq ($(BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND),y) +POLICYCOREUTILS_MAKE_DIRS += restorecond +POLICYCOREUTILS_DEPENDENCIES += libglib2 +endif +# We need to pass DESTDIR at build time because it's used by +# policycoreutils build system to find headers and libraries. +define POLICYCOREUTILS_BUILD_CMDS + $(foreach d,$(POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(POLICYCOREUTILS_MAKE_OPTS) \ + DESTDIR=$(STAGING_DIR) all + ) +endef + +define POLICYCOREUTILS_INSTALL_TARGET_CMDS + $(foreach d,$(POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(POLICYCOREUTILS_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) install + ) +endef + +HOST_POLICYCOREUTILS_DEPENDENCIES = \ + host-libsemanage host-dbus-glib \ + host-sepolgen host-setools + +# Undefining _FILE_OFFSET_BITS here because of a "bug" with glibc fts.h +# large file support. +# See https://bugzilla.redhat.com/show_bug.cgi?id=574992 for more information +HOST_POLICYCOREUTILS_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CFLAGS) -U_FILE_OFFSET_BITS" \ + CPPFLAGS="$(HOST_CPPFLAGS) -U_FILE_OFFSET_BITS" \ + PYTHON="$(HOST_DIR)/usr/bin/python" \ + PYTHON_INSTALL_ARGS="$(HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS)" \ + ARCH="$(HOSTARCH)" + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +HOST_POLICYCOREUTILS_DEPENDENCIES += host-python3 +HOST_POLICYCOREUTILS_MAKE_OPTS += \ + PYLIBVER="python$(PYTHON3_VERSION_MAJOR)" +else +HOST_POLICYCOREUTILS_DEPENDENCIES += host-python +HOST_POLICYCOREUTILS_MAKE_OPTS += \ + PYLIBVER="python$(PYTHON_VERSION_MAJOR)" +endif + +# Note: We are only building the programs required by the refpolicy build +HOST_POLICYCOREUTILS_MAKE_DIRS = \ + load_policy semodule semodule_deps \ + semodule_expand semodule_link \ + semodule_package setfiles restorecond \ + audit2allow scripts semanage sepolicy + +# We need to pass DESTDIR at build time because it's used by +# policycoreutils build system to find headers and libraries. +define HOST_POLICYCOREUTILS_BUILD_CMDS + $(foreach d,$(HOST_POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(HOST_POLICYCOREUTILS_MAKE_OPTS) \ + DESTDIR=$(HOST_DIR) all + ) +endef + +define HOST_POLICYCOREUTILS_INSTALL_CMDS + $(foreach d,$(HOST_POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(HOST_POLICYCOREUTILS_MAKE_OPTS) \ + DESTDIR=$(HOST_DIR) install + ) + # Fix python paths + $(SED) 's%/usr/bin/%$(HOST_DIR)/usr/bin/%g' $(HOST_DIR)/usr/bin/audit2allow + $(SED) 's%/usr/bin/%$(HOST_DIR)/usr/bin/%g' $(HOST_DIR)/usr/bin/sepolgen-ifgen + $(SED) 's%/usr/bin/%$(HOST_DIR)/usr/bin/%g' $(HOST_DIR)/usr/bin/sepolicy +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/poppler/0001-Fix-invalid-shell-comparaison-in-libtiff-test.patch b/bsp/buildroot/package/poppler/0001-Fix-invalid-shell-comparaison-in-libtiff-test.patch deleted file mode 100644 index f40bee1d..00000000 --- a/bsp/buildroot/package/poppler/0001-Fix-invalid-shell-comparaison-in-libtiff-test.patch +++ /dev/null @@ -1,23 +0,0 @@ -Fix syntax issue in configure script - -The change is not done in configure.ac, because the package doesn't -autoreconf properly. - -Patch on configure.ac submitted upstream at -https://bugs.freedesktop.org/show_bug.cgi?id=90292. - -Signed-off-by: Thomas Petazzoni - -Index: b/configure -=================================================================== ---- a/configure -+++ b/configure -@@ -19738,7 +19738,7 @@ - CXXFLAGS="$CXXFLAGS $LIBTIFF_CFLAGS" - LIBS="$LIBS $LIBTIFF_LIBS" - if test x$enable_libtiff = xyes; then -- if test x"$LIBTIFF_LIBS" != ; then -+ if test x"$LIBTIFF_LIBS" != x; then - ac_fn_cxx_check_func "$LINENO" "TIFFOpen" "ac_cv_func_TIFFOpen" - if test "x$ac_cv_func_TIFFOpen" = xyes; then : - diff --git a/bsp/buildroot/package/poppler/Config.in b/bsp/buildroot/package/poppler/Config.in index 2ca3ff62..d741f652 100644 --- a/bsp/buildroot/package/poppler/Config.in +++ b/bsp/buildroot/package/poppler/Config.in @@ -24,6 +24,15 @@ config BR2_PACKAGE_POPPLER_QT comment "poppler Qt support needs a toolchain not affected by Binutils bug 19405" depends on BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405 +config BR2_PACKAGE_POPPLER_QT5 + bool "Qt5 support" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5BASE_XML + help + Build Qt support into the Poppler library + endif comment "poppler needs a toolchain w/ C++, threads" diff --git a/bsp/buildroot/package/poppler/poppler.hash b/bsp/buildroot/package/poppler/poppler.hash index c4c7f661..af597e02 100644 --- a/bsp/buildroot/package/poppler/poppler.hash +++ b/bsp/buildroot/package/poppler/poppler.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4963e31ba5e17530a87b16588e22928bc044e8d28d02303dded981bff6725b98 poppler-0.32.0.tar.xz +sha256 e997c9ad81a8372f2dd03a02b00692b8cc479c220340c8881edaca540f402c1f poppler-0.51.0.tar.xz diff --git a/bsp/buildroot/package/poppler/poppler.mk b/bsp/buildroot/package/poppler/poppler.mk index c6cd2eb9..fda82845 100644 --- a/bsp/buildroot/package/poppler/poppler.mk +++ b/bsp/buildroot/package/poppler/poppler.mk @@ -4,7 +4,7 @@ # ################################################################################ -POPPLER_VERSION = 0.32.0 +POPPLER_VERSION = 0.51.0 POPPLER_SOURCE = poppler-$(POPPLER_VERSION).tar.xz POPPLER_SITE = http://poppler.freedesktop.org POPPLER_DEPENDENCIES = fontconfig host-pkgconf @@ -14,6 +14,13 @@ POPPLER_INSTALL_STAGING = YES POPPLER_CONF_OPTS = --with-font-configuration=fontconfig \ --enable-xpdf-headers +ifeq ($(BR2_PACKAGE_CAIRO),y) +POPPLER_CONF_OPTS += --enable-cairo-output +POPPLER_DEPENDENCIES += cairo +else +POPPLER_CONF_OPTS += --disable-cairo-output +endif + ifeq ($(BR2_PACKAGE_LCMS2),y) POPPLER_CONF_OPTS += --enable-cms=lcms2 POPPLER_DEPENDENCIES += lcms2 @@ -21,6 +28,13 @@ else POPPLER_CONF_OPTS += --enable-cms=none endif +ifeq ($(BR2_PACKAGE_CAIRO)$(BR2_PACKAGE_LIBGLIB2),yy) +POPPLER_CONF_OPTS += --enable-poppler-glib +POPPLER_DEPENDENCIES += libglib2 +else +POPPLER_CONF_OPTS += --disable-poppler-glib +endif + ifeq ($(BR2_PACKAGE_TIFF),y) POPPLER_CONF_OPTS += --enable-libtiff # Help poppler to find libtiff in static linking scenarios @@ -73,6 +87,17 @@ else POPPLER_CONF_OPTS += --disable-poppler-qt4 endif +ifeq ($(BR2_PACKAGE_POPPLER_QT5),y) +POPPLER_DEPENDENCIES += qt5base +POPPLER_CONF_OPTS += --enable-poppler-qt5 +# since Qt5.7.x c++11 is needed (LTS Qt5.6.x is the last one without this requirement) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +POPPLER_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +endif +else +POPPLER_CONF_OPTS += --disable-poppler-qt5 +endif + ifeq ($(BR2_PACKAGE_OPENJPEG),y) POPPLER_DEPENDENCIES += openjpeg POPPLER_CONF_OPTS += --enable-libopenjpeg diff --git a/bsp/buildroot/package/portaudio/portaudio.hash b/bsp/buildroot/package/portaudio/portaudio.hash index 2a193163..ca7baf7f 100644 --- a/bsp/buildroot/package/portaudio/portaudio.hash +++ b/bsp/buildroot/package/portaudio/portaudio.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 8fe024a5f0681e112c6979808f684c3516061cc51d3acc0b726af98fc96c8d57 pa_stable_v19_20140130.tgz +sha256 f5a21d7dcd6ee84397446fa1fa1a0675bb2e8a4a6dceb4305a8404698d8d1513 pa_stable_v190600_20161030.tgz diff --git a/bsp/buildroot/package/portaudio/portaudio.mk b/bsp/buildroot/package/portaudio/portaudio.mk index d1ef07a2..0cf754c7 100644 --- a/bsp/buildroot/package/portaudio/portaudio.mk +++ b/bsp/buildroot/package/portaudio/portaudio.mk @@ -4,7 +4,7 @@ # ################################################################################ -PORTAUDIO_VERSION = v19_20140130 +PORTAUDIO_VERSION = v190600_20161030 PORTAUDIO_SITE = http://www.portaudio.com/archives PORTAUDIO_SOURCE = pa_stable_$(PORTAUDIO_VERSION).tgz PORTAUDIO_INSTALL_STAGING = YES diff --git a/bsp/buildroot/package/postgresql/postgresql.hash b/bsp/buildroot/package/postgresql/postgresql.hash index 4dde5895..900a55a7 100644 --- a/bsp/buildroot/package/postgresql/postgresql.hash +++ b/bsp/buildroot/package/postgresql/postgresql.hash @@ -1,2 +1,2 @@ -# From https://ftp.postgresql.org/pub/source/v9.5.3/postgresql-9.5.3.tar.bz2.sha256 -sha256 7385c01dc58acba8d7ac4e6ad42782bd7c0b59272862a3a3d5fe378d4503a0b4 postgresql-9.5.3.tar.bz2 +# From https://ftp.postgresql.org/pub/source/v9.6.1/postgresql-9.6.1.tar.bz2.sha256 +sha256 e5101e0a49141fc12a7018c6dad594694d3a3325f5ab71e93e0e51bd94e51fcd postgresql-9.6.1.tar.bz2 diff --git a/bsp/buildroot/package/postgresql/postgresql.mk b/bsp/buildroot/package/postgresql/postgresql.mk index 8edefb75..bc2bf47e 100644 --- a/bsp/buildroot/package/postgresql/postgresql.mk +++ b/bsp/buildroot/package/postgresql/postgresql.mk @@ -4,16 +4,17 @@ # ################################################################################ -POSTGRESQL_VERSION = 9.5.3 +POSTGRESQL_VERSION = 9.6.1 POSTGRESQL_SOURCE = postgresql-$(POSTGRESQL_VERSION).tar.bz2 POSTGRESQL_SITE = http://ftp.postgresql.org/pub/source/v$(POSTGRESQL_VERSION) POSTGRESQL_LICENSE = PostgreSQL POSTGRESQL_LICENSE_FILES = COPYRIGHT POSTGRESQL_INSTALL_STAGING = YES POSTGRESQL_CONFIG_SCRIPTS = pg_config -POSTGRESQL_CONF_ENV = ac_cv_type_struct_sockaddr_in6=yes \ - pgac_cv_snprintf_long_long_int_modifier="%lld" \ - pgac_cv_snprintf_size_t_support=yes +POSTGRESQL_CONF_ENV = \ + ac_cv_type_struct_sockaddr_in6=yes \ + pgac_cv_snprintf_long_long_int_modifier="ll" \ + pgac_cv_snprintf_size_t_support=yes POSTGRESQL_CONF_OPTS = --disable-rpath ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) @@ -28,7 +29,7 @@ ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) POSTGRESQL_CONF_OPTS += --disable-thread-safety endif -ifeq ($(BR2_arcle)$(BR2_arceb)$(BR2_microblazeel)$(BR2_microblazebe)$(BR2_nios2)$(BR2_xtensa),y) +ifeq ($(BR2_arcle)$(BR2_arceb)$(BR2_microblazeel)$(BR2_microblazebe)$(BR2_or1k)$(BR2_nios2)$(BR2_xtensa),y) POSTGRESQL_CONF_OPTS += --disable-spinlocks endif @@ -57,6 +58,13 @@ POSTGRESQL_DEPENDENCIES += openssl POSTGRESQL_CONF_OPTS += --with-openssl endif +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +POSTGRESQL_DEPENDENCIES += openldap +POSTGRESQL_CONF_OPTS += --with-ldap +else +POSTGRESQL_CONF_OPTS += --without-ldap +endif + define POSTGRESQL_USERS postgres -1 postgres -1 * /var/lib/pgsql /bin/sh - PostgreSQL Server endef diff --git a/bsp/buildroot/package/pppd/0001-Move-netinet-in.h-above-linux-header-includes.patch b/bsp/buildroot/package/pppd/0001-Move-netinet-in.h-above-linux-header-includes.patch new file mode 100644 index 00000000..2f6933f5 --- /dev/null +++ b/bsp/buildroot/package/pppd/0001-Move-netinet-in.h-above-linux-header-includes.patch @@ -0,0 +1,22 @@ +diff --git a/pppd/plugins/rp-pppoe/pppoe.h b/pppd/plugins/rp-pppoe/pppoe.h +index 9ab2eee..b827620 100644 +--- a/pppd/plugins/rp-pppoe/pppoe.h ++++ b/pppd/plugins/rp-pppoe/pppoe.h +@@ -47,6 +47,8 @@ + #include + #endif + ++#include ++ + /* Ugly header files on some Linux boxes... */ + #if defined(HAVE_LINUX_IF_H) + #include +@@ -84,8 +86,6 @@ typedef unsigned long UINT32_t; + #include + #endif + +-#include +- + #ifdef HAVE_NETINET_IF_ETHER_H + #include + diff --git a/bsp/buildroot/package/pppd/pppd.mk b/bsp/buildroot/package/pppd/pppd.mk index 92897be9..55630a8a 100644 --- a/bsp/buildroot/package/pppd/pppd.mk +++ b/bsp/buildroot/package/pppd/pppd.mk @@ -18,7 +18,7 @@ PPPD_TARGET_BINS = chat pppd pppdump pppstats PPPD_RADIUS_CONF = \ dictionary dictionary.ascend dictionary.compat \ dictionary.merit dictionary.microsoft \ - issue port-id-map realms server radiusclient.conf + issue port-id-map realms servers radiusclient.conf ifeq ($(BR2_PACKAGE_PPPD_FILTER),y) PPPD_DEPENDENCIES += libpcap @@ -46,11 +46,11 @@ PPPD_POST_EXTRACT_HOOKS += PPPD_SET_RESOLV_CONF define PPPD_CONFIGURE_CMDS $(SED) 's/FILTER=y/#FILTER=y/' $(PPPD_DIR)/pppd/Makefile.linux $(SED) 's/ifneq ($$(wildcard \/usr\/include\/pcap-bpf.h),)/ifdef FILTER/' $(PPPD_DIR)/*/Makefile.linux - ( cd $(@D); ./configure --prefix=/usr ) + ( cd $(@D); $(TARGET_MAKE_ENV) ./configure --prefix=/usr ) endef define PPPD_BUILD_CMDS - $(MAKE) CC="$(TARGET_CC)" COPTS="$(TARGET_CFLAGS)" \ + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" COPTS="$(TARGET_CFLAGS)" \ -C $(@D) $(PPPD_MAKE_OPTS) endef @@ -104,7 +104,7 @@ define PPPD_INSTALL_TARGET_CMDS endef define PPPD_INSTALL_STAGING_CMDS - $(MAKE) INSTROOT=$(STAGING_DIR)/ -C $(@D) $(PPPD_MAKE_OPTS) install-devel + $(TARGET_MAKE_ENV) $(MAKE) INSTROOT=$(STAGING_DIR)/ -C $(@D) $(PPPD_MAKE_OPTS) install-devel endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/pps-tools/pps-tools.hash b/bsp/buildroot/package/pps-tools/pps-tools.hash index 9fa62cb8..da7bce45 100644 --- a/bsp/buildroot/package/pps-tools/pps-tools.hash +++ b/bsp/buildroot/package/pps-tools/pps-tools.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 28d4e5aa845f659a6ab4174bbf579e22e2d2c87dc72fd6d07306a6a249c27c76 pps-tools-0deb9c7e135e9380a6d09e9d2e938a146bb698c8.tar.gz +sha256 eee0a76118cf11d94f575ee43804a6991379f2c734b400ba01ac4811d0498e97 pps-tools-47333f24af878f67ce48022e8af16419713aa1ac.tar.gz diff --git a/bsp/buildroot/package/pps-tools/pps-tools.mk b/bsp/buildroot/package/pps-tools/pps-tools.mk index 48feea9f..c3e147a4 100644 --- a/bsp/buildroot/package/pps-tools/pps-tools.mk +++ b/bsp/buildroot/package/pps-tools/pps-tools.mk @@ -4,7 +4,7 @@ # ################################################################################ -PPS_TOOLS_VERSION = 0deb9c7e135e9380a6d09e9d2e938a146bb698c8 +PPS_TOOLS_VERSION = 47333f24af878f67ce48022e8af16419713aa1ac PPS_TOOLS_SITE = $(call github,ago,pps-tools,$(PPS_TOOLS_VERSION)) PPS_TOOLS_INSTALL_STAGING = YES PPS_TOOLS_LICENSE = GPLv2+ diff --git a/bsp/buildroot/package/pptp-linux/pptp-linux.mk b/bsp/buildroot/package/pptp-linux/pptp-linux.mk index d7edf6cd..1538457a 100644 --- a/bsp/buildroot/package/pptp-linux/pptp-linux.mk +++ b/bsp/buildroot/package/pptp-linux/pptp-linux.mk @@ -12,7 +12,7 @@ PPTP_LINUX_LICENSE = GPLv2+ PPTP_LINUX_LICENSE_FILES = COPYING define PPTP_LINUX_BUILD_CMDS - $(MAKE) -C $(@D) OPTIMIZE= DEBUG= \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) OPTIMIZE= DEBUG= \ CC="$(TARGET_CC)" \ CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" \ diff --git a/bsp/buildroot/package/privoxy/Config.in b/bsp/buildroot/package/privoxy/Config.in index 8d8d01a7..accb48df 100644 --- a/bsp/buildroot/package/privoxy/Config.in +++ b/bsp/buildroot/package/privoxy/Config.in @@ -1,6 +1,7 @@ config BR2_PACKAGE_PRIVOXY bool "privoxy" depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_PCRE select BR2_PACKAGE_ZLIB help @@ -10,3 +11,7 @@ config BR2_PACKAGE_PRIVOXY obnoxious Internet junk. http://www.privoxy.org/ + +comment "privoxy needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/privoxy/privoxy.hash b/bsp/buildroot/package/privoxy/privoxy.hash index aea8f2d5..72226b14 100644 --- a/bsp/buildroot/package/privoxy/privoxy.hash +++ b/bsp/buildroot/package/privoxy/privoxy.hash @@ -1,3 +1,3 @@ -# From http://sourceforge.net/projects/ijbswa/files/Sources/3.0.24%20%28stable%29/ -md5 44a47d1a5000db8cccd61ace0e25e7f7 privoxy-3.0.24-stable-src.tar.gz -sha1 343c547a9e795ff029a78310963e0c04448975ee privoxy-3.0.24-stable-src.tar.gz +# From http://sourceforge.net/projects/ijbswa/files/Sources/3.0.26%20%28stable%29/ +md5 8a1c842112ccea68c19b7ceb4a0e999f privoxy-3.0.26-stable-src.tar.gz +sha1 b646624006225979f83453ba542e448667f45998 privoxy-3.0.26-stable-src.tar.gz diff --git a/bsp/buildroot/package/privoxy/privoxy.mk b/bsp/buildroot/package/privoxy/privoxy.mk index 4b5a1a6d..267ddc27 100644 --- a/bsp/buildroot/package/privoxy/privoxy.mk +++ b/bsp/buildroot/package/privoxy/privoxy.mk @@ -4,7 +4,7 @@ # ################################################################################ -PRIVOXY_VERSION = 3.0.24 +PRIVOXY_VERSION = 3.0.26 PRIVOXY_SITE = http://downloads.sourceforge.net/project/ijbswa/Sources/$(PRIVOXY_VERSION)%20%28stable%29 PRIVOXY_SOURCE = privoxy-$(PRIVOXY_VERSION)-stable-src.tar.gz # configure not shipped diff --git a/bsp/buildroot/package/procps-ng/0002-use-pkgconfig-for-ncursesw-cflags.patch b/bsp/buildroot/package/procps-ng/0002-use-pkgconfig-for-ncursesw-cflags.patch index c25da3b2..1329ac4b 100644 --- a/bsp/buildroot/package/procps-ng/0002-use-pkgconfig-for-ncursesw-cflags.patch +++ b/bsp/buildroot/package/procps-ng/0002-use-pkgconfig-for-ncursesw-cflags.patch @@ -35,7 +35,7 @@ diff -Nura procps-ng-3.3.10.orig/Makefile.am procps-ng-3.3.10/Makefile.am @@ -97,6 +97,7 @@ slabtop_LDADD = $(LDADD) @NCURSES_LIBS@ watch_SOURCES = watch.c lib/strutils.c lib/fileutils.c - watch_LDADD = $(LDADD) @WATCH_NCURSES_LIBS@ + watch_LDADD = @WATCH_NCURSES_LIBS@ $(CYGWINFLAGS) +watch_CFLAGS = @WATCH_NCURSES_CFLAGS@ top_top_SOURCES = \ top/top.h \ diff --git a/bsp/buildroot/package/procps-ng/procps-ng.hash b/bsp/buildroot/package/procps-ng/procps-ng.hash index c98fb14e..62d61727 100644 --- a/bsp/buildroot/package/procps-ng/procps-ng.hash +++ b/bsp/buildroot/package/procps-ng/procps-ng.hash @@ -1,3 +1,3 @@ # From http://sourceforge.net/projects/procps-ng/files/Production/ -md5 6cc5b94c1c5b8cbc89ad345a7b522f74 procps-ng-3.3.11.tar.xz -sha1 1bdca65547df9ed019bd83649b0f8b8eaa017e25 procps-ng-3.3.11.tar.xz +md5 957e42e8b193490b2111252e4a2b443c procps-ng-3.3.12.tar.xz +sha1 82c0745f150f1385ca01fe7d24f05f74e31c94c6 procps-ng-3.3.12.tar.xz diff --git a/bsp/buildroot/package/procps-ng/procps-ng.mk b/bsp/buildroot/package/procps-ng/procps-ng.mk index ce0f68a8..0f8b20c5 100644 --- a/bsp/buildroot/package/procps-ng/procps-ng.mk +++ b/bsp/buildroot/package/procps-ng/procps-ng.mk @@ -4,10 +4,10 @@ # ################################################################################ -PROCPS_NG_VERSION = 3.3.11 +PROCPS_NG_VERSION = 3.3.12 PROCPS_NG_SOURCE = procps-ng-$(PROCPS_NG_VERSION).tar.xz PROCPS_NG_SITE = http://downloads.sourceforge.net/project/procps-ng/Production -PROCPS_NG_LICENSE = GPLv2+, libproc and libps LGPLv2+ +PROCPS_NG_LICENSE = GPLv2+, LGPLv2+ (libproc and libps) PROCPS_NG_LICENSE_FILES = COPYING COPYING.LIB PROCPS_NG_INSTALL_STAGING = YES PROCPS_NG_DEPENDENCIES = ncurses host-pkgconf diff --git a/bsp/buildroot/package/proftpd/proftpd.hash b/bsp/buildroot/package/proftpd/proftpd.hash index 07353404..cc8add99 100644 --- a/bsp/buildroot/package/proftpd/proftpd.hash +++ b/bsp/buildroot/package/proftpd/proftpd.hash @@ -1,4 +1,4 @@ -# From ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5b.tar.gz.md5 -md5 f7b8e3a383b34a894c2502db74ccccde proftpd-1.3.5b.tar.gz +# From ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5d.tar.gz.md5 +md5 bcd2846edf0dad4c4d49a7c8c176d83a proftpd-1.3.5d.tar.gz # Locally calculated -sha256 afc1789f2478acf88dfdc7d70da90a4fa2786d628218e9574273295d044b4fc8 proftpd-1.3.5b.tar.gz +sha256 f4e2997be7f22a5b31d7ac72497ed4f4471d24d32385978350410713e76129ac proftpd-1.3.5d.tar.gz diff --git a/bsp/buildroot/package/proftpd/proftpd.mk b/bsp/buildroot/package/proftpd/proftpd.mk index a70f41ef..b5ffddc0 100644 --- a/bsp/buildroot/package/proftpd/proftpd.mk +++ b/bsp/buildroot/package/proftpd/proftpd.mk @@ -4,8 +4,7 @@ # ################################################################################ -PROFTPD_VERSION = 1.3.5b -PROFTPD_SOURCE = proftpd-$(PROFTPD_VERSION).tar.gz +PROFTPD_VERSION = 1.3.5d PROFTPD_SITE = ftp://ftp.proftpd.org/distrib/source PROFTPD_LICENSE = GPLv2+ PROFTPD_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/protobuf/0001-Fix-GOOGLE_PROTOBUF_ATOMICOPS_ERROR-syntax-error.patch b/bsp/buildroot/package/protobuf/0001-Fix-GOOGLE_PROTOBUF_ATOMICOPS_ERROR-syntax-error.patch deleted file mode 100644 index c271ea45..00000000 --- a/bsp/buildroot/package/protobuf/0001-Fix-GOOGLE_PROTOBUF_ATOMICOPS_ERROR-syntax-error.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 50982f711de6ad58f6e0bef01a75d2b9cf35f5dc Mon Sep 17 00:00:00 2001 -From: George Redivo -Date: Mon, 6 Jul 2015 16:56:41 -0300 -Subject: [PATCH 1/2] Fix GOOGLE_PROTOBUF_ATOMICOPS_ERROR syntax error -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It's not possible to define "#error" inside a define. -It causes 'error: stray ‘#’ in program' compilation error. - -Now the define GOOGLE_PROTOBUF_ATOMICOPS_ERROR is the error message -and it's used along the code together "#error". ---- - src/google/protobuf/stubs/atomicops.h | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/google/protobuf/stubs/atomicops.h b/src/google/protobuf/stubs/atomicops.h -index b1336e3..a130b38 100644 ---- a/src/google/protobuf/stubs/atomicops.h -+++ b/src/google/protobuf/stubs/atomicops.h -@@ -162,7 +162,7 @@ Atomic64 Release_Load(volatile const Atomic64* ptr); - - // Include our platform specific implementation. - #define GOOGLE_PROTOBUF_ATOMICOPS_ERROR \ --#error "Atomic operations are not supported on your platform" -+"Atomic operations are not supported on your platform" - - // ThreadSanitizer, http://clang.llvm.org/docs/ThreadSanitizer.html. - #if defined(THREAD_SANITIZER) -@@ -172,7 +172,7 @@ Atomic64 Release_Load(volatile const Atomic64* ptr); - #if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64) - #include - #else --GOOGLE_PROTOBUF_ATOMICOPS_ERROR -+#error GOOGLE_PROTOBUF_ATOMICOPS_ERROR - #endif - - // Solaris -@@ -203,15 +203,15 @@ GOOGLE_PROTOBUF_ATOMICOPS_ERROR - #if __has_extension(c_atomic) - #include - #else --GOOGLE_PROTOBUF_ATOMICOPS_ERROR -+#error GOOGLE_PROTOBUF_ATOMICOPS_ERROR - #endif - #else --GOOGLE_PROTOBUF_ATOMICOPS_ERROR -+#error GOOGLE_PROTOBUF_ATOMICOPS_ERROR - #endif - - // Unknown. - #else --GOOGLE_PROTOBUF_ATOMICOPS_ERROR -+#error GOOGLE_PROTOBUF_ATOMICOPS_ERROR - #endif - - // On some platforms we need additional declarations to make AtomicWord --- -2.5.0 - diff --git a/bsp/buildroot/package/protobuf/0002-configure.ac-check-if-libatomic-is-needed.patch b/bsp/buildroot/package/protobuf/0001-configure.ac-check-if-libatomic-is-needed.patch similarity index 85% rename from bsp/buildroot/package/protobuf/0002-configure.ac-check-if-libatomic-is-needed.patch rename to bsp/buildroot/package/protobuf/0001-configure.ac-check-if-libatomic-is-needed.patch index a70a23e7..fffdf49f 100644 --- a/bsp/buildroot/package/protobuf/0002-configure.ac-check-if-libatomic-is-needed.patch +++ b/bsp/buildroot/package/protobuf/0001-configure.ac-check-if-libatomic-is-needed.patch @@ -20,8 +20,8 @@ diff --git a/configure.ac b/configure.ac index c07067c..88d4a0d 100644 --- a/configure.ac +++ b/configure.ac -@@ -139,6 +139,8 @@ AM_CONDITIONAL([USE_EXTERNAL_PROTOC], [test "$with_protoc" != "no"]) - ACX_PTHREAD +@@ -160,6 +160,8 @@ AM_CONDITIONAL([HAVE_PTHREAD], [test "x$acx_pthread_ok" = "xyes"]) + # We still keep this for improving pbconfig.h for unsupported platforms. AC_CXX_STL_HASH +AC_SEARCH_LIBS([__atomic_load_4], [atomic]) diff --git a/bsp/buildroot/package/protobuf/protobuf.hash b/bsp/buildroot/package/protobuf/protobuf.hash index 78285b72..b681650a 100644 --- a/bsp/buildroot/package/protobuf/protobuf.hash +++ b/bsp/buildroot/package/protobuf/protobuf.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 2667b7cda4a6bc8a09e5463adf3b5984e08d94e72338277affa8594d8b6e5cd1 protobuf-v2.6.1.tar.gz +sha256 f5b3563f118f1d3d6e001705fa7082e8fc3bda50038ac3dff787650795734146 protobuf-v3.0.0.tar.gz diff --git a/bsp/buildroot/package/protobuf/protobuf.mk b/bsp/buildroot/package/protobuf/protobuf.mk index 3eeadfc4..dabbfb7a 100644 --- a/bsp/buildroot/package/protobuf/protobuf.mk +++ b/bsp/buildroot/package/protobuf/protobuf.mk @@ -4,7 +4,10 @@ # ################################################################################ -PROTOBUF_VERSION = v2.6.1 +# When bumping this package, make sure to also verify if the +# python-protobuf package still works, as they share the same +# version/site variables. +PROTOBUF_VERSION = v3.0.0 PROTOBUF_SITE = $(call github,google,protobuf,$(PROTOBUF_VERSION)) PROTOBUF_LICENSE = BSD-3c PROTOBUF_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/proxychains-ng/proxychains-ng.mk b/bsp/buildroot/package/proxychains-ng/proxychains-ng.mk index ca2664ef..54e7dcd6 100644 --- a/bsp/buildroot/package/proxychains-ng/proxychains-ng.mk +++ b/bsp/buildroot/package/proxychains-ng/proxychains-ng.mk @@ -20,7 +20,7 @@ define PROXYCHAINS_NG_BUILD_CMDS endef define PROXYCHAINS_NG_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install install-config + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install install-config endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/pru-software-support/Config.in b/bsp/buildroot/package/pru-software-support/Config.in new file mode 100644 index 00000000..4e34806e --- /dev/null +++ b/bsp/buildroot/package/pru-software-support/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PRU_SOFTWARE_SUPPORT + bool "pru-software-support" + depends on BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_PRU_SOFTWARE_SUPPORT + help + PRU firmware examples extracted from TI's PRU software + support package. See readme.txt for installation details. + + https://git.ti.com/pru-software-support-package/pru-software-support-package diff --git a/bsp/buildroot/package/pru-software-support/Config.in.host b/bsp/buildroot/package/pru-software-support/Config.in.host new file mode 100644 index 00000000..d362ac5a --- /dev/null +++ b/bsp/buildroot/package/pru-software-support/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_PRU_SOFTWARE_SUPPORT + bool "host pru-software-support" + depends on BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_TI_CGT_PRU + help + This package provides useful headers and libraries for the + PRU unit found on some TI processors e.g. AM3358. Note that + the included labs and examples aren't built, they can be + built using the corresponding target package. + + https://git.ti.com/pru-software-support-package/pru-software-support-package diff --git a/bsp/buildroot/package/pru-software-support/pru-software-support.hash b/bsp/buildroot/package/pru-software-support/pru-software-support.hash new file mode 100644 index 00000000..8f624da7 --- /dev/null +++ b/bsp/buildroot/package/pru-software-support/pru-software-support.hash @@ -0,0 +1,2 @@ +# Locally-calculated hash +sha256 b257535ca9b1641d1a238795f3c7004064c573a91cf4a1fa566e3f7c2360c38f pru-software-support-804b548e69ef9fdf44445f6d0968d81cb8a1e7b4.tar.gz diff --git a/bsp/buildroot/package/pru-software-support/pru-software-support.mk b/bsp/buildroot/package/pru-software-support/pru-software-support.mk new file mode 100644 index 00000000..06983c27 --- /dev/null +++ b/bsp/buildroot/package/pru-software-support/pru-software-support.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# pru-software-support +# +################################################################################ + +PRU_SOFTWARE_SUPPORT_VERSION = 804b548e69ef9fdf44445f6d0968d81cb8a1e7b4 +PRU_SOFTWARE_SUPPORT_SITE = git://git.ti.com/pru-software-support-package/pru-software-support-package.git +PRU_SOFTWARE_SUPPORT_LICENSE = BSD-3c, GPLv2, Public Domain +PRU_SOFTWARE_SUPPORT_LICENSE_FILES = PRU-Package-v4.0-Manifest.html +PRU_SOFTWARE_SUPPORT_DEPENDENCIES = host-ti-cgt-pru host-pru-software-support +HOST_PRU_SOFTWARE_SUPPORT_DEPENDENCIES = host-ti-cgt-pru + +define HOST_PRU_SOFTWARE_SUPPORT_BUILD_CMDS + $(MAKE) PRU_CGT=$(TI_CGT_PRU_INSTALLDIR) -C $(@D)/lib/src +endef + +# install this library support alongside PRU toolchain i.e. +# everything in TI_CGT_PRU_INSTALLDIR as PRU_CGT +define HOST_PRU_SOFTWARE_SUPPORT_INSTALL_CMDS + mkdir -p $(TI_CGT_PRU_INSTALLDIR)/usr/include + cp -dpfr $(@D)/include/* $(TI_CGT_PRU_INSTALLDIR)/usr/include + mkdir -p $(TI_CGT_PRU_INSTALLDIR)/usr/lib + cp -dpfr $(@D)/lib/src/*/gen/*.lib $(TI_CGT_PRU_INSTALLDIR)/usr/lib/ +endef + +define PRU_SOFTWARE_SUPPORT_BUILD_CMDS + $(MAKE) PRU_CGT=$(TI_CGT_PRU_INSTALLDIR) -C $(@D)/examples +endef + +define PRU_SOFTWARE_SUPPORT_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/pru-software-support + cp -dpfr $(@D)/examples/* $(TARGET_DIR)/usr/share/pru-software-support/ +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/pru-software-support/readme.txt b/bsp/buildroot/package/pru-software-support/readme.txt new file mode 100644 index 00000000..85d7af82 --- /dev/null +++ b/bsp/buildroot/package/pru-software-support/readme.txt @@ -0,0 +1,21 @@ +PRU Software Support +==================== + +Two different packages are provided from the TI PRU software support +code base. + +1. The include files and rpmsg static library for the PRU are + installed alongside the host package for the PRU code generation + tools package i.e. $(TI_CGT_PRU_INSTALLDIR). + +2. A target package for all the examples installed to + /usr/share/pru-software-support/. Users wanting to test a specific + example should copy or link it to a directory where the kernel + looks for firmware, e.g: + + # cp /usr/share/pru-software-support/am335x/PRU_gpioToggle/gen/PRU_gpioToggle.out \ + /lib/firmware/am335x-pru0-fw + +To get started with the PRU, have a look at the labs [1]. + +[1] http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs diff --git a/bsp/buildroot/package/pseudo/0001-Fix-mixed-tab-space-indentation.patch b/bsp/buildroot/package/pseudo/0001-Fix-mixed-tab-space-indentation.patch new file mode 100644 index 00000000..6b62c1af --- /dev/null +++ b/bsp/buildroot/package/pseudo/0001-Fix-mixed-tab-space-indentation.patch @@ -0,0 +1,105 @@ +From bf4e5310547603bf36e67dc4cba027963f16508e Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Fri, 4 Nov 2016 11:53:48 -0400 +Subject: [PATCH 1/3] Fix mixed tab/space indentation +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +CC="cc -pipe -std=gnu99 -Wall -W -Wextra -fPIC -D_LARGEFILE64_SOURCE -D_ATFILE_SOURCE -DPSEUDO_PREFIX='"/usr/local"' -DPSEUDO_SUFFIX='""' -DPSEUDO_BINDIR='"bin"' -DPSEUDO_LIBDIR='"lib64"' -DPSEUDO_LOCALSTATEDIR='"var/pseudo"' -DPSEUDO_VERSION='"1.8.1"' -DUSE_MEMORY_DB -DPSEUDO_PASSWD_FALLBACK='""' -DPSEUDO_XATTR_SUPPORT -O2 -g " ./makewrappers "xattr=true" + File "./makewrappers", line 327 + return """/* This function is not called if pseudo is configured --enable-force-async */ + ^ +TabError: inconsistent use of tabs and spaces in indentation + +Signed-off-by: Gaël PORTAY +--- + makewrappers | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +diff --git a/makewrappers b/makewrappers +index e9191ed..303e2cc 100755 +--- a/makewrappers ++++ b/makewrappers +@@ -324,7 +324,7 @@ class Function: + + def maybe_async_skip(self): + if self.async_skip: +- return """/* This function is not called if pseudo is configured --enable-force-async */ ++ return """/* This function is not called if pseudo is configured --enable-force-async */ + #ifdef PSEUDO_FORCE_ASYNC + if (!pseudo_allow_fsync) { + PROFILE_DONE; +@@ -333,7 +333,7 @@ class Function: + #endif + """ % self.async_skip + else: +- return "" ++ return "" + + def comment(self): + """declare self (in a comment)""" +@@ -393,11 +393,11 @@ class Function: + + def rc_format(self): + """the format string to use for the return value""" +- return typedata.get(self.type, { 'format': '[%s]', 'value': '"' + self.type + '"' })['format'] ++ return typedata.get(self.type, { 'format': '[%s]', 'value': '"' + self.type + '"' })['format'] + + def rc_value(self): + """the value to pass for the format string for the return value""" +- return typedata.get(self.type, { 'format': '[%s]', 'value': '"' + self.type + '"' })['value'] ++ return typedata.get(self.type, { 'format': '[%s]', 'value': '"' + self.type + '"' })['value'] + + def rc_decl(self): + """declare rc (if needed)""" +@@ -456,7 +456,7 @@ additional ports to include. + self.name = port + self.subports = [] + self.preports = [] +- print port ++ print port + + if os.path.exists(self.portfile("pseudo_wrappers.c")): + self.wrappers = self.portfile("pseudo_wrappers.c") +@@ -522,11 +522,11 @@ additional ports to include. + return '#define PSEUDO_PORT_%s 1' % string.upper(self.name).replace('/', '_') + + def portdeps(self): +- deps = [] +- if self.wrappers: +- deps.append(self.wrappers) +- if self.portdef_file: +- deps.append(self.portdef_file) ++ deps = [] ++ if self.wrappers: ++ deps.append(self.wrappers) ++ if self.portdef_file: ++ deps.append(self.portdef_file) + if deps: + return 'pseudo_wrappers.o: %s' % ' '.join(deps) + else: +@@ -590,7 +590,7 @@ def main(argv): + + for arg in argv: + name, value = arg.split('=') +- os.environ["port_" + name] = value ++ os.environ["port_" + name] = value + + # error checking helpfully provided by the exception handler + copyright_file = open('guts/COPYRIGHT') +@@ -599,9 +599,9 @@ def main(argv): + + for path in glob.glob('templates/*'): + try: +- print "Considering template: " + path ++ print "Considering template: " + path + source = TemplateFile(path) +- if source.name.endswith('.c') or source.name.endswith('.h'): ++ if source.name.endswith('.c') or source.name.endswith('.h'): + source.emit('copyright') + source.emit('header') + sources.append(source) +-- +2.10.1 + diff --git a/bsp/buildroot/package/pseudo/0002-Fix-missing-parentheses-at-print.patch b/bsp/buildroot/package/pseudo/0002-Fix-missing-parentheses-at-print.patch new file mode 100644 index 00000000..b023fcf8 --- /dev/null +++ b/bsp/buildroot/package/pseudo/0002-Fix-missing-parentheses-at-print.patch @@ -0,0 +1,190 @@ +From 6488a68ca715d8e18f899e536effceb548ed136e Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Fri, 4 Nov 2016 12:23:25 -0400 +Subject: [PATCH 2/3] Fix missing parentheses at print +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +CC="cc -pipe -std=gnu99 -Wall -W -Wextra -fPIC -D_LARGEFILE64_SOURCE -D_ATFILE_SOURCE -DPSEUDO_PREFIX='"/usr/local"' -DPSEUDO_SUFFIX='""' -DPSEUDO_BINDIR='"bin"' -DPSEUDO_LIBDIR='"lib64"' -DPSEUDO_LOCALSTATEDIR='"var/pseudo"' -DPSEUDO_VERSION='"1.8.1"' -DUSE_MEMORY_DB -DPSEUDO_PASSWD_FALLBACK='""' -DPSEUDO_XATTR_SUPPORT -O2 -g " ./makewrappers "xattr=true" + File "./makewrappers", line 459 + print port + ^ +SyntaxError: Missing parentheses in call to 'print' + +Signed-off-by: Gaël PORTAY +--- + maketables | 12 ++++++------ + makewrappers | 32 ++++++++++++++++---------------- + templatefile.py | 8 ++++---- + 3 files changed, 26 insertions(+), 26 deletions(-) + +diff --git a/maketables b/maketables +index b32312e..0726485 100755 +--- a/maketables ++++ b/maketables +@@ -73,7 +73,7 @@ class DataType: + for col in columns: + indexed = False + if col.startswith("FLAGS"): +- print "Flags: set for %s" % self.name ++ print("Flags: set for %s" % self.name) + self.flags = True + continue + if col.startswith("INDEXED "): +@@ -248,7 +248,7 @@ def main(): + template_file.emit('header') + templates.append(template_file) + except IOError: +- print "Invalid or malformed template %s. Aborting." % path ++ print("Invalid or malformed template %s. Aborting." % path) + exit(1) + + for filename in sys.argv[1:]: +@@ -256,15 +256,15 @@ def main(): + sys.stdout.write("%s: " % filename) + datatype = DataType(filename) + datatypes.append(datatype) +- print datatype.__repr__() +- print "" ++ print(datatype.__repr__()) ++ print("") + +- print "Writing datatypes...", ++ print("Writing datatypes...") + for datatype in datatypes: + # populate various tables and files with each datatype + for template_file in templates: + template_file.emit('body', datatype) +- print "done. Cleaning up." ++ print("done. Cleaning up.") + + for template_file in templates: + # clean up files +diff --git a/makewrappers b/makewrappers +index 303e2cc..bac856b 100755 +--- a/makewrappers ++++ b/makewrappers +@@ -456,7 +456,7 @@ additional ports to include. + self.name = port + self.subports = [] + self.preports = [] +- print port ++ print(port) + + if os.path.exists(self.portfile("pseudo_wrappers.c")): + self.wrappers = self.portfile("pseudo_wrappers.c") +@@ -504,17 +504,17 @@ additional ports to include. + prefuncs = pre.functions() + for name in prefuncs.keys(): + if name in mergedfuncs: +- print "Warning: %s from %s overriding %s" % (name, pre.name, mergedfuncs[name].port) ++ print("Warning: %s from %s overriding %s" % (name, pre.name, mergedfuncs[name].port)) + mergedfuncs[name] = prefuncs[name] + for name in self.funcs.keys(): + if name in mergedfuncs: +- print "Warning: %s from %s overriding %s" % (name, self.name, mergedfuncs[name].port) ++ print("Warning: %s from %s overriding %s" % (name, self.name, mergedfuncs[name].port)) + mergedfuncs[name] = self.funcs[name] + for sub in self.subports: + subfuncs = sub.functions() + for name in subfuncs.keys(): + if name in mergedfuncs: +- print "Warning: %s from %s overriding %s" % (name, sub.name, mergedfuncs[name].port) ++ print("Warning: %s from %s overriding %s" % (name, sub.name, mergedfuncs[name].port)) + mergedfuncs[name] = subfuncs[name] + return mergedfuncs + +@@ -576,11 +576,11 @@ def process_wrapfuncs(port): + func.directory = directory + funcs[func.name] = func + sys.stdout.write(".") +- except Exception, e: +- print "Parsing failed:", e ++ except Exception(e): ++ print("Parsing failed:", e) + exit(1) + funclist.close() +- print "" ++ print("") + return funcs + + def main(argv): +@@ -599,35 +599,35 @@ def main(argv): + + for path in glob.glob('templates/*'): + try: +- print "Considering template: " + path ++ print("Considering template: " + path) + source = TemplateFile(path) + if source.name.endswith('.c') or source.name.endswith('.h'): + source.emit('copyright') + source.emit('header') + sources.append(source) + except IOError: +- print "Invalid or malformed template %s. Aborting." % path ++ print("Invalid or malformed template %s. Aborting." % path) + exit(1) + + try: + port = Port('common', sources) + + except KeyError: +- print "Unknown uname -s result: '%s'." % uname_s +- print "Known system types are:" +- print "%-20s %-10s %s" % ("uname -s", "port name", "description") ++ print("Unknown uname -s result: '%s'." % uname_s) ++ print("Known system types are:") ++ print("%-20s %-10s %s" % ("uname -s", "port name", "description")) + for key in host_ports: +- print "%-20s %-10s %s" % (key, host_ports[key], +- host_descrs[host_ports[key]]) ++ print("%-20s %-10s %s" % (key, host_ports[key], ++ host_descrs[host_ports[key]])) + + # the per-function stuff +- print "Writing functions...", ++ print("Writing functions...") + all_funcs = port.functions() + for name in sorted(all_funcs.keys()): + # populate various tables and files with each function + for source in sources: + source.emit('body', all_funcs[name]) +- print "done. Cleaning up." ++ print("done. Cleaning up.") + + for source in sources: + # clean up files +diff --git a/templatefile.py b/templatefile.py +index 2789b22..abf9a2c 100644 +--- a/templatefile.py ++++ b/templatefile.py +@@ -79,13 +79,13 @@ class TemplateFile: + return + path = Template(self.path).safe_substitute(item) + if os.path.exists(path): +- # print "We don't overwrite existing files." ++ # print("We don't overwrite existing files.") + return + self.file = open(path, 'w') + if not self.file: +- print "Couldn't open '%s' (expanded from %s), " \ ++ print("Couldn't open '%s' (expanded from %s), " \ + "not emitting '%s'." % \ +- (path, self.path, template) ++ (path, self.path, template)) + return + + def emit(self, template, item=None): +@@ -103,7 +103,7 @@ class TemplateFile: + self.file.write(templ.safe_substitute(item)) + self.file.write("\n") + else: +- print "Warning: Unknown template '%s'." % template ++ print("Warning: Unknown template '%s'." % template) + + if self.file_per_item: + if self.file: +-- +2.10.1 + diff --git a/bsp/buildroot/package/pseudo/0003-Make-it-compatible-with-python3.patch b/bsp/buildroot/package/pseudo/0003-Make-it-compatible-with-python3.patch new file mode 100644 index 00000000..3bb74dea --- /dev/null +++ b/bsp/buildroot/package/pseudo/0003-Make-it-compatible-with-python3.patch @@ -0,0 +1,215 @@ +From fcc10b1f4a9968af5cda1adb9e449df92939d5f2 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Fri, 4 Nov 2016 15:58:46 -0400 +Subject: [PATCH 3/3] Make it compatible with python3 +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +Python scripts are now compatible with both version of python, 2 and 3. + +Helped-by: Damien Riegel +Helped-by: Alexandre Leblanc +Signed-off-by: Gaël PORTAY +--- + maketables | 135 ++++++++++++++++++++++++++++++----------------------------- + makewrappers | 8 ++-- + 2 files changed, 73 insertions(+), 70 deletions(-) + +diff --git a/maketables b/maketables +index 0726485..f74f2b1 100755 +--- a/maketables ++++ b/maketables +@@ -51,6 +51,7 @@ value. (This is for consistency with C array bounds.) + import glob + import sys + import string ++import os + from templatefile import TemplateFile + + class DataType: +@@ -58,74 +59,74 @@ class DataType: + + def __init__(self, path): + """read the first line of path, then make tuples of the rest""" +- source = file(path) +- definition = source.readline().rstrip() +- self.name, qualifiers = string.split(definition, ': ', 2) +- if '; ' in qualifiers: +- self.prefix, columns = string.split(qualifiers, '; ') +- else: +- self.prefix = qualifiers +- columns = [] +- self.flags = False +- if len(columns): +- self.columns = [] +- columns = string.split(columns, ', ') +- for col in columns: +- indexed = False +- if col.startswith("FLAGS"): +- print("Flags: set for %s" % self.name) +- self.flags = True ++ with open(path,'r') as source: ++ definition = source.readline().rstrip() ++ self.name, qualifiers = definition.split(': ', 2) ++ if '; ' in qualifiers: ++ self.prefix, columns = qualifiers.split('; ') ++ else: ++ self.prefix = qualifiers ++ columns = [] ++ self.flags = False ++ if len(columns): ++ self.columns = [] ++ columns = columns.split(', ') ++ for col in columns: ++ indexed = False ++ if col.startswith("FLAGS"): ++ print("Flags: set for %s" % self.name) ++ self.flags = True ++ continue ++ if col.startswith("INDEXED "): ++ col = col[8:] ++ indexed = True ++ if "=" in col: ++ name, default = col.split(' = ') ++ else: ++ name, default = col, "" ++ if " " in name: ++ words = name.split(' ') ++ name = words[-1] ++ del words[-1] ++ type = ' '.join(words) ++ else: ++ type = "char *" ++ self.columns.append({"indexed":indexed, "type":type, "name":name, "value":default}) ++ else: ++ self.columns = [] ++ self.data = [] ++ self.comments = [] ++ index = 1 ++ for line in source.readlines(): ++ item = {} ++ if line.startswith('#'): ++ self.comments.append(line.rstrip().replace('#', '')) + continue +- if col.startswith("INDEXED "): +- col = col[8:] +- indexed = True +- if "=" in col: +- name, default = string.split(col, ' = ') +- else: +- name, default = col, "" +- if " " in name: +- words = string.split(name, ' ') +- name = words[-1] +- del words[-1] +- type = ' '.join(words) +- else: +- type = "char *" +- self.columns.append({"indexed":indexed, "type":type, "name":name, "value":default}) +- else: +- self.columns = [] +- self.data = [] +- self.comments = [] +- index = 1 +- for line in source.readlines(): +- item = {} +- if line.startswith('#'): +- self.comments.append(line.rstrip().replace('#', '')) +- continue +- # first entry on the line is the "real" name/id, following hunks +- # are additional columns +- cols = string.split(line.rstrip(), ', ') +- item["name"] = cols.pop(0) +- item["upper"] = item["name"].replace('-', '_').upper() +- column_list = [] +- for col in self.columns: +- if len(cols) > 0: +- value = cols.pop(0) +- if col["indexed"]: +- if not "max" in col: +- col["max"] = value +- if value > col["max"]: +- col["max"] = value +- if not "min" in col: +- col["min"] = value +- if value < col["min"]: +- col["min"] = value +- column_list.append({"name":col["name"], "value":value}) +- else: +- column_list.append({"name":col["name"], "value":col["value"]}) +- item["cols"] = column_list +- item["index"] = index +- index = index + 1 +- self.data.append(item) ++ # first entry on the line is the "real" name/id, following hunks ++ # are additional columns ++ cols = line.rstrip().split(', ') ++ item["name"] = cols.pop(0) ++ item["upper"] = item["name"].replace('-', '_').upper() ++ column_list = [] ++ for col in self.columns: ++ if len(cols) > 0: ++ value = cols.pop(0) ++ if col["indexed"]: ++ if not "max" in col: ++ col["max"] = value ++ if value > col["max"]: ++ col["max"] = value ++ if not "min" in col: ++ col["min"] = value ++ if value < col["min"]: ++ col["min"] = value ++ column_list.append({"name":col["name"], "value":value}) ++ else: ++ column_list.append({"name":col["name"], "value":col["value"]}) ++ item["cols"] = column_list ++ item["index"] = index ++ index = index + 1 ++ self.data.append(item) + + def __getitem__(self, key): + """Make this object look like a dict for Templates to use""" +diff --git a/makewrappers b/makewrappers +index bac856b..ff08ba0 100755 +--- a/makewrappers ++++ b/makewrappers +@@ -453,6 +453,8 @@ additional ports to include. + """ + + def __init__(self, port, sources): ++ if type(port) is not str: ++ port = str(port, encoding="ascii") + self.name = port + self.subports = [] + self.preports = [] +@@ -483,7 +485,7 @@ additional ports to include. + if retcode: + raise Exception("preports script failed for port %s" % self.name) + +- for preport in string.split(portlist): ++ for preport in portlist.split(): + next = Port(preport, sources) + self.preports.append(next) + +@@ -494,7 +496,7 @@ additional ports to include. + if retcode: + raise Exception("subports script failed for port %s" % self.name) + +- for subport in string.split(portlist): ++ for subport in portlist.split(): + next = Port(subport, sources) + self.subports.append(next) + +@@ -519,7 +521,7 @@ additional ports to include. + return mergedfuncs + + def define(self): +- return '#define PSEUDO_PORT_%s 1' % string.upper(self.name).replace('/', '_') ++ return '#define PSEUDO_PORT_%s 1' % self.name.upper().replace('/', '_') + + def portdeps(self): + deps = [] +-- +2.10.1 + diff --git a/bsp/buildroot/package/pseudo/pseudo.hash b/bsp/buildroot/package/pseudo/pseudo.hash new file mode 100644 index 00000000..1553a293 --- /dev/null +++ b/bsp/buildroot/package/pseudo/pseudo.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 7d4b767302f118fa1c3f89b551cf3f3f2aa92721dab86ff62f0600a394b8a81a pseudo-45eca34c754d416a38bee90fb2d3c110a0b6cc5f.tar.gz diff --git a/bsp/buildroot/package/pseudo/pseudo.mk b/bsp/buildroot/package/pseudo/pseudo.mk new file mode 100644 index 00000000..8144cca8 --- /dev/null +++ b/bsp/buildroot/package/pseudo/pseudo.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# pseudo +# +################################################################################ + +PSEUDO_VERSION = 45eca34c754d416a38bee90fb2d3c110a0b6cc5f +PSEUDO_SITE = https://git.yoctoproject.org/git/pseudo +PSEUDO_SITE_METHOD = git + +# No "or later" clause. +PSEUDO_LICENSE = LGPLv2.1 +PSEUDO_LICENSE_FILES = COPYING + +HOST_PSEUDO_DEPENDENCIES = host-attr host-sqlite + +# configure script is not generated by autoconf, so passing --libdir +# is necessary, even if the infrastructure passes --prefix already. +# It also does not use CFLAGS from the environment, they need to be +# specified with a custom --cflags option. Also force rpath to avoid +# a warning at configure time. +HOST_PSEUDO_CONF_OPTS = \ + --cflags="$(HOSTCFLAGS)" \ + --with-rpath=$(HOST_DIR)/usr/lib \ + --bits=$(if $(filter %64,$(HOSTARCH)),64,32) \ + --libdir=$(HOST_DIR)/usr/lib \ + --with-sqlite=$(HOST_DIR)/usr + +$(eval $(host-autotools-package)) diff --git a/bsp/buildroot/package/ptpd2/ptpd2.mk b/bsp/buildroot/package/ptpd2/ptpd2.mk index da6a1068..d53b1353 100644 --- a/bsp/buildroot/package/ptpd2/ptpd2.mk +++ b/bsp/buildroot/package/ptpd2/ptpd2.mk @@ -24,6 +24,12 @@ else PTPD2_CONF_OPTS += --disable-snmp endif +# GCC bug with Os/O1/O2/O3 +# internal compiler error: in gen_add2_insn, at optabs.c:4454 +ifeq ($(BR2_bfin),y) +PTPD2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O0" +endif + define PTPD2_INSTALL_INIT_SYSV $(INSTALL) -m 755 -D package/ptpd2/S65ptpd2 \ $(TARGET_DIR)/etc/init.d/S65ptpd2 diff --git a/bsp/buildroot/package/pugixml/0001-check-cxx_long_long_type-existence.patch b/bsp/buildroot/package/pugixml/0001-check-cxx_long_long_type-existence.patch new file mode 100644 index 00000000..a53c84a2 --- /dev/null +++ b/bsp/buildroot/package/pugixml/0001-check-cxx_long_long_type-existence.patch @@ -0,0 +1,33 @@ +From 6cfd9c14ced26c8220f7f7ea99610cbdbfb9eba7 Mon Sep 17 00:00:00 2001 +From: Theo Debrouwere +Date: Mon, 12 Sep 2016 09:38:56 +0200 +Subject: [PATCH] Bugfix: check if cxx_long_long_type is present before + applying it. + +Check if cxx_long_long_type is present in the list of compiler features +before adding it as a target_compile_feature. + +Patch was backported from +https://github.com/zeux/pugixml/commit/4dbb5646196a4a3cc94097f1473ef11d1d44df11 + +Signed-off-by: Theo Debrouwere +--- + scripts/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt +index 40a7ab0..6403753 100644 +--- a/scripts/CMakeLists.txt ++++ b/scripts/CMakeLists.txt +@@ -26,7 +26,7 @@ else() + endif() + + # Enable C++11 long long for compilers that are capable of it +-if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1) ++if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1 AND ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_long_long_type;") + target_compile_features(pugixml PUBLIC cxx_long_long_type) + endif() + +-- +2.9.3 + diff --git a/bsp/buildroot/package/pugixml/Config.in b/bsp/buildroot/package/pugixml/Config.in new file mode 100644 index 00000000..d67e6957 --- /dev/null +++ b/bsp/buildroot/package/pugixml/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PUGIXML + bool "pugixml" + depends on BR2_INSTALL_LIBSTDCPP + help + Light-weight, simple and fast XML parser for C++ with XPath support + + Features: + * DOM-like interface with rich traversal/modification capabilities + * Extremely fast non-validating XML parser which constructs the DOM tree + from an XML file/buffer + * XPath 1.0 implementation for complex data-driven tree queries + * Full Unicode support with Unicode interface variants and automatic + encoding conversions + + http://pugixml.org/ + https://github.com/zeux/pugixml + +comment "pugixml needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/bsp/buildroot/package/pugixml/pugixml.hash b/bsp/buildroot/package/pugixml/pugixml.hash new file mode 100644 index 00000000..9007f7ca --- /dev/null +++ b/bsp/buildroot/package/pugixml/pugixml.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 fbe10d46f61d769f7d92a296102e4e2bd3ee16130f11c5b10a1aae590ea1f5ca pugixml-1.7.tar.gz diff --git a/bsp/buildroot/package/pugixml/pugixml.mk b/bsp/buildroot/package/pugixml/pugixml.mk new file mode 100644 index 00000000..2e4f0ce5 --- /dev/null +++ b/bsp/buildroot/package/pugixml/pugixml.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# pugixml +# +################################################################################ + +PUGIXML_VERSION = 1.7 +PUGIXML_SITE = http://github.com/zeux/pugixml/releases/download/v$(PUGIXML_VERSION) +PUGIXML_LICENSE = MIT +PUGIXML_LICENSE_FILES = readme.txt +PUGIXML_INSTALL_STAGING = YES + +PUGIXML_SUBDIR = scripts + +$(eval $(cmake-package)) diff --git a/bsp/buildroot/package/pure-ftpd/Config.in b/bsp/buildroot/package/pure-ftpd/Config.in index c1b2529d..57b78d1a 100644 --- a/bsp/buildroot/package/pure-ftpd/Config.in +++ b/bsp/buildroot/package/pure-ftpd/Config.in @@ -10,3 +10,22 @@ config BR2_PACKAGE_PURE_FTPD well as hosting providers. http://www.pureftpd.org + +if BR2_PACKAGE_PURE_FTPD + +config BR2_PACKAGE_PURE_FTPD_FTPWHO + bool "ftpwho" + help + Enable the pure-ftpd command. Pure-ftpwho shows current Pure-ftpd + client sessions. Only the system administrator may run this. Output + can be text (default), HTML, XML data and parser-optimized. + +config BR2_PACKAGE_PURE_FTPD_QUOTAS + bool "quotas" + help + Enable virtual quotas. With virtual quotas, restrictions can + be placed on the maximum number of files a user can store in + his account. In addition, restrictions can also be placed + on the total size. + +endif diff --git a/bsp/buildroot/package/pure-ftpd/pure-ftpd.mk b/bsp/buildroot/package/pure-ftpd/pure-ftpd.mk index ba4096c2..95e70655 100644 --- a/bsp/buildroot/package/pure-ftpd/pure-ftpd.mk +++ b/bsp/buildroot/package/pure-ftpd/pure-ftpd.mk @@ -45,4 +45,12 @@ ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) PURE_FTPD_CONF_ENV += ax_cv_check_cflags___fPIE=no ax_cv_check_ldflags___fPIE=no endif +ifeq ($(BR2_PACKAGE_PURE_FTPD_FTPWHO),y) +PURE_FTPD_CONF_OPTS += --with-ftpwho +endif + +ifeq ($(BR2_PACKAGE_PURE_FTPD_QUOTAS),y) +PURE_FTPD_CONF_OPTS += --with-quotas +endif + $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/putty/putty.mk b/bsp/buildroot/package/putty/putty.mk index ca86c470..5155714c 100644 --- a/bsp/buildroot/package/putty/putty.mk +++ b/bsp/buildroot/package/putty/putty.mk @@ -5,12 +5,12 @@ ################################################################################ PUTTY_VERSION = 0.67 -PUTTY_SOURCE = putty-$(PUTTY_VERSION).tar.gz PUTTY_SITE = http://the.earth.li/~sgtatham/putty/$(PUTTY_VERSION) PUTTY_SUBDIR = unix PUTTY_LICENSE = MIT PUTTY_LICENSE_FILES = LICENCE PUTTY_CONF_OPTS = --disable-gtktest +PUTTY_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -Wno-error" ifeq ($(BR2_PACKAGE_LIBGTK2),y) PUTTY_CONF_OPTS += --with-gtk=2 diff --git a/bsp/buildroot/package/python-argh/python-argh.hash b/bsp/buildroot/package/python-argh/python-argh.hash index 9e2e0684..6f19de10 100644 --- a/bsp/buildroot/package/python-argh/python-argh.hash +++ b/bsp/buildroot/package/python-argh/python-argh.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/argh/json -md5 5a97ce2ae74bbe3b63194906213f1184 argh-0.26.1.tar.gz -# sha256 calculated by scanpypi -sha256 06a7442cb9130fb8806fe336000fcf20edf1f2f8ad205e7b62cec118505510db argh-0.26.1.tar.gz +# md5 from https://pypi.python.org/pypi/argh/json, sha256 locally computed +md5 edda25f3f0164a963dd89c0e3c619973 argh-0.26.2.tar.gz +sha256 e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65 argh-0.26.2.tar.gz diff --git a/bsp/buildroot/package/python-argh/python-argh.mk b/bsp/buildroot/package/python-argh/python-argh.mk index 4b09e68d..bc5d7133 100644 --- a/bsp/buildroot/package/python-argh/python-argh.mk +++ b/bsp/buildroot/package/python-argh/python-argh.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_ARGH_VERSION = 0.26.1 +PYTHON_ARGH_VERSION = 0.26.2 PYTHON_ARGH_SOURCE = argh-$(PYTHON_ARGH_VERSION).tar.gz -PYTHON_ARGH_SITE = https://pypi.python.org/packages/14/7f/794a7f4a48cba505a4b4c714f81fed844a3a5f7340b171f448711439b09e +PYTHON_ARGH_SITE = https://pypi.python.org/packages/e3/75/1183b5d1663a66aebb2c184e0398724b624cecd4f4b679cb6e25de97ed15 PYTHON_ARGH_SETUP_TYPE = setuptools PYTHON_ARGH_LICENSE = LGPLv3+ PYTHON_ARGH_LICENSE_FILES = README.rst diff --git a/bsp/buildroot/package/python-arrow/Config.in b/bsp/buildroot/package/python-arrow/Config.in new file mode 100644 index 00000000..24495687 --- /dev/null +++ b/bsp/buildroot/package/python-arrow/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_ARROW + bool "python-arrow" + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + help + Better dates and times for Python. + + https://github.com/crsmithdev/arrow/ diff --git a/bsp/buildroot/package/python-arrow/python-arrow.hash b/bsp/buildroot/package/python-arrow/python-arrow.hash new file mode 100644 index 00000000..0b5076aa --- /dev/null +++ b/bsp/buildroot/package/python-arrow/python-arrow.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/arrow/json, sha256 locally computed +md5 5d00592200050ad58284d45a4ee147c6 arrow-0.10.0.tar.gz +sha256 805906f09445afc1f0fc80187db8fe07670e3b25cdafa09b8d8ac264a8c0c722 arrow-0.10.0.tar.gz diff --git a/bsp/buildroot/package/python-arrow/python-arrow.mk b/bsp/buildroot/package/python-arrow/python-arrow.mk new file mode 100644 index 00000000..6e2e331e --- /dev/null +++ b/bsp/buildroot/package/python-arrow/python-arrow.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-arrow +# +################################################################################ + +PYTHON_ARROW_VERSION = 0.10.0 +PYTHON_ARROW_SOURCE = arrow-$(PYTHON_ARROW_VERSION).tar.gz +PYTHON_ARROW_SITE = https://pypi.python.org/packages/54/db/76459c4dd3561bbe682619a5c576ff30c42e37c2e01900ed30a501957150 +PYTHON_ARROW_SETUP_TYPE = setuptools +PYTHON_ARROW_LICENSE = Apache-2.0 +PYTHON_ARROW_LICENSE_FILES = LICENSE docs/_themes/COPYING.txt + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-attrs/Config.in b/bsp/buildroot/package/python-attrs/Config.in new file mode 100644 index 00000000..fb0ab248 --- /dev/null +++ b/bsp/buildroot/package/python-attrs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_ATTRS + bool "python-attrs" + help + attrs is the Python package that will bring back the joy of + writing classes by relieving you from the drudgery of + implementing object protocols (aka dunder methods). + + https://attrs.readthedocs.io/ diff --git a/bsp/buildroot/package/python-attrs/python-attrs.hash b/bsp/buildroot/package/python-attrs/python-attrs.hash new file mode 100644 index 00000000..33ecd2c0 --- /dev/null +++ b/bsp/buildroot/package/python-attrs/python-attrs.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/attrs/json, sha256 locally computed +md5 4ec003c49360853cf935113d1ae56151 attrs-16.3.0.tar.gz +sha256 80203177723e36f3bbe15aa8553da6e80d47bfe53647220ccaa9ad7a5e473ccc attrs-16.3.0.tar.gz diff --git a/bsp/buildroot/package/python-attrs/python-attrs.mk b/bsp/buildroot/package/python-attrs/python-attrs.mk new file mode 100644 index 00000000..5e7985a3 --- /dev/null +++ b/bsp/buildroot/package/python-attrs/python-attrs.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-attrs +# +################################################################################ + +PYTHON_ATTRS_VERSION = 16.3.0 +PYTHON_ATTRS_SOURCE = attrs-$(PYTHON_ATTRS_VERSION).tar.gz +PYTHON_ATTRS_SITE = https://pypi.python.org/packages/01/b0/3ac73bf6df716a38568a16f6a9cbc46cc9e8ed6fe30c8768260030db55d4 +PYTHON_ATTRS_SETUP_TYPE = setuptools +PYTHON_ATTRS_LICENSE = MIT +PYTHON_ATTRS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-autobahn/python-autobahn.hash b/bsp/buildroot/package/python-autobahn/python-autobahn.hash index 1ee1e0e2..cae9160e 100644 --- a/bsp/buildroot/package/python-autobahn/python-autobahn.hash +++ b/bsp/buildroot/package/python-autobahn/python-autobahn.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi/autobahn/json, sha256 locally computed. -md5 576b63ce7fa7846f64650263842b712b autobahn-0.14.1.tar.gz -sha256 c1695e139e36daeaad9cb788dd3f9b907a3fd83b67884424e59b3e07032956e0 autobahn-0.14.1.tar.gz +# md5 from https://pypi.python.org/pypi/autobahn/json, sha256 locally computed +md5 9850702d0078c5a4aa17170afe2f233c autobahn-0.16.0.tar.gz +sha256 a1dcb4315a0914da56ec484659816de72dfad229be4ac19fa61bbc0111ada884 autobahn-0.16.0.tar.gz diff --git a/bsp/buildroot/package/python-autobahn/python-autobahn.mk b/bsp/buildroot/package/python-autobahn/python-autobahn.mk index 2cc2e5d2..a5e9aeea 100644 --- a/bsp/buildroot/package/python-autobahn/python-autobahn.mk +++ b/bsp/buildroot/package/python-autobahn/python-autobahn.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_AUTOBAHN_VERSION = 0.14.1 +PYTHON_AUTOBAHN_VERSION = 0.16.0 PYTHON_AUTOBAHN_SOURCE = autobahn-$(PYTHON_AUTOBAHN_VERSION).tar.gz -PYTHON_AUTOBAHN_SITE = https://pypi.python.org/packages/e3/37/1297551d3066ec9b013dd3a1a7e2cca85900d3fe95194779370e8e7a7af7 +PYTHON_AUTOBAHN_SITE = https://pypi.python.org/packages/68/37/2523309412f0fb93a7784c65e5c5639b4b5d7a84f91374ad6c3c2d5af60b PYTHON_AUTOBAHN_LICENSE = MIT PYTHON_AUTOBAHN_LICENSE_FILES = LICENSE PYTHON_AUTOBAHN_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-babel/Config.in b/bsp/buildroot/package/python-babel/Config.in new file mode 100644 index 00000000..1a22b83f --- /dev/null +++ b/bsp/buildroot/package/python-babel/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_BABEL + bool "python-babel" + select BR2_PACKAGE_PYTHON_PYTZ # runtime + help + A collection of tools for internationalizing Python + applications. + + http://babel.pocoo.org/en/latest/ diff --git a/bsp/buildroot/package/python-babel/python-babel.hash b/bsp/buildroot/package/python-babel/python-babel.hash new file mode 100644 index 00000000..4d753679 --- /dev/null +++ b/bsp/buildroot/package/python-babel/python-babel.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/Babel/json, sha256 locally computed +md5 afa20bc55b0e991833030129ad498f35 Babel-2.3.4.tar.gz +sha256 c535c4403802f6eb38173cd4863e419e2274921a01a8aad8a5b497c131c62875 Babel-2.3.4.tar.gz diff --git a/bsp/buildroot/package/python-babel/python-babel.mk b/bsp/buildroot/package/python-babel/python-babel.mk new file mode 100644 index 00000000..3627b15f --- /dev/null +++ b/bsp/buildroot/package/python-babel/python-babel.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-babel +# +################################################################################ + +PYTHON_BABEL_VERSION = 2.3.4 +PYTHON_BABEL_SOURCE = Babel-$(PYTHON_BABEL_VERSION).tar.gz +PYTHON_BABEL_SITE = https://pypi.python.org/packages/6e/96/ba2a2462ed25ca0e651fb7b66e7080f5315f91425a07ea5b34d7c870c114 +PYTHON_BABEL_SETUP_TYPE = setuptools +PYTHON_BABEL_LICENSE = BSD-3c +PYTHON_BABEL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.hash b/bsp/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.hash index 885c2667..c86879fc 100644 --- a/bsp/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.hash +++ b/bsp/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/beautifulsoup4/json -md5 8fbd9a7cac0704645fa20d1419036815 beautifulsoup4-4.4.1.tar.gz -# sha256 calculated by scanpypi -sha256 87d4013d0625d4789a4f56b8d79a04d5ce6db1152bb65f1d39744f7709a366b4 beautifulsoup4-4.4.1.tar.gz +# md5 from https://pypi.python.org/pypi/beautifulsoup4/json, sha256 locally computed +md5 994abd90e691beaf7d42c00ffb2f3a67 beautifulsoup4-4.5.1.tar.gz +sha256 3c9474036afda9136aac6463def733f81017bf9ef3510d25634f335b0c87f5e1 beautifulsoup4-4.5.1.tar.gz diff --git a/bsp/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.mk b/bsp/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.mk index 58481b97..e2fa9b3c 100644 --- a/bsp/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.mk +++ b/bsp/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_BEAUTIFULSOUP4_VERSION = 4.4.1 +PYTHON_BEAUTIFULSOUP4_VERSION = 4.5.1 PYTHON_BEAUTIFULSOUP4_SOURCE = beautifulsoup4-$(PYTHON_BEAUTIFULSOUP4_VERSION).tar.gz -PYTHON_BEAUTIFULSOUP4_SITE = https://pypi.python.org/packages/source/b/beautifulsoup4 +PYTHON_BEAUTIFULSOUP4_SITE = https://pypi.python.org/packages/86/ea/8e9fbce5c8405b9614f1fd304f7109d9169a3516a493ce4f7f77c39435b7 PYTHON_BEAUTIFULSOUP4_SETUP_TYPE = setuptools PYTHON_BEAUTIFULSOUP4_LICENSE = MIT PYTHON_BEAUTIFULSOUP4_LICENSE_FILES = COPYING.txt diff --git a/bsp/buildroot/package/python-bitstring/Config.in b/bsp/buildroot/package/python-bitstring/Config.in new file mode 100644 index 00000000..93d76825 --- /dev/null +++ b/bsp/buildroot/package/python-bitstring/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_BITSTRING + bool "python-bitstring" + help + Simple construction, analysis and modification of binary data. + + https://github.com/scott-griffiths/bitstring diff --git a/bsp/buildroot/package/python-bitstring/python-bitstring.hash b/bsp/buildroot/package/python-bitstring/python-bitstring.hash new file mode 100644 index 00000000..52630e0a --- /dev/null +++ b/bsp/buildroot/package/python-bitstring/python-bitstring.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 b769620c1b52d6c1548c6c4f055613f4eee3120ed8a5cff4ba4ffbbc8a582286 bitstring-3.1.5.tar.gz diff --git a/bsp/buildroot/package/python-bitstring/python-bitstring.mk b/bsp/buildroot/package/python-bitstring/python-bitstring.mk new file mode 100644 index 00000000..2c8fb995 --- /dev/null +++ b/bsp/buildroot/package/python-bitstring/python-bitstring.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-bitstring +# +################################################################################ + +PYTHON_BITSTRING_VERSION = 3.1.5 +PYTHON_BITSTRING_SOURCE = bitstring-$(PYTHON_BITSTRING_VERSION).tar.gz +PYTHON_BITSTRING_SITE = https://github.com/scott-griffiths/bitstring/archive +PYTHON_BITSTRING_SETUP_TYPE = distutils +PYTHON_BITSTRING_LICENSE = MIT +PYTHON_BITSTRING_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-bottle/python-bottle.hash b/bsp/buildroot/package/python-bottle/python-bottle.hash index 8c7d4281..3006c16e 100644 --- a/bsp/buildroot/package/python-bottle/python-bottle.hash +++ b/bsp/buildroot/package/python-bottle/python-bottle.hash @@ -1,4 +1,3 @@ -# From https://pypi.python.org/pypi/bottle/0.12.7 -md5 ed0b83c9dbbdbde784e7c652d61c59f4 bottle-0.12.7.tar.gz -# Calculated based on the hash above -sha256 e3ea2191f06ca51af45bf6ca41ed2d1b2d809ceda0876466879fe205be7b2073 bottle-0.12.7.tar.gz +# md5 from https://pypi.python.org/pypi/bottle/json, sha256 locally computed +md5 d2fe1b48c1d49217e78bf326b1cad437 bottle-0.12.13.tar.gz +sha256 39b751aee0b167be8dffb63ca81b735bbf1dd0905b3bc42761efedee8f123355 bottle-0.12.13.tar.gz diff --git a/bsp/buildroot/package/python-bottle/python-bottle.mk b/bsp/buildroot/package/python-bottle/python-bottle.mk index 441419ec..6f071f64 100644 --- a/bsp/buildroot/package/python-bottle/python-bottle.mk +++ b/bsp/buildroot/package/python-bottle/python-bottle.mk @@ -4,11 +4,11 @@ # ################################################################################ -PYTHON_BOTTLE_VERSION = 0.12.7 +PYTHON_BOTTLE_VERSION = 0.12.13 PYTHON_BOTTLE_SOURCE = bottle-$(PYTHON_BOTTLE_VERSION).tar.gz -PYTHON_BOTTLE_SITE = http://pypi.python.org/packages/source/b/bottle +PYTHON_BOTTLE_SITE = https://pypi.python.org/packages/bd/99/04dc59ced52a8261ee0f965a8968717a255ea84a36013e527944dbf3468c PYTHON_BOTTLE_LICENSE = MIT # README.rst refers to the file "LICENSE" but it's not included -PYTHON_BOTTLE_SETUP_TYPE = distutils +PYTHON_BOTTLE_SETUP_TYPE = setuptools $(eval $(python-package)) diff --git a/bsp/buildroot/package/python-cbor/python-cbor.hash b/bsp/buildroot/package/python-cbor/python-cbor.hash index 6714348b..a47607d9 100644 --- a/bsp/buildroot/package/python-cbor/python-cbor.hash +++ b/bsp/buildroot/package/python-cbor/python-cbor.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=711ee5ecc896595c1e95c1c48356606c, sha256 locally computed. -md5 711ee5ecc896595c1e95c1c48356606c cbor-0.1.25.tar.gz -sha256 e342d425dde88bb93b741e34e3ba092492ba1f6fca94ce356054fb7daa420746 cbor-0.1.25.tar.gz +# md5 from https://pypi.python.org/pypi/cbor/json, sha256 locally computed +md5 22b03b59784fd78cb6c27aa498af0db6 cbor-1.0.0.tar.gz +sha256 13225a262ddf5615cbd9fd55a76a0d53069d18b07d2e9f19c39e6acb8609bbb6 cbor-1.0.0.tar.gz diff --git a/bsp/buildroot/package/python-cbor/python-cbor.mk b/bsp/buildroot/package/python-cbor/python-cbor.mk index 4c3ce9db..32ca4594 100644 --- a/bsp/buildroot/package/python-cbor/python-cbor.mk +++ b/bsp/buildroot/package/python-cbor/python-cbor.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_CBOR_VERSION = 0.1.25 +PYTHON_CBOR_VERSION = 1.0.0 PYTHON_CBOR_SOURCE = cbor-$(PYTHON_CBOR_VERSION).tar.gz -PYTHON_CBOR_SITE = http://pypi.python.org/packages/source/c/cbor +PYTHON_CBOR_SITE = https://pypi.python.org/packages/9b/99/01c6a987c920500189eb74a291bd3a388e6c7cf85736bb6b066d9833315e PYTHON_CBOR_LICENSE = Apache PYTHON_CBOR_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-certifi/python-certifi.hash b/bsp/buildroot/package/python-certifi/python-certifi.hash index ade4db38..443cc6d3 100644 --- a/bsp/buildroot/package/python-certifi/python-certifi.hash +++ b/bsp/buildroot/package/python-certifi/python-certifi.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=5d672aa766e1f773c75cfeccd02d3650, sha256 locally computed -md5 5d672aa766e1f773c75cfeccd02d3650 certifi-2016.2.28.tar.gz -sha256 5e8eccf95924658c97b990b50552addb64f55e1e3dfe4880456ac1f287dc79d0 certifi-2016.2.28.tar.gz +# md5 from https://pypi.python.org/pypi/certifi/json, sha256 locally computed +md5 baa81e951a29958563689d868ef1064d certifi-2016.9.26.tar.gz +sha256 8275aef1bbeaf05c53715bfc5d8569bd1e04ca1e8e69608cc52bcaac2604eb19 certifi-2016.9.26.tar.gz diff --git a/bsp/buildroot/package/python-certifi/python-certifi.mk b/bsp/buildroot/package/python-certifi/python-certifi.mk index 84db8ffe..f69e7c18 100644 --- a/bsp/buildroot/package/python-certifi/python-certifi.mk +++ b/bsp/buildroot/package/python-certifi/python-certifi.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_CERTIFI_VERSION = 2016.2.28 +PYTHON_CERTIFI_VERSION = 2016.9.26 PYTHON_CERTIFI_SOURCE = certifi-$(PYTHON_CERTIFI_VERSION).tar.gz -PYTHON_CERTIFI_SITE = https://pypi.python.org/packages/source/c/certifi +PYTHON_CERTIFI_SITE = https://pypi.python.org/packages/4f/75/e1bc6e363a2c76f8d7e754c27c437dbe4086414e1d6d2f6b2a3e7846f22b PYTHON_CERTIFI_SETUP_TYPE = setuptools PYTHON_CERTIFI_LICENSE = ISC (Python code), MPL-2.0 (cacert.pem) PYTHON_CERTIFI_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-cffi/python-cffi.hash b/bsp/buildroot/package/python-cffi/python-cffi.hash index 125c93e8..39065bcd 100644 --- a/bsp/buildroot/package/python-cffi/python-cffi.hash +++ b/bsp/buildroot/package/python-cffi/python-cffi.hash @@ -1,4 +1,3 @@ -# From https://pypi.python.org/pypi?:action=show_md5&digest=2fae9160991afefb20ff0fbde3b14faf -md5 2fae9160991afefb20ff0fbde3b14faf cffi-1.6.0.tar.gz -# Calculated based on the hash above -sha256 a7f75c4ef2362c0a0e54657add0a6c509fecbfa3b3807bc0925f5cb1c9f927db cffi-1.6.0.tar.gz +# md5 from https://pypi.python.org/pypi/cffi/json, sha256 locally computed +md5 c8e877fe0426a99d0cf5872cf2f95b27 cffi-1.8.3.tar.gz +sha256 c321bd46faa7847261b89c0469569530cad5a41976bb6dba8202c0159f476568 cffi-1.8.3.tar.gz diff --git a/bsp/buildroot/package/python-cffi/python-cffi.mk b/bsp/buildroot/package/python-cffi/python-cffi.mk index 3c2d5349..d3486956 100644 --- a/bsp/buildroot/package/python-cffi/python-cffi.mk +++ b/bsp/buildroot/package/python-cffi/python-cffi.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_CFFI_VERSION = 1.6.0 +PYTHON_CFFI_VERSION = 1.8.3 PYTHON_CFFI_SOURCE = cffi-$(PYTHON_CFFI_VERSION).tar.gz -PYTHON_CFFI_SITE = https://pypi.python.org/packages/b6/98/11feff87072e2e640fb8320712b781eccdef05d588618915236b32289d5a +PYTHON_CFFI_SITE = https://pypi.python.org/packages/0a/f3/686af8873b70028fccf67b15c78fd4e4667a3da995007afc71e786d61b0a PYTHON_CFFI_SETUP_TYPE = setuptools PYTHON_CFFI_DEPENDENCIES = host-pkgconf libffi PYTHON_CFFI_LICENSE = MIT diff --git a/bsp/buildroot/package/python-chardet/Config.in b/bsp/buildroot/package/python-chardet/Config.in new file mode 100644 index 00000000..8f1cd602 --- /dev/null +++ b/bsp/buildroot/package/python-chardet/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CHARDET + bool "python-chardet" + help + Universal encoding detector for Python 2 and 3. + + https://github.com/chardet/chardet diff --git a/bsp/buildroot/package/python-chardet/python-chardet.hash b/bsp/buildroot/package/python-chardet/python-chardet.hash new file mode 100644 index 00000000..aa4efeb1 --- /dev/null +++ b/bsp/buildroot/package/python-chardet/python-chardet.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/chardet/json, sha256 locally computed +md5 25274d664ccb5130adae08047416e1a8 chardet-2.3.0.tar.gz +sha256 e53e38b3a4afe6d1132de62b7400a4ac363452dc5dfcf8d88e8e0cce663c68aa chardet-2.3.0.tar.gz diff --git a/bsp/buildroot/package/python-chardet/python-chardet.mk b/bsp/buildroot/package/python-chardet/python-chardet.mk new file mode 100644 index 00000000..19629548 --- /dev/null +++ b/bsp/buildroot/package/python-chardet/python-chardet.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-chardet +# +################################################################################ + +PYTHON_CHARDET_VERSION = 2.3.0 +PYTHON_CHARDET_SOURCE = chardet-$(PYTHON_CHARDET_VERSION).tar.gz +PYTHON_CHARDET_SITE = https://pypi.python.org/packages/7d/87/4e3a3f38b2f5c578ce44f8dc2aa053217de9f0b6d737739b0ddac38ed237 +PYTHON_CHARDET_SETUP_TYPE = setuptools +PYTHON_CHARDET_LICENSE = LGPLv2.1+ +PYTHON_CHARDET_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-configobj/python-configobj.hash b/bsp/buildroot/package/python-configobj/python-configobj.hash index e4f5c6ca..d43c4537 100644 --- a/bsp/buildroot/package/python-configobj/python-configobj.hash +++ b/bsp/buildroot/package/python-configobj/python-configobj.hash @@ -1,4 +1,3 @@ -# From https://pypi.python.org/pypi/configobj/4.7.2 -md5 201dbaa732a9049c839f9bb6c27fc7b5 configobj-4.7.2.tar.gz -# Calculated based on the hash above -sha256 515ff923462592e8321df8b48c47e3428f8d406ee22b8de77bef969d1af11171 configobj-4.7.2.tar.gz +# md5 from https://pypi.python.org/pypi/configobj/json, sha256 locally computed +md5 e472a3a1c2a67bb0ec9b5d54c13a47d6 configobj-5.0.6.tar.gz +sha256 a2f5650770e1c87fb335af19a9b7eb73fc05ccf22144eb68db7d00cd2bcb0902 configobj-5.0.6.tar.gz diff --git a/bsp/buildroot/package/python-configobj/python-configobj.mk b/bsp/buildroot/package/python-configobj/python-configobj.mk index 5211b1d3..d9591d5b 100644 --- a/bsp/buildroot/package/python-configobj/python-configobj.mk +++ b/bsp/buildroot/package/python-configobj/python-configobj.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_CONFIGOBJ_VERSION = 4.7.2 +PYTHON_CONFIGOBJ_VERSION = 5.0.6 PYTHON_CONFIGOBJ_SOURCE = configobj-$(PYTHON_CONFIGOBJ_VERSION).tar.gz -PYTHON_CONFIGOBJ_SITE = http://pypi.python.org/packages/source/c/configobj +PYTHON_CONFIGOBJ_SITE = https://pypi.python.org/packages/64/61/079eb60459c44929e684fa7d9e2fdca403f67d64dd9dbac27296be2e0fab PYTHON_CONFIGOBJ_LICENSE = BSD-3c # License only mentioned in the source PYTHON_CONFIGOBJ_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-configshell-fb/Config.in b/bsp/buildroot/package/python-configshell-fb/Config.in index a680ce01..90a295fc 100644 --- a/bsp/buildroot/package/python-configshell-fb/Config.in +++ b/bsp/buildroot/package/python-configshell-fb/Config.in @@ -9,4 +9,4 @@ config BR2_PACKAGE_PYTHON_CONFIGSHELL_FB configshell-fb is a Python library that provides a framework for building simple but nice CLI-based applications. - https://github.com/agrover/configshell-fb + https://github.com/open-iscsi/configshell-fb diff --git a/bsp/buildroot/package/python-configshell-fb/python-configshell-fb.mk b/bsp/buildroot/package/python-configshell-fb/python-configshell-fb.mk index d0671d5e..a2e9cae1 100644 --- a/bsp/buildroot/package/python-configshell-fb/python-configshell-fb.mk +++ b/bsp/buildroot/package/python-configshell-fb/python-configshell-fb.mk @@ -4,8 +4,10 @@ # ################################################################################ +# When upgrading the version, be sure to also upgrade python-rtslib-fb +# and targetcli-fb at the same time. PYTHON_CONFIGSHELL_FB_VERSION = v1.1.fb18 -PYTHON_CONFIGSHELL_FB_SITE = $(call github,agrover,configshell-fb,$(PYTHON_CONFIGSHELL_FB_VERSION)) +PYTHON_CONFIGSHELL_FB_SITE = $(call github,open-iscsi,configshell-fb,$(PYTHON_CONFIGSHELL_FB_VERSION)) PYTHON_CONFIGSHELL_FB_LICENSE = Apache-2.0 PYTHON_CONFIGSHELL_FB_LICENSE_FILES = COPYING PYTHON_CONFIGSHELL_FB_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-constantly/Config.in b/bsp/buildroot/package/python-constantly/Config.in new file mode 100644 index 00000000..13bb2e86 --- /dev/null +++ b/bsp/buildroot/package/python-constantly/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_CONSTANTLY + bool "python-constantly" + help + A library that provides symbolic constant support. It + includes collections and constants with text, numeric, + and bit flag values. + + https://github.com/twisted/constantly diff --git a/bsp/buildroot/package/python-constantly/python-constantly.hash b/bsp/buildroot/package/python-constantly/python-constantly.hash new file mode 100644 index 00000000..fb778770 --- /dev/null +++ b/bsp/buildroot/package/python-constantly/python-constantly.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/constantly/json, sha256 locally computed +md5 f0762f083d83039758e53f8cf0086eef constantly-15.1.0.tar.gz +sha256 586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35 constantly-15.1.0.tar.gz diff --git a/bsp/buildroot/package/python-constantly/python-constantly.mk b/bsp/buildroot/package/python-constantly/python-constantly.mk new file mode 100644 index 00000000..783d198d --- /dev/null +++ b/bsp/buildroot/package/python-constantly/python-constantly.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-constantly +# +################################################################################ + +PYTHON_CONSTANTLY_VERSION = 15.1.0 +PYTHON_CONSTANTLY_SOURCE = constantly-$(PYTHON_CONSTANTLY_VERSION).tar.gz +PYTHON_CONSTANTLY_SITE = https://pypi.python.org/packages/95/f1/207a0a478c4bb34b1b49d5915e2db574cadc415c9ac3a7ef17e29b2e8951 +PYTHON_CONSTANTLY_SETUP_TYPE = setuptools +PYTHON_CONSTANTLY_LICENSE = MIT +PYTHON_CONSTANTLY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-couchdb/Config.in b/bsp/buildroot/package/python-couchdb/Config.in new file mode 100644 index 00000000..9156883b --- /dev/null +++ b/bsp/buildroot/package/python-couchdb/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_COUCHDB + bool "python-couchdb" + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime + help + Python client library for working with CouchDB. + + https://github.com/djc/couchdb-python/ diff --git a/bsp/buildroot/package/python-couchdb/python-couchdb.hash b/bsp/buildroot/package/python-couchdb/python-couchdb.hash new file mode 100644 index 00000000..f9422a8c --- /dev/null +++ b/bsp/buildroot/package/python-couchdb/python-couchdb.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/couchdb/json, sha256 locally computed +md5 2ed5ad2a477fd3cb472ed6dc5a381ff3 CouchDB-1.1.tar.gz +sha256 9503ea413956c33b5e2af248235afb5e0f011f33f816a32e872f8ff9b0a0e710 CouchDB-1.1.tar.gz diff --git a/bsp/buildroot/package/python-couchdb/python-couchdb.mk b/bsp/buildroot/package/python-couchdb/python-couchdb.mk new file mode 100644 index 00000000..c88787c1 --- /dev/null +++ b/bsp/buildroot/package/python-couchdb/python-couchdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-couchdb +# +################################################################################ + +PYTHON_COUCHDB_VERSION = 1.1 +PYTHON_COUCHDB_SOURCE = CouchDB-$(PYTHON_COUCHDB_VERSION).tar.gz +PYTHON_COUCHDB_SITE = https://pypi.python.org/packages/9a/e8/c3c8da6d00145aaca07f2b784794917613dad26532068da4e8392dc48d7f +PYTHON_COUCHDB_SETUP_TYPE = setuptools +PYTHON_COUCHDB_LICENSE = BSD-3c +PYTHON_COUCHDB_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-crcmod/Config.in b/bsp/buildroot/package/python-crcmod/Config.in new file mode 100644 index 00000000..289a3aee --- /dev/null +++ b/bsp/buildroot/package/python-crcmod/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_CRCMOD + bool "python-crcmod" + help + The software in this package is a Python module for + generating objects that compute the Cyclic Redundancy + Check (CRC). + + http://crcmod.sourceforge.net/ diff --git a/bsp/buildroot/package/python-crcmod/python-crcmod.hash b/bsp/buildroot/package/python-crcmod/python-crcmod.hash new file mode 100644 index 00000000..7ce549c3 --- /dev/null +++ b/bsp/buildroot/package/python-crcmod/python-crcmod.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/crcmod/json, sha256 locally computed +md5 2d5b92117d958dcead94f9e17f54cd32 crcmod-1.7.tar.gz +sha256 dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e crcmod-1.7.tar.gz diff --git a/bsp/buildroot/package/python-crcmod/python-crcmod.mk b/bsp/buildroot/package/python-crcmod/python-crcmod.mk new file mode 100644 index 00000000..1aab7f50 --- /dev/null +++ b/bsp/buildroot/package/python-crcmod/python-crcmod.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-crcmod +# +################################################################################ + +PYTHON_CRCMOD_VERSION = 1.7 +PYTHON_CRCMOD_SOURCE = crcmod-$(PYTHON_CRCMOD_VERSION).tar.gz +PYTHON_CRCMOD_SITE = https://pypi.python.org/packages/6b/b0/e595ce2a2527e169c3bcd6c33d2473c1918e0b7f6826a043ca1245dd4e5b +PYTHON_CRCMOD_SETUP_TYPE = distutils +PYTHON_CRCMOD_LICENSE = MIT +PYTHON_CRCMOD_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-crossbar/Config.in b/bsp/buildroot/package/python-crossbar/Config.in index be833251..7ef1aadb 100644 --- a/bsp/buildroot/package/python-crossbar/Config.in +++ b/bsp/buildroot/package/python-crossbar/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_PYTHON_CROSSBAR bool "python-crossbar" + depends on !BR2_TOOLCHAIN_USES_MUSL # python-psutil # All the following dependencies are runtime dependencies select BR2_PACKAGE_PYTHON_AUTOBAHN select BR2_PACKAGE_PYTHON_CBOR @@ -39,5 +40,5 @@ config BR2_PACKAGE_PYTHON_CROSSBAR https://pypi.python.org/pypi/crossbar -comment "python-crossbar needs a toolchain w/ C++" - depends on !BR2_INSTALL_LIBSTDCPP +comment "python-crossbar needs a uClibc or glibc toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_USES_MUSL diff --git a/bsp/buildroot/package/python-cryptography/python-cryptography.hash b/bsp/buildroot/package/python-cryptography/python-cryptography.hash index 3f8f61b2..7738d234 100644 --- a/bsp/buildroot/package/python-cryptography/python-cryptography.hash +++ b/bsp/buildroot/package/python-cryptography/python-cryptography.hash @@ -1,4 +1,3 @@ -# From https://pypi.python.org/pypi?:action=show_md5&digest=defd153ed901089f5aeac6eb066d5ef7 -md5 defd153ed901089f5aeac6eb066d5ef7 cryptography-1.3.4.tar.gz -# Calculated based on the hash above -sha256 423ff890c01be7c70dbfeaa967eeef5146f1a43a5f810ffdc07b178e48a105a9 cryptography-1.3.4.tar.gz +# md5 from https://pypi.python.org/pypi/cryptography/json, sha256 locally computed +md5 2f63dee6ace602d1d20d1995f8538015 cryptography-1.7.1.tar.gz +sha256 953fef7d40a49a795f4d955c5ce4338abcec5dea822ed0414ed30348303fdb4c cryptography-1.7.1.tar.gz diff --git a/bsp/buildroot/package/python-cryptography/python-cryptography.mk b/bsp/buildroot/package/python-cryptography/python-cryptography.mk index fe392f97..d4e18ec1 100644 --- a/bsp/buildroot/package/python-cryptography/python-cryptography.mk +++ b/bsp/buildroot/package/python-cryptography/python-cryptography.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_CRYPTOGRAPHY_VERSION = 1.3.4 +PYTHON_CRYPTOGRAPHY_VERSION = 1.7.1 PYTHON_CRYPTOGRAPHY_SOURCE = cryptography-$(PYTHON_CRYPTOGRAPHY_VERSION).tar.gz -PYTHON_CRYPTOGRAPHY_SITE = https://pypi.python.org/packages/f8/70/d7bd5c9c764732d5876ad34293e1ca55b2305a73ae6fcf1312202d1a798e +PYTHON_CRYPTOGRAPHY_SITE = https://pypi.python.org/packages/82/f7/d6dfd7595910a20a563a83a762bf79a253c4df71759c3b228accb3d7e5e4 PYTHON_CRYPTOGRAPHY_SETUP_TYPE = setuptools PYTHON_CRYPTOGRAPHY_LICENSE = Apache-2.0 or BSD-3c PYTHON_CRYPTOGRAPHY_LICENSE_FILES = LICENSE LICENSE.APACHE LICENSE.BSD diff --git a/bsp/buildroot/package/python-cssutils/Config.in b/bsp/buildroot/package/python-cssutils/Config.in new file mode 100644 index 00000000..74de742c --- /dev/null +++ b/bsp/buildroot/package/python-cssutils/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_CSSUTILS + bool "python-cssutils" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + help + A CSS Cascading Style Sheets library for Python. + + http://cthedot.de/cssutils/ diff --git a/bsp/buildroot/package/python-cssutils/python-cssutils.hash b/bsp/buildroot/package/python-cssutils/python-cssutils.hash new file mode 100644 index 00000000..7b188bcd --- /dev/null +++ b/bsp/buildroot/package/python-cssutils/python-cssutils.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/cssutils/json, sha256 locally computed +md5 7fcdf2c3e9f053136af1990146eb361d cssutils-1.0.1.tar.gz +sha256 d8a18b2848ea1011750231f1dd64fe9053dbec1be0b37563c582561e7a529063 cssutils-1.0.1.tar.gz diff --git a/bsp/buildroot/package/python-cssutils/python-cssutils.mk b/bsp/buildroot/package/python-cssutils/python-cssutils.mk new file mode 100644 index 00000000..3dd501aa --- /dev/null +++ b/bsp/buildroot/package/python-cssutils/python-cssutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cssutils +# +################################################################################ + +PYTHON_CSSUTILS_VERSION = 1.0.1 +PYTHON_CSSUTILS_SOURCE = cssutils-$(PYTHON_CSSUTILS_VERSION).tar.gz +PYTHON_CSSUTILS_SITE = https://pypi.python.org/packages/22/de/6b03e0088baf0299ab7d2e95a9e26c2092e9cb3855876b958b6a62175ca2 +PYTHON_CSSUTILS_LICENSE = LGPLv3+ +PYTHON_CSSUTILS_LICENSE_FILES = COPYING.LESSER +PYTHON_CSSUTILS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-daemon/Config.in b/bsp/buildroot/package/python-daemon/Config.in index b3cc8a2d..21f44074 100644 --- a/bsp/buildroot/package/python-daemon/Config.in +++ b/bsp/buildroot/package/python-daemon/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_PYTHON_DAEMON bool "python-daemon" - depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_DOCUTILS # runtime help Library to implement a well-behaved Unix daemon process. diff --git a/bsp/buildroot/package/python-daemon/python-daemon.hash b/bsp/buildroot/package/python-daemon/python-daemon.hash index 5b3a4d2b..12977b57 100644 --- a/bsp/buildroot/package/python-daemon/python-daemon.hash +++ b/bsp/buildroot/package/python-daemon/python-daemon.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 1406962e48ce03642c6057f40f9ffd49493792a7b34357fe9e264708748c83c0 python-daemon-1.5.5.tar.gz +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=72e2acf2c3d69c7fa75a6625d06adfd0, sha256 locally computed +md5 72e2acf2c3d69c7fa75a6625d06adfd0 python-daemon-2.1.1.tar.gz +sha256 58a8c187ee37c3a28913bef00f83240c9ecd4a59dce09a24d92f5c941606689f python-daemon-2.1.1.tar.gz diff --git a/bsp/buildroot/package/python-daemon/python-daemon.mk b/bsp/buildroot/package/python-daemon/python-daemon.mk index b8b80baa..648d549c 100644 --- a/bsp/buildroot/package/python-daemon/python-daemon.mk +++ b/bsp/buildroot/package/python-daemon/python-daemon.mk @@ -4,10 +4,11 @@ # ################################################################################ -PYTHON_DAEMON_VERSION = 1.5.5 +PYTHON_DAEMON_VERSION = 2.1.1 PYTHON_DAEMON_SITE = https://pypi.python.org/packages/source/p/python-daemon -PYTHON_DAEMON_LICENSE = Python-2.0 (library), GPLv2+ (test) -PYTHON_DAEMON_LICENSE_FILES = LICENSE.PSF-2 LICENSE.GPL-2 +PYTHON_DAEMON_LICENSE = Apache-2.0 (library), GPLv3+ (test, build) +PYTHON_DAEMON_LICENSE_FILES = LICENSE.ASF-2 LICENSE.GPL-3 PYTHON_DAEMON_SETUP_TYPE = setuptools +PYTHON_DAEMON_DEPENDENCIES = host-python-docutils $(eval $(python-package)) diff --git a/bsp/buildroot/package/python-dataproperty/Config.in b/bsp/buildroot/package/python-dataproperty/Config.in index a490b987..7ef7f085 100644 --- a/bsp/buildroot/package/python-dataproperty/Config.in +++ b/bsp/buildroot/package/python-dataproperty/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_PYTHON_DATAPROPERTY bool "python-dataproperty" + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime select BR2_PACKAGE_PYTHON_DATEUTIL # runtime select BR2_PACKAGE_PYTHON_PYTZ # runtime select BR2_PACKAGE_PYTHON_SIX # runtime diff --git a/bsp/buildroot/package/python-dataproperty/python-dataproperty.hash b/bsp/buildroot/package/python-dataproperty/python-dataproperty.hash index 916352ed..d84b2145 100644 --- a/bsp/buildroot/package/python-dataproperty/python-dataproperty.hash +++ b/bsp/buildroot/package/python-dataproperty/python-dataproperty.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/dataproperty/json -md5 7ad4dabb5469bb3f150dd1018680119c DataProperty-0.7.1.tar.gz -# sha256 calculated by scanpypi -sha256 2d53019e6ca7b95511ec733ea57dc108d916d2dd0818d88d1b7c0e06854a2d2e DataProperty-0.7.1.tar.gz +# md5 from https://pypi.python.org/pypi/dataproperty/json, sha256 locally computed +md5 a05cb97210d41677bde224b53562add4 DataProperty-0.16.2.tar.gz +sha256 c2c6e1f2558bf03b0f8f2dc53a5eb00d9540babd3d69d299be878f2e32937e53 DataProperty-0.16.2.tar.gz diff --git a/bsp/buildroot/package/python-dataproperty/python-dataproperty.mk b/bsp/buildroot/package/python-dataproperty/python-dataproperty.mk index 927fa69d..997019c7 100644 --- a/bsp/buildroot/package/python-dataproperty/python-dataproperty.mk +++ b/bsp/buildroot/package/python-dataproperty/python-dataproperty.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_DATAPROPERTY_VERSION = 0.7.1 +PYTHON_DATAPROPERTY_VERSION = 0.16.2 PYTHON_DATAPROPERTY_SOURCE = DataProperty-$(PYTHON_DATAPROPERTY_VERSION).tar.gz -PYTHON_DATAPROPERTY_SITE = https://pypi.python.org/packages/1f/64/b17e5ab3935484869cc3e8ec06ede0c94a296b4955c947d1dfe4460955f9 +PYTHON_DATAPROPERTY_SITE = https://pypi.python.org/packages/c8/95/4803e558a7e29ccf3adbf8f993ec53fe28c46df450892c4cc35c2f0ccedc PYTHON_DATAPROPERTY_SETUP_TYPE = setuptools PYTHON_DATAPROPERTY_LICENSE = MIT PYTHON_DATAPROPERTY_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-dateutil/python-dateutil.hash b/bsp/buildroot/package/python-dateutil/python-dateutil.hash index 9eff0160..adc24bdd 100644 --- a/bsp/buildroot/package/python-dateutil/python-dateutil.hash +++ b/bsp/buildroot/package/python-dateutil/python-dateutil.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/python-dateutil/json -md5 05ffc6d2cc85a7fd93bb245807f715ef python-dateutil-2.5.3.tar.gz -# sha256 calculated by scanpypi -sha256 1408fdb07c6a1fa9997567ce3fcee6a337b39a503d80699e0f213de4aa4b32ed python-dateutil-2.5.3.tar.gz +# md5 from https://pypi.python.org/pypi/python-dateutil/json, sha256 locally computed +md5 6e38f91e8c94c15a79ce22768dfeca87 python-dateutil-2.6.0.tar.gz +sha256 62a2f8df3d66f878373fd0072eacf4ee52194ba302e00082828e0d263b0418d2 python-dateutil-2.6.0.tar.gz diff --git a/bsp/buildroot/package/python-dateutil/python-dateutil.mk b/bsp/buildroot/package/python-dateutil/python-dateutil.mk index 371788cf..b1f5e68b 100644 --- a/bsp/buildroot/package/python-dateutil/python-dateutil.mk +++ b/bsp/buildroot/package/python-dateutil/python-dateutil.mk @@ -4,9 +4,8 @@ # ################################################################################ -PYTHON_DATEUTIL_VERSION = 2.5.3 -PYTHON_DATEUTIL_SOURCE = python-dateutil-$(PYTHON_DATEUTIL_VERSION).tar.gz -PYTHON_DATEUTIL_SITE = https://pypi.python.org/packages/3e/f5/aad82824b369332a676a90a8c0d1e608b17e740bbb6aeeebca726f17b902 +PYTHON_DATEUTIL_VERSION = 2.6.0 +PYTHON_DATEUTIL_SITE = https://pypi.python.org/packages/51/fc/39a3fbde6864942e8bb24c93663734b74e281b984d1b8c4f95d64b0c21f6 PYTHON_DATEUTIL_SETUP_TYPE = setuptools PYTHON_DATEUTIL_LICENSE = BSD-3c PYTHON_DATEUTIL_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-django/python-django.hash b/bsp/buildroot/package/python-django/python-django.hash index f51c9b47..38b303bb 100644 --- a/bsp/buildroot/package/python-django/python-django.hash +++ b/bsp/buildroot/package/python-django/python-django.hash @@ -1,2 +1,3 @@ -# sha256 from https://www.djangoproject.com/m/pgp/Django-1.7.3.checksum.txt -sha256 f226fb8aa438456968d403f6739de1cf2dad128db86f66ee2b41dfebe3645c5b Django-1.7.3.tar.gz +# md5 from https://pypi.python.org/pypi/django/json, sha256 locally computed +md5 5342e77374b2acd2eafa86d2bb68f8c9 Django-1.10.2.tar.gz +sha256 e127f12a0bfb34843b6e8c82f91e26fff6445a7ca91d222c0794174cf97cbce1 Django-1.10.2.tar.gz diff --git a/bsp/buildroot/package/python-django/python-django.mk b/bsp/buildroot/package/python-django/python-django.mk index b67bce45..2a502314 100644 --- a/bsp/buildroot/package/python-django/python-django.mk +++ b/bsp/buildroot/package/python-django/python-django.mk @@ -4,10 +4,10 @@ # ################################################################################ -PYTHON_DJANGO_VERSION = 1.7.3 +PYTHON_DJANGO_VERSION = 1.10.2 PYTHON_DJANGO_SOURCE = Django-$(PYTHON_DJANGO_VERSION).tar.gz # The official Django site has an unpractical URL -PYTHON_DJANGO_SITE = https://pypi.python.org/packages/source/D/Django +PYTHON_DJANGO_SITE = https://pypi.python.org/packages/57/9e/59444485f092b6ed4f1931e7d2e13b67fdab967c041d02f58a0d1dab8c23 PYTHON_DJANGO_LICENSE = BSD-3c PYTHON_DJANGO_LICENSE_FILES = LICENSE PYTHON_DJANGO_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-docutils/Config.in b/bsp/buildroot/package/python-docutils/Config.in new file mode 100644 index 00000000..e7bf7e63 --- /dev/null +++ b/bsp/buildroot/package/python-docutils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_DOCUTILS + bool "python-docutils" + help + Docutils is a modular system for processing documentation + into useful formats, such as HTML, XML, and LaTeX. For input + Docutils supports reStructuredText, an easy-to-read, + what-you-see-is-what-you-get plaintext markup syntax. + + http://docutils.sourceforge.net/ diff --git a/bsp/buildroot/package/python-docutils/python-docutils.hash b/bsp/buildroot/package/python-docutils/python-docutils.hash new file mode 100644 index 00000000..9d45058f --- /dev/null +++ b/bsp/buildroot/package/python-docutils/python-docutils.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/docutils/json, sha256 locally computed +md5 4622263b62c5c771c03502afa3157768 docutils-0.12.tar.gz +sha256 c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa docutils-0.12.tar.gz diff --git a/bsp/buildroot/package/python-docutils/python-docutils.mk b/bsp/buildroot/package/python-docutils/python-docutils.mk new file mode 100644 index 00000000..a67d89fa --- /dev/null +++ b/bsp/buildroot/package/python-docutils/python-docutils.mk @@ -0,0 +1,15 @@ +############################################################# +# +# python-docutils +# +############################################################# + +PYTHON_DOCUTILS_VERSION = 0.12 +PYTHON_DOCUTILS_SOURCE = docutils-$(PYTHON_DOCUTILS_VERSION).tar.gz +PYTHON_DOCUTILS_SITE = https://pypi.python.org/packages/37/38/ceda70135b9144d84884ae2fc5886c6baac4edea39550f28bcd144c1234d +PYTHON_DOCUTILS_LICENSE = Public Domain, BSD-2c, GPLv3 (emacs mode), other +PYTHON_DOCUTILS_LICENSE_FILES = COPYING.txt +PYTHON_DOCUTILS_SETUP_TYPE = distutils + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/bsp/buildroot/package/python-dominate/python-dominate.hash b/bsp/buildroot/package/python-dominate/python-dominate.hash index 1d763ac3..2480b004 100644 --- a/bsp/buildroot/package/python-dominate/python-dominate.hash +++ b/bsp/buildroot/package/python-dominate/python-dominate.hash @@ -1,2 +1,3 @@ -# sha256 locally computed -sha256 318063a9b600cdc13f84592ad515db0fd3a2816a2433e2a2fad55a5398ae05da python-dominate-acb02c7c71e353e5dfbc905d506b54908533027e.tar.gz +# md5 from https://pypi.python.org/pypi/dominate/json, sha256 locally computed +md5 45bd97e6f7888aac24ae86013c57638e dominate-2.3.1.tar.gz +sha256 4b8ce6f33633c9dd9175b228d21c00c801b6bd0327747cd5e17fc2da934c3a69 dominate-2.3.1.tar.gz diff --git a/bsp/buildroot/package/python-dominate/python-dominate.mk b/bsp/buildroot/package/python-dominate/python-dominate.mk index 170553f7..3e264caa 100644 --- a/bsp/buildroot/package/python-dominate/python-dominate.mk +++ b/bsp/buildroot/package/python-dominate/python-dominate.mk @@ -4,8 +4,9 @@ # ################################################################################ -PYTHON_DOMINATE_VERSION = acb02c7c71e353e5dfbc905d506b54908533027e -PYTHON_DOMINATE_SITE = $(call github,Knio,dominate,$(PYTHON_DOMINATE_VERSION)) +PYTHON_DOMINATE_VERSION = 2.3.1 +PYTHON_DOMINATE_SOURCE = dominate-$(PYTHON_DOMINATE_VERSION).tar.gz +PYTHON_DOMINATE_SITE = https://pypi.python.org/packages/43/b2/3b7d67dd59dab93ae08569384b254323516e8868b453eea5614a53835baf PYTHON_DOMINATE_SETUP_TYPE = setuptools PYTHON_DOMINATE_LICENSE = LGPLv3+ PYTHON_DOMINATE_LICENSE_FILES = LICENSE.txt diff --git a/bsp/buildroot/package/python-engineio/python-engineio.mk b/bsp/buildroot/package/python-engineio/python-engineio.mk index 700b638a..61d5da9a 100644 --- a/bsp/buildroot/package/python-engineio/python-engineio.mk +++ b/bsp/buildroot/package/python-engineio/python-engineio.mk @@ -5,7 +5,6 @@ ################################################################################ PYTHON_ENGINEIO_VERSION = 0.9.2 -PYTHON_ENGINEIO_SOURCE = python-engineio-$(PYTHON_ENGINEIO_VERSION).tar.gz PYTHON_ENGINEIO_SITE = https://pypi.python.org/packages/c3/8f/0e066fc7a7029893b96b1d68a0cd5e75f6410f154fa4079b2be4991f5ae0 PYTHON_ENGINEIO_SETUP_TYPE = setuptools PYTHON_ENGINEIO_LICENSE = MIT diff --git a/bsp/buildroot/package/python-flask-babel/Config.in b/bsp/buildroot/package/python-flask-babel/Config.in new file mode 100644 index 00000000..61fd2c05 --- /dev/null +++ b/bsp/buildroot/package/python-flask-babel/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_FLASK_BABEL + bool "python-flask-babel" + select BR2_PACKAGE_PYTHON_FLASK # runtime + select BR2_PACKAGE_PYTHON_BABEL # runtime + help + Flask-Babel is an extension to Flask that adds i18n and l10n + support to any Flask application with the help of babel, + pytz and speaklater. It has builtin support for date + formatting with timezone support as well as a very simple + and friendly interface to gettext translations. + + https://pythonhosted.org/Flask-Babel/ diff --git a/bsp/buildroot/package/python-flask-babel/python-flask-babel.hash b/bsp/buildroot/package/python-flask-babel/python-flask-babel.hash new file mode 100644 index 00000000..c4420e4a --- /dev/null +++ b/bsp/buildroot/package/python-flask-babel/python-flask-babel.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/Flask-Babel/json, sha256 locally computed +md5 658e84a20ddc545a7612144fe2c758d3 Flask-Babel-0.11.1.tar.gz +sha256 d29b36c399e42e98bc9401c8c1c159f2befcb8c12a2a2a87ec49ad7623036899 Flask-Babel-0.11.1.tar.gz diff --git a/bsp/buildroot/package/python-flask-babel/python-flask-babel.mk b/bsp/buildroot/package/python-flask-babel/python-flask-babel.mk new file mode 100644 index 00000000..35d34d1c --- /dev/null +++ b/bsp/buildroot/package/python-flask-babel/python-flask-babel.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-babel +# +################################################################################ + +PYTHON_FLASK_BABEL_VERSION = 0.11.1 +PYTHON_FLASK_BABEL_SOURCE = Flask-Babel-$(PYTHON_FLASK_BABEL_VERSION).tar.gz +PYTHON_FLASK_BABEL_SITE = https://pypi.python.org/packages/47/96/6013d4091fb4238e27e918aec4929f082942fa8c9489ae3aad2f18de4b5b +PYTHON_FLASK_BABEL_LICENSE = BSD-3c +PYTHON_FLASK_BABEL_SETUP_TYPE = setuptools +PYTHON_FLASK_BABEL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.hash b/bsp/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.hash index 8b91af70..a25fbb72 100644 --- a/bsp/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.hash +++ b/bsp/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi/Flask-JSONRPC/0.3, sha256 locally computed: -md5 a5beca4c3a882315f9b81acb57e83c68 Flask-JSONRPC-0.3.tar.gz -sha256 5baf70bf9cf955e95c02316982026a122b89a5f4c78c5b26f9f476abdb3e13bc Flask-JSONRPC-0.3.tar.gz +# md5 from https://pypi.python.org/pypi/flask-jsonrpc/json, sha256 locally computed +md5 5c0592f53b2f18e34d5be435acee8842 Flask-JSONRPC-0.3.1.tar.gz +sha256 4d0cc9c20874093306af91f5a48009fb8659a041428dcdb11703598ffbbc97d0 Flask-JSONRPC-0.3.1.tar.gz diff --git a/bsp/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.mk b/bsp/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.mk index 624322ed..ade39e1b 100644 --- a/bsp/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.mk +++ b/bsp/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_FLASK_JSONRPC_VERSION = 0.3 +PYTHON_FLASK_JSONRPC_VERSION = 0.3.1 PYTHON_FLASK_JSONRPC_SOURCE = Flask-JSONRPC-$(PYTHON_FLASK_JSONRPC_VERSION).tar.gz -PYTHON_FLASK_JSONRPC_SITE = http://pypi.python.org/packages/source/F/Flask-JSONRPC +PYTHON_FLASK_JSONRPC_SITE = https://pypi.python.org/packages/cb/1f/e6d66e8498609ba04bac76155b2ea884df95531e93501bf4ef009d40a83c PYTHON_FLASK_JSONRPC_LICENSE = BSD-3c PYTHON_FLASK_JSONRPC_LICENSE_FILES = setup.py PYTHON_FLASK_JSONRPC_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-flask/python-flask.hash b/bsp/buildroot/package/python-flask/python-flask.hash index 1432c555..919b0759 100644 --- a/bsp/buildroot/package/python-flask/python-flask.hash +++ b/bsp/buildroot/package/python-flask/python-flask.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=89fbdcb04b7b96c5b24625ae299cf48b, sha256 locally computed -md5 89fbdcb04b7b96c5b24625ae299cf48b Flask-0.11.tar.gz -sha256 29a7405a7f0de178232fe48cd9b2a2403083bf03bd34eabe12168863d4cdb493 Flask-0.11.tar.gz +# md5 from https://pypi.python.org/pypi/flask/json, sha256 locally computed +md5 c1d30f51cff4a38f9454b23328a15c5a Flask-0.12.tar.gz +sha256 93e803cdbe326a61ebd5c5d353959397c85f829bec610d59cb635c9f97d7ca8b Flask-0.12.tar.gz diff --git a/bsp/buildroot/package/python-flask/python-flask.mk b/bsp/buildroot/package/python-flask/python-flask.mk index db4ba742..6c25a6d1 100644 --- a/bsp/buildroot/package/python-flask/python-flask.mk +++ b/bsp/buildroot/package/python-flask/python-flask.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_FLASK_VERSION = 0.11 +PYTHON_FLASK_VERSION = 0.12 PYTHON_FLASK_SOURCE = Flask-$(PYTHON_FLASK_VERSION).tar.gz -PYTHON_FLASK_SITE = https://pypi.python.org/packages/dc/ca/c0ed9cc90c079085c698e284b672edbc1ffd6866b1830574095cbc5b7752 +PYTHON_FLASK_SITE = https://pypi.python.org/packages/4b/3a/4c20183df155dd2e39168e35d53a388efb384a512ca6c73001d8292c094a PYTHON_FLASK_SETUP_TYPE = setuptools PYTHON_FLASK_LICENSE = BSD-3c PYTHON_FLASK_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-futures/Config.in b/bsp/buildroot/package/python-futures/Config.in new file mode 100644 index 00000000..2eb40e93 --- /dev/null +++ b/bsp/buildroot/package/python-futures/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_FUTURES + bool "python-futures" + depends on BR2_PACKAGE_PYTHON # not needed for python3 + help + Backport of the concurrent.futures package from Python 3.2. + + https://github.com/agronholm/pythonfutures diff --git a/bsp/buildroot/package/python-futures/python-futures.hash b/bsp/buildroot/package/python-futures/python-futures.hash new file mode 100644 index 00000000..f0948ae4 --- /dev/null +++ b/bsp/buildroot/package/python-futures/python-futures.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/futures/json, sha256 locally computed +md5 ced2c365e518242512d7a398b515ff95 futures-3.0.5.tar.gz +sha256 0542525145d5afc984c88f914a0c85c77527f65946617edb5274f72406f981df futures-3.0.5.tar.gz diff --git a/bsp/buildroot/package/python-futures/python-futures.mk b/bsp/buildroot/package/python-futures/python-futures.mk new file mode 100644 index 00000000..8a1afa33 --- /dev/null +++ b/bsp/buildroot/package/python-futures/python-futures.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-futures +# +################################################################################ + +PYTHON_FUTURES_VERSION = 3.0.5 +PYTHON_FUTURES_SOURCE = futures-$(PYTHON_FUTURES_VERSION).tar.gz +PYTHON_FUTURES_SITE = https://pypi.python.org/packages/55/db/97c1ca37edab586a1ae03d6892b6633d8eaa23b23ac40c7e5bbc55423c78 +PYTHON_FUTURES_SETUP_TYPE = setuptools +PYTHON_FUTURES_LICENSE = BSD-2c +PYTHON_FUTURES_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-gunicorn/Config.in b/bsp/buildroot/package/python-gunicorn/Config.in new file mode 100644 index 00000000..79cda3ea --- /dev/null +++ b/bsp/buildroot/package/python-gunicorn/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_GUNICORN + bool "python-gunicorn" + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime + help + Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP Server for + UNIX. It’s a pre-fork worker model ported from Ruby’s + Unicorn project. The Gunicorn server is broadly compatible + with various web frameworks, simply implemented, light on + server resource usage, and fairly speedy. + + http://gunicorn.org/ diff --git a/bsp/buildroot/package/python-gunicorn/python-gunicorn.hash b/bsp/buildroot/package/python-gunicorn/python-gunicorn.hash new file mode 100644 index 00000000..a282bc99 --- /dev/null +++ b/bsp/buildroot/package/python-gunicorn/python-gunicorn.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/gunicorn/json, sha256 locally computed +md5 338e5e8a83ea0f0625f768dba4597530 gunicorn-19.6.0.tar.gz +sha256 813f6916d18a4c8e90efde72f419308b357692f81333cb1125f80013d22fb618 gunicorn-19.6.0.tar.gz diff --git a/bsp/buildroot/package/python-gunicorn/python-gunicorn.mk b/bsp/buildroot/package/python-gunicorn/python-gunicorn.mk new file mode 100644 index 00000000..cfb7da11 --- /dev/null +++ b/bsp/buildroot/package/python-gunicorn/python-gunicorn.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# python-gunicorn +# +################################################################################ + +PYTHON_GUNICORN_VERSION = 19.6.0 +PYTHON_GUNICORN_SOURCE = gunicorn-$(PYTHON_GUNICORN_VERSION).tar.gz +PYTHON_GUNICORN_SITE = https://pypi.python.org/packages/84/ce/7ea5396efad1cef682bbc4068e72a0276341d9d9d0f501da609fab9fcb80 +PYTHON_GUNICORN_SETUP_TYPE = setuptools +PYTHON_GUNICORN_LICENSE = MIT +PYTHON_GUNICORN_LICENSE_FILES = LICENSE + +# At the end of the build, we try to compile all py files using the host python +# that has been built. +# The GAIO HTTP Worker is only compatible with Python3.4.2 and up. So don't try +# to compile it with python 2.x +ifeq ($(BR2_PACKAGE_PYTHON),y) +define PYTHON_GUNICORN_REMOVE_GAIO_WORKER + find $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/ \ + -name "_gaiohttp.py" -exec rm -f {} \; +endef +PYTHON_GUNICORN_POST_INSTALL_TARGET_HOOKS += PYTHON_GUNICORN_REMOVE_GAIO_WORKER +endif + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-html5lib/python-html5lib.hash b/bsp/buildroot/package/python-html5lib/python-html5lib.hash index 0ec712a1..7ea082fa 100644 --- a/bsp/buildroot/package/python-html5lib/python-html5lib.hash +++ b/bsp/buildroot/package/python-html5lib/python-html5lib.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=ef43cb05e9e799f25d65d1135838a96f, sha256 locally computed -md5 ef43cb05e9e799f25d65d1135838a96f html5lib-0.9999999.tar.gz -sha256 2612a191a8d5842bfa057e41ba50bbb9dcb722419d2408c78cff4758d0754868 html5lib-0.9999999.tar.gz +# md5 from https://pypi.python.org/pypi/html5lib/json, sha256 locally computed +md5 5ada1243b7a863624b2f35245b2186e9 html5lib-1.0b10.tar.gz +sha256 0d5fd54d5b2b79b876007a70c033a4023577768d18022c15681c00561432a0f9 html5lib-1.0b10.tar.gz diff --git a/bsp/buildroot/package/python-html5lib/python-html5lib.mk b/bsp/buildroot/package/python-html5lib/python-html5lib.mk index 93eef9a6..38affcbb 100644 --- a/bsp/buildroot/package/python-html5lib/python-html5lib.mk +++ b/bsp/buildroot/package/python-html5lib/python-html5lib.mk @@ -4,11 +4,11 @@ # ################################################################################ -PYTHON_HTML5LIB_VERSION = 0.9999999 +PYTHON_HTML5LIB_VERSION = 1.0b10 PYTHON_HTML5LIB_SOURCE = html5lib-$(PYTHON_HTML5LIB_VERSION).tar.gz -PYTHON_HTML5LIB_SITE = https://pypi.python.org/packages/source/h/html5lib +PYTHON_HTML5LIB_SITE = https://pypi.python.org/packages/97/16/982214624095c1420c75f3bd295d9e658794aafb95fc075823de107e0ae4 PYTHON_HTML5LIB_LICENSE = MIT PYTHON_HTML5LIB_LICENSE_FILES = LICENSE -PYTHON_HTML5LIB_SETUP_TYPE = distutils +PYTHON_HTML5LIB_SETUP_TYPE = setuptools $(eval $(python-package)) diff --git a/bsp/buildroot/package/python-incremental/Config.in b/bsp/buildroot/package/python-incremental/Config.in new file mode 100644 index 00000000..64f86233 --- /dev/null +++ b/bsp/buildroot/package/python-incremental/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_INCREMENTAL + bool "python-incremental" + help + A library for versioning your Python projects. + + https://github.com/hawkowl/incremental diff --git a/bsp/buildroot/package/python-incremental/python-incremental.hash b/bsp/buildroot/package/python-incremental/python-incremental.hash new file mode 100644 index 00000000..580e76c7 --- /dev/null +++ b/bsp/buildroot/package/python-incremental/python-incremental.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/incremental/json, sha256 locally computed +md5 3fe6b3b1da1d26a48187fb27e969f072 incremental-16.10.1.tar.gz +sha256 14ad6b720ec47aad6c9caa83e47db1843e2b9b98742da5dda08e16a99f400342 incremental-16.10.1.tar.gz diff --git a/bsp/buildroot/package/python-incremental/python-incremental.mk b/bsp/buildroot/package/python-incremental/python-incremental.mk new file mode 100644 index 00000000..64eda68e --- /dev/null +++ b/bsp/buildroot/package/python-incremental/python-incremental.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-incremental +# +################################################################################ + +PYTHON_INCREMENTAL_VERSION = 16.10.1 +PYTHON_INCREMENTAL_SOURCE = incremental-$(PYTHON_INCREMENTAL_VERSION).tar.gz +PYTHON_INCREMENTAL_SITE = https://pypi.python.org/packages/da/b0/32233c9e84b0d44b39015fba8fec03e88053723c1b455925081dc6ccd9e7 +PYTHON_INCREMENTAL_SETUP_TYPE = setuptools +PYTHON_INCREMENTAL_LICENSE = MIT +PYTHON_INCREMENTAL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-ipaddress/python-ipaddress.hash b/bsp/buildroot/package/python-ipaddress/python-ipaddress.hash index 21bc3731..a7c3803f 100644 --- a/bsp/buildroot/package/python-ipaddress/python-ipaddress.hash +++ b/bsp/buildroot/package/python-ipaddress/python-ipaddress.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=12915e923b738107e47827478d553ba1, sha256 locally computed -md5 12915e923b738107e47827478d553ba1 ipaddress-1.0.15.tar.gz -sha256 af6c85cfc9cdb12b861655e6b9f2f59618bf3088cbde858727b2c0a98e9f6636 ipaddress-1.0.15.tar.gz +# md5 from https://pypi.python.org/pypi/ipaddress/json, sha256 locally computed +md5 8bbf0326719fafb1f453921ef96729fe ipaddress-1.0.17.tar.gz +sha256 3a21c5a15f433710aaa26f1ae174b615973a25182006ae7f9c26de151cd51716 ipaddress-1.0.17.tar.gz diff --git a/bsp/buildroot/package/python-ipaddress/python-ipaddress.mk b/bsp/buildroot/package/python-ipaddress/python-ipaddress.mk index 8019aa8a..5ff70d48 100644 --- a/bsp/buildroot/package/python-ipaddress/python-ipaddress.mk +++ b/bsp/buildroot/package/python-ipaddress/python-ipaddress.mk @@ -4,10 +4,11 @@ # ################################################################################ -PYTHON_IPADDRESS_VERSION = 1.0.15 +PYTHON_IPADDRESS_VERSION = 1.0.17 PYTHON_IPADDRESS_SOURCE = ipaddress-$(PYTHON_IPADDRESS_VERSION).tar.gz -PYTHON_IPADDRESS_SITE = https://pypi.python.org/packages/source/i/ipaddress +PYTHON_IPADDRESS_SITE = https://pypi.python.org/packages/bb/26/3b64955ff73f9e3155079b9ed31812afdfa5333b5c76387454d651ef593a PYTHON_IPADDRESS_LICENSE = Python software foundation license +PYTHON_IPADDRESS_LICENSE_FILES = LICENSE PYTHON_IPADDRESS_SETUP_TYPE = setuptools $(eval $(python-package)) diff --git a/bsp/buildroot/package/python-ipy/python-ipy.hash b/bsp/buildroot/package/python-ipy/python-ipy.hash index 171dbdbd..ed93448b 100644 --- a/bsp/buildroot/package/python-ipy/python-ipy.hash +++ b/bsp/buildroot/package/python-ipy/python-ipy.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 edaaa5344893437aa6c1eb9c4ca966eb4b8c071761793839c7b4fc2a837fbeec python-ipy-IPy-0.82a.tar.gz +# md5 from https://pypi.python.org/pypi/ipy/json, sha256 locally computed +md5 7b8c6eb4111b15aea31b67108e769712 IPy-0.83.tar.gz +sha256 61da5a532b159b387176f6eabf11946e7458b6df8fb8b91ff1d345ca7a6edab8 IPy-0.83.tar.gz diff --git a/bsp/buildroot/package/python-ipy/python-ipy.mk b/bsp/buildroot/package/python-ipy/python-ipy.mk index 6773aafe..ec0d0d7f 100644 --- a/bsp/buildroot/package/python-ipy/python-ipy.mk +++ b/bsp/buildroot/package/python-ipy/python-ipy.mk @@ -4,8 +4,9 @@ # ################################################################################ -PYTHON_IPY_VERSION = IPy-0.82a -PYTHON_IPY_SITE = $(call github,haypo,python-ipy,$(PYTHON_IPY_VERSION)) +PYTHON_IPY_VERSION = 0.83 +PYTHON_IPY_SOURCE = IPy-$(PYTHON_IPY_VERSION).tar.gz +PYTHON_IPY_SITE = https://pypi.python.org/packages/88/28/79162bfc351a3f1ab44d663ab3f03fb495806fdb592170990a1568ffbf63 PYTHON_IPY_LICENSE = BSD-3c PYTHON_IPY_LICENSE_FILES = COPYING PYTHON_IPY_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-jinja2/python-jinja2.hash b/bsp/buildroot/package/python-jinja2/python-jinja2.hash index 04fcbc86..46ea75fa 100644 --- a/bsp/buildroot/package/python-jinja2/python-jinja2.hash +++ b/bsp/buildroot/package/python-jinja2/python-jinja2.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=edb51693fe22c53cee5403775c71a99e, sha256 locally computed. -md5 edb51693fe22c53cee5403775c71a99e Jinja2-2.8.tar.gz -sha256 bc1ff2ff88dbfacefde4ddde471d1417d3b304e8df103a7a9437d47269201bf4 Jinja2-2.8.tar.gz +# md5 from https://pypi.python.org/pypi/jinja2/json, sha256 locally computed +md5 b151bfab6fb728fb7a06da4299161c74 Jinja2-2.9.4.tar.gz +sha256 aab8d8ca9f45624f1e77f2844bf3c144d180e97da8824c2a6d7552ad039b5442 Jinja2-2.9.4.tar.gz diff --git a/bsp/buildroot/package/python-jinja2/python-jinja2.mk b/bsp/buildroot/package/python-jinja2/python-jinja2.mk index ce6e2b9c..16b7b204 100644 --- a/bsp/buildroot/package/python-jinja2/python-jinja2.mk +++ b/bsp/buildroot/package/python-jinja2/python-jinja2.mk @@ -4,14 +4,24 @@ # ################################################################################ -PYTHON_JINJA2_VERSION = 2.8 +PYTHON_JINJA2_VERSION = 2.9.4 PYTHON_JINJA2_SOURCE = Jinja2-$(PYTHON_JINJA2_VERSION).tar.gz -PYTHON_JINJA2_SITE = http://pypi.python.org/packages/source/J/Jinja2 +PYTHON_JINJA2_SITE = https://pypi.python.org/packages/f4/3f/28387a5bbc6883082c16784c6135440b94f9d5938fb156ff579798e18eda PYTHON_JINJA2_SETUP_TYPE = setuptools PYTHON_JINJA2_LICENSE = BSD-3c PYTHON_JINJA2_LICENSE_FILES = LICENSE # In host build, setup.py tries to download markupsafe if it is not installed HOST_PYTHON_JINJA2_DEPENDENCIES = host-python-markupsafe +# Both asyncsupport.py and asyncfilters.py use async feature, that is +# not available in Python 2 and some features available in Python 3.6. +# So in both cases *.py compilation would produce compiler errors. +# Hence remove both files after package extraction. +define PYTHON_JINJA2_REMOVE_ASYNC_SUPPORT + rm $(@D)/jinja2/asyncsupport.py $(@D)/jinja2/asyncfilters.py +endef + +PYTHON_JINJA2_POST_EXTRACT_HOOKS = PYTHON_JINJA2_REMOVE_ASYNC_SUPPORT + $(eval $(python-package)) $(eval $(host-python-package)) diff --git a/bsp/buildroot/package/python-json-schema-validator/python-json-schema-validator.hash b/bsp/buildroot/package/python-json-schema-validator/python-json-schema-validator.hash index 96f5d895..7360abab 100644 --- a/bsp/buildroot/package/python-json-schema-validator/python-json-schema-validator.hash +++ b/bsp/buildroot/package/python-json-schema-validator/python-json-schema-validator.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 316befb9a6d981dff465f5243e423a3027b27775f7649510ce23fde300dde9b7 json-schema-validator-2.3.tar.gz +# md5 from https://pypi.python.org/pypi/json-schema-validator/json, sha256 locally computed +md5 7691b41739faaa8b0965279e72889932 json-schema-validator-2.4.1.tar.gz +sha256 1562a21d83e56231cef09b9aa2c06e8f845974bd26f24be293de6cab9a2fac91 json-schema-validator-2.4.1.tar.gz diff --git a/bsp/buildroot/package/python-json-schema-validator/python-json-schema-validator.mk b/bsp/buildroot/package/python-json-schema-validator/python-json-schema-validator.mk index 0ff5554b..1456c349 100644 --- a/bsp/buildroot/package/python-json-schema-validator/python-json-schema-validator.mk +++ b/bsp/buildroot/package/python-json-schema-validator/python-json-schema-validator.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_JSON_SCHEMA_VALIDATOR_VERSION = 2.3 +PYTHON_JSON_SCHEMA_VALIDATOR_VERSION = 2.4.1 PYTHON_JSON_SCHEMA_VALIDATOR_SOURCE = json-schema-validator-$(PYTHON_JSON_SCHEMA_VALIDATOR_VERSION).tar.gz -PYTHON_JSON_SCHEMA_VALIDATOR_SITE = http://pypi.python.org/packages/source/j/json-schema-validator +PYTHON_JSON_SCHEMA_VALIDATOR_SITE = https://pypi.python.org/packages/70/46/ba39cb7efad1898cfc89bf3588b8612f24d128f1c25b761994f524a59cef PYTHON_JSON_SCHEMA_VALIDATOR_LICENSE = LGPLv3 PYTHON_JSON_SCHEMA_VALIDATOR_SETUP_TYPE = setuptools PYTHON_JSON_SCHEMA_VALIDATOR_DEPENDENCIES = python-versiontools diff --git a/bsp/buildroot/package/python-jsonschema/Config.in b/bsp/buildroot/package/python-jsonschema/Config.in new file mode 100644 index 00000000..70026537 --- /dev/null +++ b/bsp/buildroot/package/python-jsonschema/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_JSONSCHEMA + bool "python-jsonschema" + help + An implementation of JSON Schema validation for Python. + + http://github.com/Julian/jsonschema diff --git a/bsp/buildroot/package/python-jsonschema/python-jsonschema.hash b/bsp/buildroot/package/python-jsonschema/python-jsonschema.hash new file mode 100644 index 00000000..fc13630d --- /dev/null +++ b/bsp/buildroot/package/python-jsonschema/python-jsonschema.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/jsonschema/json, sha256 locally computed +md5 374e848fdb69a3ce8b7e778b47c30640 jsonschema-2.5.1.tar.gz +sha256 36673ac378feed3daa5956276a829699056523d7961027911f064b52255ead41 jsonschema-2.5.1.tar.gz diff --git a/bsp/buildroot/package/python-jsonschema/python-jsonschema.mk b/bsp/buildroot/package/python-jsonschema/python-jsonschema.mk new file mode 100644 index 00000000..0fb2be86 --- /dev/null +++ b/bsp/buildroot/package/python-jsonschema/python-jsonschema.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-jsonschema +# +################################################################################ + +PYTHON_JSONSCHEMA_VERSION = 2.5.1 +PYTHON_JSONSCHEMA_SOURCE = jsonschema-$(PYTHON_JSONSCHEMA_VERSION).tar.gz +PYTHON_JSONSCHEMA_SITE = https://pypi.python.org/packages/58/0d/c816f5ea5adaf1293a1d81d32e4cdfdaf8496973aa5049786d7fdb14e7e7 +PYTHON_JSONSCHEMA_SETUP_TYPE = setuptools +PYTHON_JSONSCHEMA_LICENSE = MIT +PYTHON_JSONSCHEMA_LICENSE_FILES = COPYING json/LICENSE +PYTHON_JSONSCHEMA_DEPENDENCIES = host-python-vcversioner + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-libconfig/Config.in b/bsp/buildroot/package/python-libconfig/Config.in index 7cc5f8a3..a222f9a1 100644 --- a/bsp/buildroot/package/python-libconfig/Config.in +++ b/bsp/buildroot/package/python-libconfig/Config.in @@ -1,5 +1,6 @@ -comment "python-libconfig needs a toolchain w/ C++, threads" - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS +comment "python-libconfig needs a glibc or uClibc toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_TOOLCHAIN_USES_MUSL config BR2_PACKAGE_PYTHON_LIBCONFIG bool "python-libconfig" @@ -8,6 +9,8 @@ config BR2_PACKAGE_PYTHON_LIBCONFIG select BR2_PACKAGE_LIBCONFIG depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS + # error: invalid use of incomplete type 'struct _IO_FILE' + depends on !BR2_TOOLCHAIN_USES_MUSL help Python bindings to the C++ library libconfig diff --git a/bsp/buildroot/package/python-logbook/Config.in b/bsp/buildroot/package/python-logbook/Config.in new file mode 100644 index 00000000..9ae91443 --- /dev/null +++ b/bsp/buildroot/package/python-logbook/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_LOGBOOK + bool "python-logbook" + help + A logging replacement for Python. + + http://logbook.pocoo.org/ diff --git a/bsp/buildroot/package/python-logbook/python-logbook.hash b/bsp/buildroot/package/python-logbook/python-logbook.hash new file mode 100644 index 00000000..1a79046c --- /dev/null +++ b/bsp/buildroot/package/python-logbook/python-logbook.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/logbook/json, sha256 locally computed +md5 22fea705e067c118925898f0c30b0508 Logbook-1.0.0.tar.gz +sha256 87da2515a6b3db866283cb9d4e5a6ec44e52a1d556ebb2ea3b6e7e704b5f1872 Logbook-1.0.0.tar.gz diff --git a/bsp/buildroot/package/python-logbook/python-logbook.mk b/bsp/buildroot/package/python-logbook/python-logbook.mk new file mode 100644 index 00000000..29123797 --- /dev/null +++ b/bsp/buildroot/package/python-logbook/python-logbook.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-logbook +# +################################################################################ + +PYTHON_LOGBOOK_VERSION = 1.0.0 +PYTHON_LOGBOOK_SOURCE = Logbook-$(PYTHON_LOGBOOK_VERSION).tar.gz +PYTHON_LOGBOOK_SITE = https://pypi.python.org/packages/34/e8/6419c217bbf464fe8a902418120cccaf476201bd03b50958db24d6e90f65 +PYTHON_LOGBOOK_SETUP_TYPE = setuptools +PYTHON_LOGBOOK_LICENSE = BSD-3c + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-lxml/python-lxml.hash b/bsp/buildroot/package/python-lxml/python-lxml.hash index 4cace8e0..a1dc0939 100644 --- a/bsp/buildroot/package/python-lxml/python-lxml.hash +++ b/bsp/buildroot/package/python-lxml/python-lxml.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 9c74ca28a7f0c30dca8872281b3c47705e21217c8bc63912d95c9e2a7cac6bdf lxml-3.6.0.tgz +sha256 59d9176360dbc3919e9d4bfca85c1ca64ab4f4ee00e6f119d7150ba887e3410a lxml-3.7.2.tgz diff --git a/bsp/buildroot/package/python-lxml/python-lxml.mk b/bsp/buildroot/package/python-lxml/python-lxml.mk index 039fadd1..62c2980b 100644 --- a/bsp/buildroot/package/python-lxml/python-lxml.mk +++ b/bsp/buildroot/package/python-lxml/python-lxml.mk @@ -4,7 +4,7 @@ # ################################################################################ -PYTHON_LXML_VERSION = 3.6.0 +PYTHON_LXML_VERSION = 3.7.2 PYTHON_LXML_SITE = http://lxml.de/files PYTHON_LXML_SOURCE = lxml-$(PYTHON_LXML_VERSION).tgz diff --git a/bsp/buildroot/package/python-markdown/python-markdown.hash b/bsp/buildroot/package/python-markdown/python-markdown.hash index f1ffaaef..d30faaed 100644 --- a/bsp/buildroot/package/python-markdown/python-markdown.hash +++ b/bsp/buildroot/package/python-markdown/python-markdown.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 284e97e56db9ada03ede9c0ed2870ca6590ce7869f3119104d53510debf1533d Markdown-2.5.2.tar.gz +# md5 from https://pypi.python.org/pypi/markdown/json, sha256 locally computed +md5 a06f1c5d462b32e0e8da014e9eebb0d9 Markdown-2.6.7.tar.gz +sha256 daebf24846efa7ff269cfde8c41a48bb2303920c7b2c7c5e04fa82e6282d05c0 Markdown-2.6.7.tar.gz diff --git a/bsp/buildroot/package/python-markdown/python-markdown.mk b/bsp/buildroot/package/python-markdown/python-markdown.mk index 3b2217ec..fb87ada7 100644 --- a/bsp/buildroot/package/python-markdown/python-markdown.mk +++ b/bsp/buildroot/package/python-markdown/python-markdown.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_MARKDOWN_VERSION = 2.5.2 +PYTHON_MARKDOWN_VERSION = 2.6.7 PYTHON_MARKDOWN_SOURCE = Markdown-$(PYTHON_MARKDOWN_VERSION).tar.gz -PYTHON_MARKDOWN_SITE = http://pypi.python.org/packages/source/M/Markdown +PYTHON_MARKDOWN_SITE = https://pypi.python.org/packages/d4/32/642bd580c577af37b00a1eb59b0eaa996f2d11dfe394f3dd0c7a8a2de81a PYTHON_MARKDOWN_LICENSE = BSD-3c PYTHON_MARKDOWN_LICENSE_FILES = LICENSE.md PYTHON_MARKDOWN_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-markdown2/Config.in b/bsp/buildroot/package/python-markdown2/Config.in new file mode 100644 index 00000000..8fe23324 --- /dev/null +++ b/bsp/buildroot/package/python-markdown2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_MARKDOWN2 + bool "python-markdown2" + help + A fast and complete Python implementation of Markdown. + + https://github.com/trentm/python-markdown2 diff --git a/bsp/buildroot/package/python-markdown2/python-markdown2.hash b/bsp/buildroot/package/python-markdown2/python-markdown2.hash new file mode 100644 index 00000000..17ae7d90 --- /dev/null +++ b/bsp/buildroot/package/python-markdown2/python-markdown2.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 07e077f5d4aa5f1e2f061f9f94d9e22f9ea266411b8c557b9164fc0e6dff0595 python-markdown2-2.3.2.tar.gz diff --git a/bsp/buildroot/package/python-markdown2/python-markdown2.mk b/bsp/buildroot/package/python-markdown2/python-markdown2.mk new file mode 100644 index 00000000..1e343b43 --- /dev/null +++ b/bsp/buildroot/package/python-markdown2/python-markdown2.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-markdown2 +# +################################################################################ + +PYTHON_MARKDOWN2_VERSION = 2.3.2 +PYTHON_MARKDOWN2_SITE = $(call github,trentm,python-markdown2,$(PYTHON_MARKDOWN2_VERSION)) +PYTHON_MARKDOWN2_SETUP_TYPE = distutils +PYTHON_MARKDOWN2_LICENSE = MIT +PYTHON_MARKDOWN2_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-mbstrdecoder/Config.in b/bsp/buildroot/package/python-mbstrdecoder/Config.in new file mode 100644 index 00000000..017002c9 --- /dev/null +++ b/bsp/buildroot/package/python-mbstrdecoder/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_MBSTRDECODER + bool "python-mbstrdecoder" + help + multi-byte character string decoder. + + https://github.com/thombashi/mbstrdecoder diff --git a/bsp/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.hash b/bsp/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.hash new file mode 100644 index 00000000..1389ac3a --- /dev/null +++ b/bsp/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/mbstrdecoder/json, sha256 locally computed +md5 5548c4748cf0bc16befcf7ef848f95ff mbstrdecoder-0.1.0.tar.gz +sha256 7c65c4ea6681729ddfdb7612ac39f5accb10abb4e838ca810d810931ec023aad mbstrdecoder-0.1.0.tar.gz diff --git a/bsp/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.mk b/bsp/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.mk new file mode 100644 index 00000000..f64bde95 --- /dev/null +++ b/bsp/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mbstrdecoder +# +################################################################################ + +PYTHON_MBSTRDECODER_VERSION = 0.1.0 +PYTHON_MBSTRDECODER_SOURCE = mbstrdecoder-$(PYTHON_MBSTRDECODER_VERSION).tar.gz +PYTHON_MBSTRDECODER_SITE = https://pypi.python.org/packages/e4/10/fa3d8716b28e2b37eba1edab1c6831a56b805032328279c14fc99d37c391 +PYTHON_MBSTRDECODER_SETUP_TYPE = setuptools +PYTHON_MBSTRDECODER_LICENSE = MIT +PYTHON_MBSTRDECODER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-mistune/python-mistune.hash b/bsp/buildroot/package/python-mistune/python-mistune.hash index 85096069..cfc6a25e 100644 --- a/bsp/buildroot/package/python-mistune/python-mistune.hash +++ b/bsp/buildroot/package/python-mistune/python-mistune.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=ed9ac03c99261bd1803e44ddaa4f87cb, sha256 locally computed. -md5 ed9ac03c99261bd1803e44ddaa4f87cb mistune-0.7.2.tar.gz -sha256 626f2516adcde4af608eaf83635ff20ff7e577c1898ad4d0f0fcd8c094399840 mistune-0.7.2.tar.gz +# md5 from https://pypi.python.org/pypi/mistune/json, sha256 locally computed +md5 4eba50bd121b83716fa4be6a4049004b mistune-0.7.3.tar.gz +sha256 21d0e869df3b9189f248e022f1c9763cf9069e1a2f00676f1f1852bd7f98b713 mistune-0.7.3.tar.gz diff --git a/bsp/buildroot/package/python-mistune/python-mistune.mk b/bsp/buildroot/package/python-mistune/python-mistune.mk index f0301a7e..91e97e86 100644 --- a/bsp/buildroot/package/python-mistune/python-mistune.mk +++ b/bsp/buildroot/package/python-mistune/python-mistune.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_MISTUNE_VERSION = 0.7.2 +PYTHON_MISTUNE_VERSION = 0.7.3 PYTHON_MISTUNE_SOURCE = mistune-$(PYTHON_MISTUNE_VERSION).tar.gz -PYTHON_MISTUNE_SITE = http://pypi.python.org/packages/source/m/mistune +PYTHON_MISTUNE_SITE = https://pypi.python.org/packages/88/1e/be99791262b3a794332fda598a07c2749a433b9378586361ba9d8e824607 PYTHON_MISTUNE_LICENSE = BSD-3c PYTHON_MISTUNE_LICENSE_FILES = LICENSE PYTHON_MISTUNE_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-mutagen/Config.in b/bsp/buildroot/package/python-mutagen/Config.in new file mode 100644 index 00000000..470cd996 --- /dev/null +++ b/bsp/buildroot/package/python-mutagen/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_PYTHON_MUTAGEN + bool "python-mutagen" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + Mutagen is a Python module to handle audio metadata. It + supports ASF, FLAC, MP4, Monkey’s Audio, MP3, Musepack, Ogg + Opus, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True + Audio, WavPack, OptimFROG, and AIFF audio files. All + versions of ID3v2 are supported, and all standard ID3v2.4 + frames are parsed. + + It can read Xing headers to accurately calculate the bitrate + and length of MP3s. ID3 and APEv2 tags can be edited + regardless of audio format. It can also manipulate Ogg + streams on an individual packet/page level. + + https://mutagen.readthedocs.io/en/latest/ diff --git a/bsp/buildroot/package/python-mutagen/python-mutagen.hash b/bsp/buildroot/package/python-mutagen/python-mutagen.hash new file mode 100644 index 00000000..8970a23f --- /dev/null +++ b/bsp/buildroot/package/python-mutagen/python-mutagen.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/mutagen, sha256 locally computed +md5 2bd50519d64411626fa22d405afbf078 mutagen-1.36.tar.gz +sha256 d7ee37e33b8c5893c3ebf66edac31241eb9d48e1dc7ec647bbfbc180565a4bcd mutagen-1.36.tar.gz diff --git a/bsp/buildroot/package/python-mutagen/python-mutagen.mk b/bsp/buildroot/package/python-mutagen/python-mutagen.mk new file mode 100644 index 00000000..8458de55 --- /dev/null +++ b/bsp/buildroot/package/python-mutagen/python-mutagen.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mutagen +# +################################################################################ + +PYTHON_MUTAGEN_VERSION = 1.36 +PYTHON_MUTAGEN_SOURCE = mutagen-$(PYTHON_MUTAGEN_VERSION).tar.gz +PYTHON_MUTAGEN_SITE = https://pypi.python.org/packages/69/14/4a5c8360a727563291a7159de935ffff2b99ee783928169f0fea7445370f +PYTHON_MUTAGEN_LICENSE = GPLv2 +PYTHON_MUTAGEN_LICENSE_FILES = COPYING +PYTHON_MUTAGEN_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-mwclient/0001-use-exec-in-py3-compatible-manner.patch b/bsp/buildroot/package/python-mwclient/0001-use-exec-in-py3-compatible-manner.patch new file mode 100644 index 00000000..ac7838a7 --- /dev/null +++ b/bsp/buildroot/package/python-mwclient/0001-use-exec-in-py3-compatible-manner.patch @@ -0,0 +1,36 @@ +From 5de1bb82465d39962e26175c62f644a3e423d030 Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Thu, 21 Jan 2016 17:21:52 -0800 +Subject: [PATCH] use 'exec' in py3-compatible manner + +per https://docs.python.org/2/reference/simple_stmts.html , +as exec is a function not a statement in py3, the py2 version +has been set to allow the subsequent statement to be a tuple, +so we can invoke it like this to make it both py2 and py3 +compatible. Without this, byte-compiling the file fails under +py3. + +Signed-off-by: Bernd Kuhls +--- +downloaded from upstream commit: +https://github.com/mwclient/mwclient/commit/5de1bb82465d39962e26175c62f644a3e423d030 + + mwclient/ex.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mwclient/ex.py b/mwclient/ex.py +index db4006c..c0b1eae 100644 +--- a/mwclient/ex.py ++++ b/mwclient/ex.py +@@ -12,7 +12,7 @@ def read_config(config_files, **predata): + + def _read_config_file(_config_file, predata): + _file = open(_config_file) +- exec _file in globals(), predata ++ exec(_file, globals(), predata) + _file.close() + + for _k, _v in predata.iteritems(): +-- +2.9.3 + diff --git a/bsp/buildroot/package/python-mwclient/Config.in b/bsp/buildroot/package/python-mwclient/Config.in new file mode 100644 index 00000000..be889786 --- /dev/null +++ b/bsp/buildroot/package/python-mwclient/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_MWCLIENT + bool "python-mwclient" + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + MediaWiki API client. + + https://github.com/btongminh/mwclient diff --git a/bsp/buildroot/package/python-mwclient/python-mwclient.hash b/bsp/buildroot/package/python-mwclient/python-mwclient.hash new file mode 100644 index 00000000..10989717 --- /dev/null +++ b/bsp/buildroot/package/python-mwclient/python-mwclient.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/mwclient/json, sha256 locally computed +md5 c1334facf2d6ca54fe6dba4ab75ecf34 mwclient-0.8.1.tar.gz +sha256 5f892711cc0b23ff2a6d8b7986ee63cd43fd1ec92b0783604ffa7613cd1662e4 mwclient-0.8.1.tar.gz diff --git a/bsp/buildroot/package/python-mwclient/python-mwclient.mk b/bsp/buildroot/package/python-mwclient/python-mwclient.mk new file mode 100644 index 00000000..1f1e2096 --- /dev/null +++ b/bsp/buildroot/package/python-mwclient/python-mwclient.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mwclient +# +################################################################################ + +PYTHON_MWCLIENT_VERSION = 0.8.1 +PYTHON_MWCLIENT_SOURCE = mwclient-$(PYTHON_MWCLIENT_VERSION).tar.gz +PYTHON_MWCLIENT_SITE = https://pypi.python.org/packages/19/79/481b288a497f625ee8f76141ff3472d81428b1f14b7155a28a63a3247197 +PYTHON_MWCLIENT_LICENSE = MIT +PYTHON_MWCLIENT_LICENSE_FILES = mwclient/__init__.py +PYTHON_MWCLIENT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-mwscrape/Config.in b/bsp/buildroot/package/python-mwscrape/Config.in new file mode 100644 index 00000000..273ce9a4 --- /dev/null +++ b/bsp/buildroot/package/python-mwscrape/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_MWSCRAPE + bool "python-mwscrape" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_COUCHDB # runtime + select BR2_PACKAGE_PYTHON_FUTURES # runtime + select BR2_PACKAGE_PYTHON_MWCLIENT # runtime + select BR2_PACKAGE_PYTHON_PYLRU # runtime + help + Download rendered articles from MediaWiki API to CouchDB + + https://github.com/itkach/mwscrape diff --git a/bsp/buildroot/package/python-mwscrape/python-mwscrape.hash b/bsp/buildroot/package/python-mwscrape/python-mwscrape.hash new file mode 100644 index 00000000..b91ef69a --- /dev/null +++ b/bsp/buildroot/package/python-mwscrape/python-mwscrape.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 8de8a5ef257851f6e1e41247f64710f48859a5e3f91ebc7200bb60769f02f296 python-mwscrape-6a58d7801eb1e884fd0516f1adbedbd4481c10e6.tar.gz diff --git a/bsp/buildroot/package/python-mwscrape/python-mwscrape.mk b/bsp/buildroot/package/python-mwscrape/python-mwscrape.mk new file mode 100644 index 00000000..47b943f4 --- /dev/null +++ b/bsp/buildroot/package/python-mwscrape/python-mwscrape.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-mwscrape +# +################################################################################ + +PYTHON_MWSCRAPE_VERSION = 6a58d7801eb1e884fd0516f1adbedbd4481c10e6 +PYTHON_MWSCRAPE_SITE = $(call github,itkach,mwscrape,$(PYTHON_MWSCRAPE_VERSION)) +PYTHON_MWSCRAPE_LICENSE = MPL-2.0 +PYTHON_MWSCRAPE_LICENSE_FILES = LICENSE.txt +PYTHON_MWSCRAPE_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-mwscrape2slob/Config.in b/bsp/buildroot/package/python-mwscrape2slob/Config.in new file mode 100644 index 00000000..799ab29c --- /dev/null +++ b/bsp/buildroot/package/python-mwscrape2slob/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_MWSCRAPE2SLOB + bool "python-mwscrape2slob" + depends on !BR2_BINFMT_FLAT # python-slob -> python-pyicu -> icu + depends on BR2_INSTALL_LIBSTDCPP # python-slob -> python-pyicu -> icu + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_COUCHDB # runtime + select BR2_PACKAGE_PYTHON_CSSSELECT # runtime + select BR2_PACKAGE_PYTHON_CSSUTILS # runtime + select BR2_PACKAGE_PYTHON_LXML # runtime + select BR2_PACKAGE_PYTHON_SLOB # runtime + help + A tool to create slob with content from a MediaWiki CouchDB + created by mwscrape. + + https://github.com/itkach/mwscrape2slob + +comment "python-mwscrape2slob needs a toolchain w/ C++" + depends on BR2_PACKAGE_PYTHON3 && !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/bsp/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.hash b/bsp/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.hash new file mode 100644 index 00000000..f1f5e4f1 --- /dev/null +++ b/bsp/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 367ffc3203f7eb2cc26211f58c0693526652d9a238af48c88f936920e804faf7 python-mwscrape2slob-0f9124ed62009dff6a230947d80340f5a61a6f49.tar.gz diff --git a/bsp/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.mk b/bsp/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.mk new file mode 100644 index 00000000..4d27d8d6 --- /dev/null +++ b/bsp/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# python-mwscrape2slob +# +################################################################################ + +PYTHON_MWSCRAPE2SLOB_VERSION = 0f9124ed62009dff6a230947d80340f5a61a6f49 +PYTHON_MWSCRAPE2SLOB_SITE = $(call github,itkach,mwscrape2slob,$(PYTHON_MWSCRAPE2SLOB_VERSION)) +PYTHON_MWSCRAPE2SLOB_LICENSE = GPLv3, Apache-2.0 (MathJax), GPL (MediaWiki monobook style sheet) +PYTHON_MWSCRAPE2SLOB_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-netifaces/python-netifaces.hash b/bsp/buildroot/package/python-netifaces/python-netifaces.hash index aebfdf66..6f3e358b 100644 --- a/bsp/buildroot/package/python-netifaces/python-netifaces.hash +++ b/bsp/buildroot/package/python-netifaces/python-netifaces.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=36da76e2cfadd24cc7510c2c0012eb1e, sha256 locally computed -md5 36da76e2cfadd24cc7510c2c0012eb1e netifaces-0.10.4.tar.gz -sha256 9656a169cb83da34d732b0eb72b39373d48774aee009a3d1272b7ea2ce109cde netifaces-0.10.4.tar.gz +# md5 from https://pypi.python.org/pypi/netifaces/json, sha256 locally computed +md5 5b4d1f1310ed279e6df27ef3a9b71519 netifaces-0.10.5.tar.gz +sha256 59d8ad52dd3116fcb6635e175751b250dc783fb011adba539558bd764e5d628b netifaces-0.10.5.tar.gz diff --git a/bsp/buildroot/package/python-netifaces/python-netifaces.mk b/bsp/buildroot/package/python-netifaces/python-netifaces.mk index 2c51ce06..3e01c248 100644 --- a/bsp/buildroot/package/python-netifaces/python-netifaces.mk +++ b/bsp/buildroot/package/python-netifaces/python-netifaces.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_NETIFACES_VERSION = 0.10.4 +PYTHON_NETIFACES_VERSION = 0.10.5 PYTHON_NETIFACES_SOURCE = netifaces-$(PYTHON_NETIFACES_VERSION).tar.gz -PYTHON_NETIFACES_SITE = https://pypi.python.org/packages/source/n/netifaces +PYTHON_NETIFACES_SITE = https://pypi.python.org/packages/a7/4c/8e0771a59fd6e55aac993a7cc1b6a0db993f299514c464ae6a1ecf83b31d PYTHON_NETIFACES_LICENSE = MIT PYTHON_NETIFACES_LICENSE_FILES = README.rst PYTHON_NETIFACES_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-networkmanager/python-networkmanager.hash b/bsp/buildroot/package/python-networkmanager/python-networkmanager.hash index 00d31d00..cbd6febc 100644 --- a/bsp/buildroot/package/python-networkmanager/python-networkmanager.hash +++ b/bsp/buildroot/package/python-networkmanager/python-networkmanager.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=d7f0337b8e58c193c574ceae984cc65f, sha256 locally computed -md5 d7f0337b8e58c193c574ceae984cc65f python-networkmanager-1.0.1.tar.gz -sha256 6eb4073a0d6572fe0bba8cbfe8423f6a8a51c4504a33e0eb4f1b1eadf54c4cee python-networkmanager-1.0.1.tar.gz +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=97c84c19b84b1124903a06379b107f77, sha256 locally computed +md5 97c84c19b84b1124903a06379b107f77 python-networkmanager-1.2.1.tar.gz +sha256 7107c07383f8077cfac33fdbb3c4cda4de40be20a6b20d30840055eb519a0e89 python-networkmanager-1.2.1.tar.gz diff --git a/bsp/buildroot/package/python-networkmanager/python-networkmanager.mk b/bsp/buildroot/package/python-networkmanager/python-networkmanager.mk index 04a27021..875748f3 100644 --- a/bsp/buildroot/package/python-networkmanager/python-networkmanager.mk +++ b/bsp/buildroot/package/python-networkmanager/python-networkmanager.mk @@ -4,8 +4,8 @@ # ################################################################################ -PYTHON_NETWORKMANAGER_VERSION = 1.0.1 -PYTHON_NETWORKMANAGER_SITE = http://pypi.python.org/packages/source/p/python-networkmanager +PYTHON_NETWORKMANAGER_VERSION = 1.2.1 +PYTHON_NETWORKMANAGER_SITE = https://pypi.python.org/packages/e7/b1/09993250ceea9e03bc65fbabcd5286540200292c011b22237b2963c11471 PYTHON_NETWORKMANAGER_SETUP_TYPE = distutils PYTHON_NETWORKMANAGER_LICENSE = GPLv3+ PYTHON_NETWORKMANAGER_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/python-paho-mqtt/python-paho-mqtt.hash b/bsp/buildroot/package/python-paho-mqtt/python-paho-mqtt.hash index 52729ccd..6cb3cc2b 100644 --- a/bsp/buildroot/package/python-paho-mqtt/python-paho-mqtt.hash +++ b/bsp/buildroot/package/python-paho-mqtt/python-paho-mqtt.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=a6407b74eb5e5411e157be1de5c11366, sha256 locally computed -md5 a6407b74eb5e5411e157be1de5c11366 paho-mqtt-1.1.tar.gz -sha256 0f7a629efe6e3a2c61b59d3550aa9f2c4529b5689a65fde45e6f1ac36b9a261e paho-mqtt-1.1.tar.gz +# md5 from https://pypi.python.org/pypi/paho-mqtt/json, sha256 locally computed +md5 241150b3fcb920ddca4d33181f3238b1 paho-mqtt-1.2.tar.gz +sha256 9100a6aa706ab699d414ec02705a21eb66f436184691d0bf1f2a85a6213c6c1f paho-mqtt-1.2.tar.gz diff --git a/bsp/buildroot/package/python-paho-mqtt/python-paho-mqtt.mk b/bsp/buildroot/package/python-paho-mqtt/python-paho-mqtt.mk index 01da2b3d..d783a9cb 100644 --- a/bsp/buildroot/package/python-paho-mqtt/python-paho-mqtt.mk +++ b/bsp/buildroot/package/python-paho-mqtt/python-paho-mqtt.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PAHO_MQTT_VERSION = 1.1 +PYTHON_PAHO_MQTT_VERSION = 1.2 PYTHON_PAHO_MQTT_SOURCE = paho-mqtt-$(PYTHON_PAHO_MQTT_VERSION).tar.gz -PYTHON_PAHO_MQTT_SITE = https://pypi.python.org/packages/source/p/paho-mqtt +PYTHON_PAHO_MQTT_SITE = https://pypi.python.org/packages/82/d9/7064d3a0a1d62756a1a809c85b99f864c641b66de84c15458f72193b7708 PYTHON_PAHO_MQTT_LICENSE = EPLv1.0 or EDLv1.0 PYTHON_PAHO_MQTT_LICENSE_FILES = LICENSE.txt edl-v10 epl-v10 PYTHON_PAHO_MQTT_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-paramiko/Config.in b/bsp/buildroot/package/python-paramiko/Config.in index 4c16a9a6..aad85cb1 100644 --- a/bsp/buildroot/package/python-paramiko/Config.in +++ b/bsp/buildroot/package/python-paramiko/Config.in @@ -1,10 +1,14 @@ config BR2_PACKAGE_PYTHON_PARAMIKO bool "python-paramiko" + depends on BR2_INSTALL_LIBSTDCPP # python-pyasn select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime - select BR2_PACKAGE_PYTHON_PYCRYPTO # runtime - select BR2_PACKAGE_PYTHON_ECDSA # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_PYASN # runtime help SSH2 protocol library. https://github.com/paramiko/paramiko/ + +comment "python-paramiko needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/bsp/buildroot/package/python-paramiko/python-paramiko.hash b/bsp/buildroot/package/python-paramiko/python-paramiko.hash index 29af27d1..fca8fd75 100644 --- a/bsp/buildroot/package/python-paramiko/python-paramiko.hash +++ b/bsp/buildroot/package/python-paramiko/python-paramiko.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/paramiko/json -md5 7e1203f5ffeb7d2bc2bffc4feb804216 paramiko-1.16.0.tar.gz -# sha256 calculated by scanpypi -sha256 3297ebd3cd072f573772f7c7426939a443c62c458d54bb632ff30fd6ecf96892 paramiko-1.16.0.tar.gz +# md5 from https://pypi.python.org/pypi/paramiko/json, sha256 locally computed +md5 9e8abe635baa6bb75a4cd55dcb56a264 paramiko-2.1.1.tar.gz +sha256 d51dada7ad0736c116f8bfe3263627925947e4a50e61436a83d58bfe7055b575 paramiko-2.1.1.tar.gz diff --git a/bsp/buildroot/package/python-paramiko/python-paramiko.mk b/bsp/buildroot/package/python-paramiko/python-paramiko.mk index 52822bb2..6c0df4d9 100644 --- a/bsp/buildroot/package/python-paramiko/python-paramiko.mk +++ b/bsp/buildroot/package/python-paramiko/python-paramiko.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PARAMIKO_VERSION = 1.16.0 +PYTHON_PARAMIKO_VERSION = 2.1.1 PYTHON_PARAMIKO_SOURCE = paramiko-$(PYTHON_PARAMIKO_VERSION).tar.gz -PYTHON_PARAMIKO_SITE = https://pypi.python.org/packages/source/p/paramiko +PYTHON_PARAMIKO_SITE = https://pypi.python.org/packages/d1/5a/ebd00d884f30baf208359a027eb7b38372d81d0c004724bb1aa71ae43b37 PYTHON_PARAMIKO_SETUP_TYPE = setuptools PYTHON_PARAMIKO_LICENSE = LGPLv2.1+ PYTHON_PARAMIKO_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-pathpy/Config.in b/bsp/buildroot/package/python-pathpy/Config.in new file mode 100644 index 00000000..98c05126 --- /dev/null +++ b/bsp/buildroot/package/python-pathpy/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PATHPY + bool "python-pathpy" + help + path.py implements a path objects as first-class + entities, allowing common operations on files to + be invoked on those path objects directly. + + https://github.com/jaraco/path.py diff --git a/bsp/buildroot/package/python-pathpy/python-pathpy.hash b/bsp/buildroot/package/python-pathpy/python-pathpy.hash new file mode 100644 index 00000000..4824e2a3 --- /dev/null +++ b/bsp/buildroot/package/python-pathpy/python-pathpy.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/path.py/json, sha256 locally computed +md5 eb8469ad498d2e462bff8f3b2b5ea68d path.py-10.0.tar.gz +sha256 ba984a2b536158a8841dd33150fce16bcf04210e83f92da674cad0a8a8f61e00 path.py-10.0.tar.gz diff --git a/bsp/buildroot/package/python-pathpy/python-pathpy.mk b/bsp/buildroot/package/python-pathpy/python-pathpy.mk new file mode 100644 index 00000000..57765860 --- /dev/null +++ b/bsp/buildroot/package/python-pathpy/python-pathpy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pathpy +# +################################################################################ + +PYTHON_PATHPY_VERSION = 10.0 +PYTHON_PATHPY_SOURCE = path.py-$(PYTHON_PATHPY_VERSION).tar.gz +PYTHON_PATHPY_SITE = https://pypi.python.org/packages/f3/4e/3bce93c0d9e20abc6ed3aa7866beb688e889828ca2666743df11d9a30050 +PYTHON_PATHPY_SETUP_TYPE = setuptools +PYTHON_PATHPY_LICENSE = MIT +PYTHON_PATHPY_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-pathvalidate/Config.in b/bsp/buildroot/package/python-pathvalidate/Config.in index d70e34a0..60163fbe 100644 --- a/bsp/buildroot/package/python-pathvalidate/Config.in +++ b/bsp/buildroot/package/python-pathvalidate/Config.in @@ -1,5 +1,7 @@ config BR2_PACKAGE_PYTHON_PATHVALIDATE bool "python-pathvalidate" + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime help pathvalidate is a python library to validate/sanitize a string diff --git a/bsp/buildroot/package/python-pathvalidate/python-pathvalidate.hash b/bsp/buildroot/package/python-pathvalidate/python-pathvalidate.hash index 90208f43..68e6907d 100644 --- a/bsp/buildroot/package/python-pathvalidate/python-pathvalidate.hash +++ b/bsp/buildroot/package/python-pathvalidate/python-pathvalidate.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/pathvalidate/json -md5 d3d89abc6c053b4182be29c23beccf26 pathvalidate-0.4.2.tar.gz -# sha256 calculated locally -sha256 4316cf5f862b70efd7792b98f46871592b80924840da69a28df1921d7702fcf9 pathvalidate-0.4.2.tar.gz +# md5 from https://pypi.python.org/pypi/pathvalidate/json, sha256 locally computed +md5 03f0af69596f7de52d52753c2a585fce pathvalidate-0.13.0.tar.gz +sha256 1ecaebfbd32794abe5f47a20189d5f7dd196a6ba445c1a07429de6ce608bf9b9 pathvalidate-0.13.0.tar.gz diff --git a/bsp/buildroot/package/python-pathvalidate/python-pathvalidate.mk b/bsp/buildroot/package/python-pathvalidate/python-pathvalidate.mk index 0c7cc76d..a8ab4ad2 100644 --- a/bsp/buildroot/package/python-pathvalidate/python-pathvalidate.mk +++ b/bsp/buildroot/package/python-pathvalidate/python-pathvalidate.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PATHVALIDATE_VERSION = 0.4.2 +PYTHON_PATHVALIDATE_VERSION = 0.13.0 PYTHON_PATHVALIDATE_SOURCE = pathvalidate-$(PYTHON_PATHVALIDATE_VERSION).tar.gz -PYTHON_PATHVALIDATE_SITE = https://pypi.python.org/packages/fd/b9/726269557d5846f253f7ecec483d801582a27b77852a76e2dc9c61dba2b6 +PYTHON_PATHVALIDATE_SITE = https://pypi.python.org/packages/3a/03/ca01cdbf0f7b766b414d134e71b2eb689619dba0ddee002d53c2d58f6436 PYTHON_PATHVALIDATE_SETUP_TYPE = setuptools PYTHON_PATHVALIDATE_LICENSE = MIT PYTHON_PATHVALIDATE_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-pexpect/python-pexpect.hash b/bsp/buildroot/package/python-pexpect/python-pexpect.hash index 29cf892a..e3836074 100644 --- a/bsp/buildroot/package/python-pexpect/python-pexpect.hash +++ b/bsp/buildroot/package/python-pexpect/python-pexpect.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org, sha256 locally computed -md5 056df81e6ca7081f1015b4b147b977b7 pexpect-4.0.1.tar.gz -sha256 232795ebcaaf2e120396dbbaa3a129eda51757eeaae1911558f4ef8ee414fc6c pexpect-4.0.1.tar.gz +# md5 from https://pypi.python.org/pypi/pexpect/json, sha256 locally computed +md5 3694410001a99dff83f0b500a1ca1c95 pexpect-4.2.1.tar.gz +sha256 3d132465a75b57aa818341c6521392a06cc660feb3988d7f1074f39bd23c9a92 pexpect-4.2.1.tar.gz diff --git a/bsp/buildroot/package/python-pexpect/python-pexpect.mk b/bsp/buildroot/package/python-pexpect/python-pexpect.mk index 40a1741f..f1f99039 100644 --- a/bsp/buildroot/package/python-pexpect/python-pexpect.mk +++ b/bsp/buildroot/package/python-pexpect/python-pexpect.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PEXPECT_VERSION = 4.0.1 -PYTHON_PEXPECT_SITE = https://pypi.python.org/packages/source/p/pexpect +PYTHON_PEXPECT_VERSION = 4.2.1 PYTHON_PEXPECT_SOURCE = pexpect-$(PYTHON_PEXPECT_VERSION).tar.gz +PYTHON_PEXPECT_SITE = https://pypi.python.org/packages/e8/13/d0b0599099d6cd23663043a2a0bb7c61e58c6ba359b2656e6fb000ef5b98 PYTHON_PEXPECT_LICENSE = ISC PYTHON_PEXPECT_LICENSE_FILES = LICENSE PYTHON_PEXPECT_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-pillow/python-pillow.hash b/bsp/buildroot/package/python-pillow/python-pillow.hash index bf7828db..182e82f8 100644 --- a/bsp/buildroot/package/python-pillow/python-pillow.hash +++ b/bsp/buildroot/package/python-pillow/python-pillow.hash @@ -1,4 +1,3 @@ -# https://pypi.python.org/pypi?:action=show_md5&digest=b5a15b03bf402fe254636c015fcf04da -md5 b5a15b03bf402fe254636c015fcf04da Pillow-3.3.0.tar.gz -# sha256 locally computed -sha256 031e7c9c885a4f343d1ad366c7fd2340449dc70318acb4a28d6411994f0accd1 Pillow-3.3.0.tar.gz +# md5 from https://pypi.python.org/pypi/pillow/json, sha256 locally computed +md5 d5af224b0fa2c66dacc9814785fef9e7 Pillow-4.0.0.tar.gz +sha256 ee26d2d7e7e300f76ba7b796014c04011394d0c4a5ed9a288264a3e443abca50 Pillow-4.0.0.tar.gz diff --git a/bsp/buildroot/package/python-pillow/python-pillow.mk b/bsp/buildroot/package/python-pillow/python-pillow.mk index 619c55b8..faa0e166 100644 --- a/bsp/buildroot/package/python-pillow/python-pillow.mk +++ b/bsp/buildroot/package/python-pillow/python-pillow.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PILLOW_VERSION = 3.3.0 +PYTHON_PILLOW_VERSION = 4.0.0 PYTHON_PILLOW_SOURCE = Pillow-$(PYTHON_PILLOW_VERSION).tar.gz -PYTHON_PILLOW_SITE = https://pypi.python.org/packages/e0/27/f61098a12f14690689924de93ffdd101463083a80bf8ff3e0c218addf05b +PYTHON_PILLOW_SITE = https://pypi.python.org/packages/8d/80/eca7a2d1a3c2dafb960f32f844d570de988e609f5fd17de92e1cf6a01b0a PYTHON_PILLOW_LICENSE = PIL Software License PYTHON_PILLOW_LICENSE_FILES = LICENSE PYTHON_PILLOW_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-posix-ipc/python-posix-ipc.hash b/bsp/buildroot/package/python-posix-ipc/python-posix-ipc.hash index 95ef4da6..196f186d 100644 --- a/bsp/buildroot/package/python-posix-ipc/python-posix-ipc.hash +++ b/bsp/buildroot/package/python-posix-ipc/python-posix-ipc.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 24e092ba995122869a2fca46a2579b1b2824cfdcb2ecc6938e2923a120460646 posix_ipc-0.9.6.tar.gz +# md5 from https://pypi.python.org/pypi/posix-ipc/json, sha256 locally computed +md5 85607a392087715ac3a3c7ded2492d06 posix_ipc-1.0.0.tar.gz +sha256 9c93070374ca672725575e5c9874930c8cde69367fb90378b2255e048e31efcb posix_ipc-1.0.0.tar.gz diff --git a/bsp/buildroot/package/python-posix-ipc/python-posix-ipc.mk b/bsp/buildroot/package/python-posix-ipc/python-posix-ipc.mk index 5fa7471e..79165375 100644 --- a/bsp/buildroot/package/python-posix-ipc/python-posix-ipc.mk +++ b/bsp/buildroot/package/python-posix-ipc/python-posix-ipc.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_POSIX_IPC_VERSION = 0.9.6 +PYTHON_POSIX_IPC_VERSION = 1.0.0 PYTHON_POSIX_IPC_SOURCE = posix_ipc-$(PYTHON_POSIX_IPC_VERSION).tar.gz -PYTHON_POSIX_IPC_SITE = http://semanchuk.com/philip/posix_ipc +PYTHON_POSIX_IPC_SITE = https://pypi.python.org/packages/f0/e6/bff62b62b2e75f695b737695951b7a4c1c6595369268a37868f5c34e1c12 PYTHON_POSIX_IPC_LICENSE = BSD-3c PYTHON_POSIX_IPC_LICENSE_FILES = LICENSE PYTHON_POSIX_IPC_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.hash b/bsp/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.hash index f33e99a3..0211a96f 100644 --- a/bsp/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.hash +++ b/bsp/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi/prompt_toolkit/json, sha256 locally computed -md5 6c4133d099603f496c761491043bf0ef prompt_toolkit-1.0.3.tar.gz -sha256 805e026f0cbad27467e93f9dd3e3777718d401a62788c1e84ca038e967ad8ba2 prompt_toolkit-1.0.3.tar.gz +# md5 from https://pypi.python.org/pypi/prompt-toolkit/json, sha256 locally computed +md5 f74cd8ac84176fac1cdb136843ccb0d6 prompt_toolkit-1.0.7.tar.gz +sha256 ef0b8188179fe7d052161ed274b43e18f5a680ff84d01462293b327e1668d2ef prompt_toolkit-1.0.7.tar.gz diff --git a/bsp/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.mk b/bsp/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.mk index 634f20ea..7e85dcd2 100644 --- a/bsp/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.mk +++ b/bsp/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PROMPT_TOOLKIT_VERSION = 1.0.3 +PYTHON_PROMPT_TOOLKIT_VERSION = 1.0.7 PYTHON_PROMPT_TOOLKIT_SOURCE = prompt_toolkit-$(PYTHON_PROMPT_TOOLKIT_VERSION).tar.gz -PYTHON_PROMPT_TOOLKIT_SITE = https://pypi.python.org/packages/8d/de/412f23919929c01e6b55183e124623f705e4b91796d3d2dce2cb53d595ad +PYTHON_PROMPT_TOOLKIT_SITE = https://pypi.python.org/packages/dd/55/2fb4883d2b21d072204fd21ca5e6040faa253135554590d0b67380669176 PYTHON_PROMPT_TOOLKIT_SETUP_TYPE = setuptools PYTHON_PROMPT_TOOLKIT_LICENSE = BSD-3c PYTHON_PROMPT_TOOLKIT_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-protobuf/0001-disable-unneeded-build-dependencies.patch b/bsp/buildroot/package/python-protobuf/0001-disable-unneeded-build-dependencies.patch deleted file mode 100644 index 3f0eabd2..00000000 --- a/bsp/buildroot/package/python-protobuf/0001-disable-unneeded-build-dependencies.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 7e7db7225e227905acabfa2149152ece21c93e70 Mon Sep 17 00:00:00 2001 -From: Steven Noonan -Date: Sun, 8 Nov 2015 09:03:00 -0800 -Subject: [PATCH] python-protobuf: don't require google-apputils - -This dependency is totally superfluous for successfully building/running -python-protobuf. It's only "required" at build time and is not staged into the -install directory, but it isn't even really required for a successful build. - -Signed-off-by: Steven Noonan ---- - python/setup.py | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/python/setup.py b/python/setup.py -index 2450a77..db6f497 100755 ---- a/python/setup.py -+++ b/python/setup.py -@@ -160,7 +160,6 @@ if __name__ == '__main__': - packages = [ 'google' ], - namespace_packages = [ 'google' ], - test_suite = 'setup.MakeTestSuite', -- google_test_dir = "google/protobuf/internal", - # Must list modules explicitly so that we don't install tests. - py_modules = [ - 'google.protobuf.internal.api_implementation', -@@ -189,7 +188,6 @@ if __name__ == '__main__': - 'google.protobuf.text_format'], - cmdclass = { 'clean': clean, 'build_py': build_py }, - install_requires = ['setuptools'], -- setup_requires = ['google-apputils'], - ext_modules = ext_module_list, - url = 'https://developers.google.com/protocol-buffers/', - maintainer = maintainer_email, --- -2.6.2 - diff --git a/bsp/buildroot/package/python-protobuf/python-protobuf.hash b/bsp/buildroot/package/python-protobuf/python-protobuf.hash deleted file mode 100644 index ab4bf5bf..00000000 --- a/bsp/buildroot/package/python-protobuf/python-protobuf.hash +++ /dev/null @@ -1,2 +0,0 @@ -# locally computed -sha256 2667b7cda4a6bc8a09e5463adf3b5984e08d94e72338277affa8594d8b6e5cd1 protobuf-v2.6.1.tar.gz diff --git a/bsp/buildroot/package/python-protobuf/python-protobuf.hash b/bsp/buildroot/package/python-protobuf/python-protobuf.hash new file mode 120000 index 00000000..57a40ce5 --- /dev/null +++ b/bsp/buildroot/package/python-protobuf/python-protobuf.hash @@ -0,0 +1 @@ +../protobuf/protobuf.hash \ No newline at end of file diff --git a/bsp/buildroot/package/python-psutil/Config.in b/bsp/buildroot/package/python-psutil/Config.in index c64eeeed..1aec35d2 100644 --- a/bsp/buildroot/package/python-psutil/Config.in +++ b/bsp/buildroot/package/python-psutil/Config.in @@ -1,8 +1,13 @@ config BR2_PACKAGE_PYTHON_PSUTIL bool "python-psutil" + # sys/sysinfo.h conflict with kernel headers + depends on !BR2_TOOLCHAIN_USES_MUSL help psutil is a cross-platform library for retrieving information on running processes and system utilization (CPU, memory, disks, network) in Python. https://pypi.python.org/pypi/psutil + +comment "python-psutil needs a uClibc or glibc toolchain" + depends on BR2_TOOLCHAIN_USES_MUSL diff --git a/bsp/buildroot/package/python-psutil/python-psutil.hash b/bsp/buildroot/package/python-psutil/python-psutil.hash index 007b7c50..ead2d9c5 100644 --- a/bsp/buildroot/package/python-psutil/python-psutil.hash +++ b/bsp/buildroot/package/python-psutil/python-psutil.hash @@ -1,3 +1,3 @@ # md5 from https://pypi.python.org/pypi/psutil/json, sha256 locally computed -md5 ca97cf5f09c07b075a12a68b9d44a67d psutil-4.3.0.tar.gz -sha256 86197ae5978f216d33bfff4383d5cc0b80f079d09cf45a2a406d1abb5d0299f0 psutil-4.3.0.tar.gz +md5 199a366dba829c88bddaf5b41d19ddc0 psutil-4.3.1.tar.gz +sha256 38f74182fb9e15cafd0cdf0821098a95cc17301807aed25634a18b66537ba51b psutil-4.3.1.tar.gz diff --git a/bsp/buildroot/package/python-psutil/python-psutil.mk b/bsp/buildroot/package/python-psutil/python-psutil.mk index 85882adc..10323188 100644 --- a/bsp/buildroot/package/python-psutil/python-psutil.mk +++ b/bsp/buildroot/package/python-psutil/python-psutil.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PSUTIL_VERSION = 4.3.0 +PYTHON_PSUTIL_VERSION = 4.3.1 PYTHON_PSUTIL_SOURCE = psutil-$(PYTHON_PSUTIL_VERSION).tar.gz -PYTHON_PSUTIL_SITE = https://pypi.python.org/packages/22/a8/6ab3f0b3b74a36104785808ec874d24203c6a511ffd2732dd215cf32d689 +PYTHON_PSUTIL_SITE = https://pypi.python.org/packages/78/cc/f267a1371f229bf16db6a4e604428c3b032b823b83155bd33cef45e49a53 PYTHON_PSUTIL_SETUP_TYPE = setuptools PYTHON_PSUTIL_LICENSE = BSD-3c PYTHON_PSUTIL_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-pudb/Config.in b/bsp/buildroot/package/python-pudb/Config.in new file mode 100644 index 00000000..d4a4f73e --- /dev/null +++ b/bsp/buildroot/package/python-pudb/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PUDB + bool "python-pudb" + select BR2_PACKAGE_PYTHON_URWID # runtime + select BR2_PACKAGE_PYTHON_PYGMENTS # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_CURSES if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_CURSES if BR2_PACKAGE_PYTHON3 # runtime + help + A full-screen, console-based Python debugger. + + https://github.com/inducer/pudb diff --git a/bsp/buildroot/package/python-pudb/python-pudb.hash b/bsp/buildroot/package/python-pudb/python-pudb.hash new file mode 100644 index 00000000..b06d5e8b --- /dev/null +++ b/bsp/buildroot/package/python-pudb/python-pudb.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pudb/json, sha256 locally computed +md5 4573b70163329c1cb59836a357bfdf7c pudb-2016.2.tar.gz +sha256 e958d7f7b1771cf297714e95054075df3b2a47455d7a740be4abbbd41289505a pudb-2016.2.tar.gz diff --git a/bsp/buildroot/package/python-pudb/python-pudb.mk b/bsp/buildroot/package/python-pudb/python-pudb.mk new file mode 100644 index 00000000..5349c1e1 --- /dev/null +++ b/bsp/buildroot/package/python-pudb/python-pudb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pudb +# +################################################################################ + +PYTHON_PUDB_VERSION = 2016.2 +PYTHON_PUDB_SOURCE = pudb-$(PYTHON_PUDB_VERSION).tar.gz +PYTHON_PUDB_SITE = https://pypi.python.org/packages/50/1a/d9b692e32afff09ccb5aa33c3d51c6d5a80efbb59de90307b33601e7fa62 +PYTHON_PUDB_SETUP_TYPE = setuptools +PYTHON_PUDB_LICENSE = MIT +PYTHON_PUDB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-pydal/python-pydal.hash b/bsp/buildroot/package/python-pydal/python-pydal.hash index bb366176..ad17c33c 100644 --- a/bsp/buildroot/package/python-pydal/python-pydal.hash +++ b/bsp/buildroot/package/python-pydal/python-pydal.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 e59c050c4b7656c36351707dfbbae187645d46327e67e42415e15b3bc32d48b3 python-pydal-v15.07.tar.gz +# md5 from https://pypi.python.org/pypi/pydal/json, sha256 locally computed +md5 74c6cc43d5ee57bcffa804c1204030d8 pyDAL-16.9.tar.gz +sha256 e5e18b10df044c4328a5a2fe0400793a8f643fe3526daee8c99103fc5589476e pyDAL-16.9.tar.gz diff --git a/bsp/buildroot/package/python-pydal/python-pydal.mk b/bsp/buildroot/package/python-pydal/python-pydal.mk index 4c5da419..a0e9729d 100644 --- a/bsp/buildroot/package/python-pydal/python-pydal.mk +++ b/bsp/buildroot/package/python-pydal/python-pydal.mk @@ -4,8 +4,9 @@ # ################################################################################ -PYTHON_PYDAL_VERSION = v15.07 -PYTHON_PYDAL_SITE = $(call github,web2py,pydal,$(PYTHON_PYDAL_VERSION)) +PYTHON_PYDAL_VERSION = 16.9 +PYTHON_PYDAL_SOURCE = pyDAL-$(PYTHON_PYDAL_VERSION).tar.gz +PYTHON_PYDAL_SITE = https://pypi.python.org/packages/31/cb/7537f8d848106e3e4b4063955395a5dc3177c32c2cd2cc0a1938a486d4fa PYTHON_PYDAL_LICENSE = BSD-3c PYTHON_PYDAL_LICENSE_FILES = LICENSE PYTHON_PYDAL_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-pyelftools/Config.in b/bsp/buildroot/package/python-pyelftools/Config.in new file mode 100644 index 00000000..ca273022 --- /dev/null +++ b/bsp/buildroot/package/python-pyelftools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYELFTOOLS + bool "python-pyelftools" + help + Pyelftools is a Python library for parsing and analyzing ELF + files and DWARF debug information. + + https://github.com/eliben/pyelftools diff --git a/bsp/buildroot/package/python-pyelftools/python-pyelftools.hash b/bsp/buildroot/package/python-pyelftools/python-pyelftools.hash new file mode 100644 index 00000000..e345a5bb --- /dev/null +++ b/bsp/buildroot/package/python-pyelftools/python-pyelftools.hash @@ -0,0 +1,4 @@ +# From https://pypi.python.org/packages/ba/78/d4a186a2e38731286c99dc3e3ca8123b6f55cf2e28608e8daf2d84b65494/pyelftools-0.24.tar.gz#md5=c960d5fe0a9308d96ba38b4beec8ac8e +md5 c960d5fe0a9308d96ba38b4beec8ac8e pyelftools-0.24.tar.gz +# Locally calculated +sha256 e9dd97d685a5b96b88a988dabadb88e5a539b64cd7d7927fac9a7368dc4c459c pyelftools-0.24.tar.gz diff --git a/bsp/buildroot/package/python-pyelftools/python-pyelftools.mk b/bsp/buildroot/package/python-pyelftools/python-pyelftools.mk new file mode 100644 index 00000000..5b5b488c --- /dev/null +++ b/bsp/buildroot/package/python-pyelftools/python-pyelftools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyelftools +# +################################################################################ + +PYTHON_PYELFTOOLS_VERSION = 0.24 +PYTHON_PYELFTOOLS_SOURCE = pyelftools-$(PYTHON_PYELFTOOLS_VERSION).tar.gz +PYTHON_PYELFTOOLS_SITE = https://pypi.python.org/packages/ba/78/d4a186a2e38731286c99dc3e3ca8123b6f55cf2e28608e8daf2d84b65494 +PYTHON_PYELFTOOLS_LICENSE = Public domain +PYTHON_PYELFTOOLS_LICENSE_FILES = LICENSE +PYTHON_PYELFTOOLS_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-pygments/python-pygments.hash b/bsp/buildroot/package/python-pygments/python-pygments.hash index bb954dd5..2af1597f 100644 --- a/bsp/buildroot/package/python-pygments/python-pygments.hash +++ b/bsp/buildroot/package/python-pygments/python-pygments.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=84533d22f72de894f6d3907c3ca9eddf, sha256 locally computed. -md5 84533d22f72de894f6d3907c3ca9eddf Pygments-2.1.tar.gz -sha256 13a0ef5fafd7b16cf995bc28fe7aab0780dab1b2fda0fc89e033709af8b8a47b Pygments-2.1.tar.gz +# md5 from https://pypi.python.org/pypi/pygments/json, sha256 locally computed +md5 ed3fba2467c8afcda4d317e4ef2c6150 Pygments-2.1.3.tar.gz +sha256 88e4c8a91b2af5962bfa5ea2447ec6dd357018e86e94c7d14bd8cacbc5b55d81 Pygments-2.1.3.tar.gz diff --git a/bsp/buildroot/package/python-pygments/python-pygments.mk b/bsp/buildroot/package/python-pygments/python-pygments.mk index eafd7759..16ed90dc 100644 --- a/bsp/buildroot/package/python-pygments/python-pygments.mk +++ b/bsp/buildroot/package/python-pygments/python-pygments.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PYGMENTS_VERSION = 2.1 +PYTHON_PYGMENTS_VERSION = 2.1.3 PYTHON_PYGMENTS_SOURCE = Pygments-$(PYTHON_PYGMENTS_VERSION).tar.gz -PYTHON_PYGMENTS_SITE = http://pypi.python.org/packages/source/P/Pygments +PYTHON_PYGMENTS_SITE = https://pypi.python.org/packages/b8/67/ab177979be1c81bc99c8d0592ef22d547e70bb4c6815c383286ed5dec504 PYTHON_PYGMENTS_LICENSE = BSD-2c PYTHON_PYGMENTS_LICENSE_FILES = LICENSE PYTHON_PYGMENTS_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-pyicu/Config.in b/bsp/buildroot/package/python-pyicu/Config.in new file mode 100644 index 00000000..a3578f10 --- /dev/null +++ b/bsp/buildroot/package/python-pyicu/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_PYICU + bool "python-pyicu" + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_INSTALL_LIBSTDCPP # icu + select BR2_PACKAGE_ICU + help + Python extension wrapping the ICU C++ API. + + http://pyicu.osafoundation.org/ + +comment "python-pyicu needs a toolchain w/ C++" + depends on !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/bsp/buildroot/package/python-pyicu/python-pyicu.hash b/bsp/buildroot/package/python-pyicu/python-pyicu.hash new file mode 100644 index 00000000..69edba83 --- /dev/null +++ b/bsp/buildroot/package/python-pyicu/python-pyicu.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/PyICU/json, sha256 locally computed +md5 30f85b7272f15b26c110c9f3e3a9e7a0 PyICU-1.9.5.tar.gz +sha256 73b052b800861fae3281dbaf9c92d12a81cabf3d31912d94c51862e093ef359b PyICU-1.9.5.tar.gz diff --git a/bsp/buildroot/package/python-pyicu/python-pyicu.mk b/bsp/buildroot/package/python-pyicu/python-pyicu.mk new file mode 100644 index 00000000..5c014213 --- /dev/null +++ b/bsp/buildroot/package/python-pyicu/python-pyicu.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pyicu +# +################################################################################ + +PYTHON_PYICU_VERSION = 1.9.5 +PYTHON_PYICU_SOURCE = PyICU-$(PYTHON_PYICU_VERSION).tar.gz +PYTHON_PYICU_SITE = https://pypi.python.org/packages/a2/9f/1947f288143191b903e58633ee597cb98bc284de28dafb1231b6f8b67b99 +PYTHON_PYICU_LICENSE = MIT +PYTHON_PYICU_LICENSE_FILES = LICENSE +PYTHON_PYICU_DEPENDENCIES = icu +PYTHON_PYICU_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-pylru/Config.in b/bsp/buildroot/package/python-pylru/Config.in new file mode 100644 index 00000000..c1745769 --- /dev/null +++ b/bsp/buildroot/package/python-pylru/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYLRU + bool "python-pylru" + help + A least recently used (LRU) cache implementation. + + https://github.com/jlhutch/pylru diff --git a/bsp/buildroot/package/python-pylru/python-pylru.hash b/bsp/buildroot/package/python-pylru/python-pylru.hash new file mode 100644 index 00000000..806ea36a --- /dev/null +++ b/bsp/buildroot/package/python-pylru/python-pylru.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pylru/json, sha256 locally computed +md5 41369d58a1c4391c5cc36f84262abcdc pylru-1.0.9.tar.gz +sha256 71376192671f0ad1690b2a7427d39a29b1df994c8469a9b46b03ed7e28c0172c pylru-1.0.9.tar.gz diff --git a/bsp/buildroot/package/python-pylru/python-pylru.mk b/bsp/buildroot/package/python-pylru/python-pylru.mk new file mode 100644 index 00000000..e670f3d1 --- /dev/null +++ b/bsp/buildroot/package/python-pylru/python-pylru.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pylru +# +################################################################################ + +PYTHON_PYLRU_VERSION = 1.0.9 +PYTHON_PYLRU_SOURCE = pylru-$(PYTHON_PYLRU_VERSION).tar.gz +PYTHON_PYLRU_SITE = https://pypi.python.org/packages/c0/7d/0de1055632f3871dfeaabe5a3f0510317cd98b93e7b792b44e4c7de2b17b +PYTHON_PYLRU_SETUP_TYPE = distutils +PYTHON_PYLRU_LICENSE = GPLv2 +PYTHON_PYLRU_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-pymysql/python-pymysql.hash b/bsp/buildroot/package/python-pymysql/python-pymysql.hash index fc7e5e3e..9e058abf 100644 --- a/bsp/buildroot/package/python-pymysql/python-pymysql.hash +++ b/bsp/buildroot/package/python-pymysql/python-pymysql.hash @@ -1,4 +1,3 @@ -#md5 from https://pypi.python.org/pypi?:action=show_md5&digest=6d757cda8bfbd312714207f7c0bef5c7 -md5 6d757cda8bfbd312714207f7c0bef5c7 PyMySQL-0.7.2.tar.gz -# Locally calculated: -sha256 bd7acb4990dbf097fae3417641f93e25c690e01ed25c3ed32ea638d6c3ac04ba PyMySQL-0.7.2.tar.gz +# md5 from https://pypi.python.org/pypi/pymysql/json, sha256 locally computed +md5 bf82311ac2df4c43adad003a8c805b90 PyMySQL-0.7.9.tar.gz +sha256 2331f82b7b85d407c8d9d7a8d7901a6abbeb420533e5d5d64ded5009b5c6dcc3 PyMySQL-0.7.9.tar.gz diff --git a/bsp/buildroot/package/python-pymysql/python-pymysql.mk b/bsp/buildroot/package/python-pymysql/python-pymysql.mk index e58ff7e8..94a93a26 100644 --- a/bsp/buildroot/package/python-pymysql/python-pymysql.mk +++ b/bsp/buildroot/package/python-pymysql/python-pymysql.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PYMYSQL_VERSION = 0.7.2 +PYTHON_PYMYSQL_VERSION = 0.7.9 PYTHON_PYMYSQL_SOURCE = PyMySQL-$(PYTHON_PYMYSQL_VERSION).tar.gz -PYTHON_PYMYSQL_SITE = https://pypi.python.org/packages/source/P/PyMySQL +PYTHON_PYMYSQL_SITE = https://pypi.python.org/packages/a4/c4/c15457f261fda9839637de044eca9b6da8f55503183fe887523801b85701 PYTHON_PYMYSQL_LICENSE = MIT PYTHON_PYMYSQL_LICENSE_FILES = LICENSE PYTHON_PYMYSQL_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-pyopenssl/python-pyopenssl.hash b/bsp/buildroot/package/python-pyopenssl/python-pyopenssl.hash index 27427d2a..894c4f8b 100644 --- a/bsp/buildroot/package/python-pyopenssl/python-pyopenssl.hash +++ b/bsp/buildroot/package/python-pyopenssl/python-pyopenssl.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=9587d813dcf656e9f2760e41a3682dc3, sha256 locally computed -md5 9587d813dcf656e9f2760e41a3682dc3 pyOpenSSL-16.0.0.tar.gz -sha256 363d10ee43d062285facf4e465f4f5163f9f702f9134f0a5896f134cbb92d17d pyOpenSSL-16.0.0.tar.gz +# md5 from https://pypi.python.org/pypi/pyopenssl/json, sha256 locally computed +md5 6635503758c65ea6f70d18d1b18e46d5 pyOpenSSL-16.2.0.tar.gz +sha256 7779a3bbb74e79db234af6a08775568c6769b5821faecf6e2f4143edb227516e pyOpenSSL-16.2.0.tar.gz diff --git a/bsp/buildroot/package/python-pyopenssl/python-pyopenssl.mk b/bsp/buildroot/package/python-pyopenssl/python-pyopenssl.mk index 76064111..a5312a06 100644 --- a/bsp/buildroot/package/python-pyopenssl/python-pyopenssl.mk +++ b/bsp/buildroot/package/python-pyopenssl/python-pyopenssl.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PYOPENSSL_VERSION = 16.0.0 +PYTHON_PYOPENSSL_VERSION = 16.2.0 PYTHON_PYOPENSSL_SOURCE = pyOpenSSL-$(PYTHON_PYOPENSSL_VERSION).tar.gz -PYTHON_PYOPENSSL_SITE = https://pypi.python.org/packages/source/p/pyOpenSSL +PYTHON_PYOPENSSL_SITE = https://pypi.python.org/packages/0c/d6/b1fe519846a21614fa4f8233361574eddb223e0bc36b182140d916acfb3b PYTHON_PYOPENSSL_LICENSE = Apache-2.0 PYTHON_PYOPENSSL_LICENSE_FILES = LICENSE PYTHON_PYOPENSSL_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-pyparsing/python-pyparsing.hash b/bsp/buildroot/package/python-pyparsing/python-pyparsing.hash index 93a08458..6cf686a8 100644 --- a/bsp/buildroot/package/python-pyparsing/python-pyparsing.hash +++ b/bsp/buildroot/package/python-pyparsing/python-pyparsing.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi/pyparsing/2.0.3, sha256 locally computed -md5 0fe479be09fc2cf005f753d3acc35939 pyparsing-2.0.3.tar.gz -sha256 06e729e1cbf5274703b1f47b6135ed8335999d547f9d8cf048b210fb8ebf844f pyparsing-2.0.3.tar.gz +# md5 from https://pypi.python.org/pypi/pyparsing/json, sha256 locally computed +md5 ee943c354eac79526533c58342f322c7 pyparsing-2.1.9.tar.gz +sha256 93326f5490bcfe7069806ff342692e75f72529cfa82f20683b5fceeb5d4a7fc2 pyparsing-2.1.9.tar.gz diff --git a/bsp/buildroot/package/python-pyparsing/python-pyparsing.mk b/bsp/buildroot/package/python-pyparsing/python-pyparsing.mk index ad066b8f..652345d3 100644 --- a/bsp/buildroot/package/python-pyparsing/python-pyparsing.mk +++ b/bsp/buildroot/package/python-pyparsing/python-pyparsing.mk @@ -4,11 +4,11 @@ # ################################################################################ -PYTHON_PYPARSING_VERSION = 2.0.3 +PYTHON_PYPARSING_VERSION = 2.1.9 PYTHON_PYPARSING_SOURCE = pyparsing-$(PYTHON_PYPARSING_VERSION).tar.gz -PYTHON_PYPARSING_SITE = https://pypi.python.org/packages/source/p/pyparsing +PYTHON_PYPARSING_SITE = https://pypi.python.org/packages/87/ee/6f3a94d834c82a5c1a74f2fc77775ff05b5fbbf7d97f844e6fff5e2ff94b PYTHON_PYPARSING_LICENSE = MIT PYTHON_PYPARSING_LICENSE_FILES = LICENSE -PYTHON_PYPARSING_SETUP_TYPE = distutils +PYTHON_PYPARSING_SETUP_TYPE = setuptools $(eval $(python-package)) diff --git a/bsp/buildroot/package/python-pyqrcode/Config.in b/bsp/buildroot/package/python-pyqrcode/Config.in new file mode 100644 index 00000000..01b7ae81 --- /dev/null +++ b/bsp/buildroot/package/python-pyqrcode/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PYQRCODE + bool "python-pyqrcode" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_CODECSCJK if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_CODECSCJK if BR2_PACKAGE_PYTHON3 # runtime + help + A QR code generator written purely in Python with SVG, EPS, + PNG and terminal output. + + https://github.com/mnooner256/pyqrcode diff --git a/bsp/buildroot/package/python-pyqrcode/python-pyqrcode.hash b/bsp/buildroot/package/python-pyqrcode/python-pyqrcode.hash new file mode 100644 index 00000000..619ddb0c --- /dev/null +++ b/bsp/buildroot/package/python-pyqrcode/python-pyqrcode.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pyqrcode/json, sha256 locally computed +md5 371f29f4b03bd2830c6e0319258b1259 PyQRCode-1.2.1.tar.gz +sha256 fdbf7634733e56b72e27f9bce46e4550b75a3a2c420414035cae9d9d26b234d5 PyQRCode-1.2.1.tar.gz diff --git a/bsp/buildroot/package/python-pyqrcode/python-pyqrcode.mk b/bsp/buildroot/package/python-pyqrcode/python-pyqrcode.mk new file mode 100644 index 00000000..67e167a4 --- /dev/null +++ b/bsp/buildroot/package/python-pyqrcode/python-pyqrcode.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyqrcode +# +################################################################################ + +PYTHON_PYQRCODE_VERSION = 1.2.1 +PYTHON_PYQRCODE_SOURCE = PyQRCode-$(PYTHON_PYQRCODE_VERSION).tar.gz +PYTHON_PYQRCODE_SITE = https://pypi.python.org/packages/37/61/f07226075c347897937d4086ef8e55f0a62ae535e28069884ac68d979316 +PYTHON_PYQRCODE_SETUP_TYPE = setuptools +PYTHON_PYQRCODE_LICENSE = BSD-3c +PYTHON_PYQRCODE_LICENSE_FILES = setup.py + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-pyqt/Config.in b/bsp/buildroot/package/python-pyqt/Config.in index a50cb74a..6934a4c4 100644 --- a/bsp/buildroot/package/python-pyqt/Config.in +++ b/bsp/buildroot/package/python-pyqt/Config.in @@ -1,13 +1,9 @@ -comment "python-pyqt needs a toolchain w/ C++, threads" - depends on BR2_USE_MMU - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS +comment "python-pyqt needs Qt4" + depends on !BR2_PACKAGE_QT config BR2_PACKAGE_PYTHON_PYQT bool "python-pyqt" - depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_HAS_THREADS # qt - depends on BR2_USE_MMU # qt - select BR2_PACKAGE_QT + depends on BR2_PACKAGE_QT select BR2_PACKAGE_PYTHON_SIP help PyQt4 for Qt Embedded 4 bindings. diff --git a/bsp/buildroot/package/python-pyqt/python-pyqt.mk b/bsp/buildroot/package/python-pyqt/python-pyqt.mk index fa298c48..50e83517 100644 --- a/bsp/buildroot/package/python-pyqt/python-pyqt.mk +++ b/bsp/buildroot/package/python-pyqt/python-pyqt.mk @@ -108,9 +108,6 @@ define PYTHON_PYQT_INSTALL_TARGET_CMDS $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install touch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4/__init__.py $(RM) -rf $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4/uic/$(PYTHON_PYQT_RM_PORT_BASE) - PYTHONPATH="$(PYTHON_PATH)" \ - $(HOST_DIR)/usr/bin/python -c "import compileall; \ - compileall.compile_dir('$(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4')" endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/python-pyqt5/0001-configure-skip-qtdetail.patch b/bsp/buildroot/package/python-pyqt5/0001-configure-skip-qtdetail.patch new file mode 100644 index 00000000..2e7b331e --- /dev/null +++ b/bsp/buildroot/package/python-pyqt5/0001-configure-skip-qtdetail.patch @@ -0,0 +1,29 @@ +Do not run qtdetail + +qtdetail is a tool that generates qtdetail.out. Since this program is +cross-compiled, it's not possible to run it on the host. + +Consequently, python-pyqt5.mk generates the qtdetail.out file before +calling configure.py. + +Therefore, this patch makes sure that the pre-generated qtdetail.out +file is kept, and that qtdetail is not executed. + +Signed-off-by: Gwenhael Goavec-Merou +Signed-off-by: Sergey Kostanbaev +--- +Index: PyQt5_gpl-5.7/configure.py +=================================================================== +--- PyQt5_gpl-5.7.orig/configure.py ++++ PyQt5_gpl-5.7/configure.py +@@ -672,10 +672,6 @@ int main(int argc, char **argv) + if cmd is None: + error("Failed to determine the detail of your Qt installation. Try again using the --verbose flag to see more detail about the problem.") + +- # Create the output file, first making sure it doesn't exist. +- remove_file(out_file) +- run_command(cmd, verbose) +- + if not os.access(out_file, os.F_OK): + error("%s failed to create %s. Make sure your Qt installation is correct." % (cmd, out_file)) + diff --git a/bsp/buildroot/package/python-pyqt5/0002-fix-qt-5.6.2.patch b/bsp/buildroot/package/python-pyqt5/0002-fix-qt-5.6.2.patch new file mode 100644 index 00000000..a56af090 --- /dev/null +++ b/bsp/buildroot/package/python-pyqt5/0002-fix-qt-5.6.2.patch @@ -0,0 +1,28 @@ +Fix the build with Qt 5.6.2 + +Building PyQt 5.7 with versions of Qt older than Qt 5.7 is supposed to +work, but currently fails in practice. In fact, this is due to the +fact that the %Timeline variable in QtCoremod.sip didn't contain the +5.6.2 Qt version, so if this version was used, PyQt was assuming it +was the later version 5.7, and therefore started enabling APIs only +available in Qt 5.7, causing build failures when building against Qt +5.6.2. + +Adding Qt_5_6_2 to the timeline fixes this problem. This fix was +suggested by Phil Thompson . + +Signed-off-by: Thomas Petazzoni + +Index: PyQt5_gpl-5.7/sip/QtCore/QtCoremod.sip +=================================================================== +--- PyQt5_gpl-5.7.orig/sip/QtCore/QtCoremod.sip 2016-07-25 15:55:37.000000000 +0200 ++++ PyQt5_gpl-5.7/sip/QtCore/QtCoremod.sip 2016-10-26 15:45:43.577153825 +0200 +@@ -22,7 +22,7 @@ + + %Module(name=PyQt5.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt5, keyword_arguments="Optional", version=1) + +-%Timeline {Qt_5_0_0 Qt_5_0_1 Qt_5_0_2 Qt_5_1_0 Qt_5_1_1 Qt_5_2_0 Qt_5_2_1 Qt_5_3_0 Qt_5_3_1 Qt_5_3_2 Qt_5_4_0 Qt_5_4_1 Qt_5_4_2 Qt_5_5_0 Qt_5_5_1 Qt_5_6_0 Qt_5_6_1 Qt_5_7_0} ++%Timeline {Qt_5_0_0 Qt_5_0_1 Qt_5_0_2 Qt_5_1_0 Qt_5_1_1 Qt_5_2_0 Qt_5_2_1 Qt_5_3_0 Qt_5_3_1 Qt_5_3_2 Qt_5_4_0 Qt_5_4_1 Qt_5_4_2 Qt_5_5_0 Qt_5_5_1 Qt_5_6_0 Qt_5_6_1 Qt_5_6_2 Qt_5_7_0} + + %Platforms {WS_X11 WS_WIN WS_MACX} + diff --git a/bsp/buildroot/package/python-pyqt5/0003-remove-WindowOkButtonHint-and-WindowCancelButtonHint.patch b/bsp/buildroot/package/python-pyqt5/0003-remove-WindowOkButtonHint-and-WindowCancelButtonHint.patch new file mode 100644 index 00000000..146cce03 --- /dev/null +++ b/bsp/buildroot/package/python-pyqt5/0003-remove-WindowOkButtonHint-and-WindowCancelButtonHint.patch @@ -0,0 +1,27 @@ +From bb7cbdede46f72468bbb1b9bbefd43a1dbad21c0 Mon Sep 17 00:00:00 2001 +From: Zoltan Gyarmati +Date: Mon, 30 Jan 2017 18:28:15 +0100 +Subject: [PATCH] remove WindowOkButtonHint and WindowCancelButtonHint from + qnamespace.sip as they are removed from qt5.8 + +Signed-off-by: Zoltan Gyarmati +--- + sip/QtCore/qnamespace.sip | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/sip/QtCore/qnamespace.sip b/sip/QtCore/qnamespace.sip +index 2db83b7..559f410 100644 +--- a/sip/QtCore/qnamespace.sip ++++ b/sip/QtCore/qnamespace.sip +@@ -209,8 +209,6 @@ namespace Qt + WindowContextHelpButtonHint, + WindowShadeButtonHint, + WindowStaysOnTopHint, +- WindowOkButtonHint, +- WindowCancelButtonHint, + WindowStaysOnBottomHint, + WindowCloseButtonHint, + MacWindowToolBarButtonHint, +-- +2.7.4 + diff --git a/bsp/buildroot/package/python-pyqt5/Config.in b/bsp/buildroot/package/python-pyqt5/Config.in new file mode 100644 index 00000000..20ac9887 --- /dev/null +++ b/bsp/buildroot/package/python-pyqt5/Config.in @@ -0,0 +1,11 @@ +comment "python-pyqt5 needs Qt5" + depends on !BR2_PACKAGE_QT5 + +config BR2_PACKAGE_PYTHON_PYQT5 + bool "python-pyqt5" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_PYTHON_SIP + help + Python bindings for Qt 5 + + http://www.riverbankcomputing.com/software/pyqt/ diff --git a/bsp/buildroot/package/python-pyqt5/python-pyqt5.hash b/bsp/buildroot/package/python-pyqt5/python-pyqt5.hash new file mode 100644 index 00000000..2a7d05b4 --- /dev/null +++ b/bsp/buildroot/package/python-pyqt5/python-pyqt5.hash @@ -0,0 +1,3 @@ +# md5 from http://http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.7, sha256 locally computed +md5 e3dc21f31fd714659f0688e1eb31bacf PyQt5_gpl-5.7.tar.gz +sha256 892693ba5f79989abb2061dad2d5c4e6f127e9dd3240f73f8220c7152cd35b05 PyQt5_gpl-5.7.tar.gz diff --git a/bsp/buildroot/package/python-pyqt5/python-pyqt5.mk b/bsp/buildroot/package/python-pyqt5/python-pyqt5.mk new file mode 100644 index 00000000..e58ee5ad --- /dev/null +++ b/bsp/buildroot/package/python-pyqt5/python-pyqt5.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# python-pyqt5 +# +################################################################################ + +PYTHON_PYQT5_VERSION = 5.7 +PYTHON_PYQT5_SOURCE = PyQt5_gpl-$(PYTHON_PYQT5_VERSION).tar.gz +PYTHON_PYQT5_SITE = http://downloads.sourceforge.net/project/pyqt/PyQt5/PyQt-$(PYTHON_PYQT5_VERSION) +PYTHON_PYQT5_LICENSE = GPLv3 +PYTHON_PYQT5_LICENSE_FILES = LICENSE + +PYTHON_PYQT5_DEPENDENCIES = python-sip host-python-sip qt5base + +ifeq ($(BR2_PACKAGE_PYTHON),y) +PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON_VERSION_MAJOR) +PYTHON_PYQT5_RM_PORT_BASE = port_v3 +else ifeq ($(BR2_PACKAGE_PYTHON3),y) +PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON3_VERSION_MAJOR) +PYTHON_PYQT5_RM_PORT_BASE = port_v2 +endif + +PYTHON_PYQT5_QTDETAIL_LICENSE = Open Source + +PYTHON_PYQT5_QTDETAIL_TYPE = shared + +# Turn off features that aren't available in current qt configuration +PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_OPENSSL),,PyQt_SSL) +PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL),,PyQt_OpenGL) +PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),,PyQt_Desktop_OpenGL) + +define PYTHON_PYQT5_QTDETAIL + echo $(1) >> $(2)/qtdetail.out +endef + +# Since we can't run generate qtdetail.out by running qtdetail on target device +# we must generate the configuration. +define PYTHON_PYQT5_GENERATE_QTDETAIL + $(RM) -f $(1)/qtdetail.out + $(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_LICENSE),$(1)) + $(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_TYPE),$(1)) + $(foreach f,$(PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES), + $(call PYTHON_PYQT5_QTDETAIL,$(f),$(1)) \ + ) +endef + +PYTHON_PYQT5_CONF_OPTS = \ + --bindir $(TARGET_DIR)/usr/bin \ + --destdir $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages \ + --qmake $(HOST_DIR)/usr/bin/qmake \ + --sysroot $(STAGING_DIR)/usr \ + -w --confirm-license \ + --no-designer-plugin \ + --no-docstrings \ + --no-sip-files + +define PYTHON_PYQT5_CONFIGURE_CMDS + $(call PYTHON_PYQT5_GENERATE_QTDETAIL,$(@D)) + (cd $(@D); \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + $(HOST_DIR)/usr/bin/python configure.py \ + $(PYTHON_PYQT5_CONF_OPTS) \ + ) +endef + +define PYTHON_PYQT5_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# __init__.py is needed to import PyQt5 +# __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set +define PYTHON_PYQT5_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install + touch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/__init__.py + $(RM) -rf $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/uic/$(PYTHON_PYQT5_RM_PORT_BASE) +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/python-pyroute2/python-pyroute2.hash b/bsp/buildroot/package/python-pyroute2/python-pyroute2.hash index df9ff02c..ff680fc2 100644 --- a/bsp/buildroot/package/python-pyroute2/python-pyroute2.hash +++ b/bsp/buildroot/package/python-pyroute2/python-pyroute2.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=459b4020073b767cc129e360dabbd2d7, sha256 locally computed -md5 459b4020073b767cc129e360dabbd2d7 pyroute2-0.3.20.tar.gz -sha256 ed28856753b941d4277b2f14b89c9edec35be4c97e1831f900fe4ce6fc12161b pyroute2-0.3.20.tar.gz +# md5 from https://pypi.python.org/pypi/pyroute2/json, sha256 locally computed +md5 317303ba8a5e3d55b4f918fd1b7e186d pyroute2-0.4.8.tar.gz +sha256 a59907d2c5756f188b5f8aa48e3060e31c6f40e076f8143b99240fe0108a48d6 pyroute2-0.4.8.tar.gz diff --git a/bsp/buildroot/package/python-pyroute2/python-pyroute2.mk b/bsp/buildroot/package/python-pyroute2/python-pyroute2.mk index 2e9e0ddf..5ea4f545 100644 --- a/bsp/buildroot/package/python-pyroute2/python-pyroute2.mk +++ b/bsp/buildroot/package/python-pyroute2/python-pyroute2.mk @@ -1,12 +1,12 @@ -############################################################# +################################################################################ # # python-pyroute2 # -############################################################# +################################################################################ -PYTHON_PYROUTE2_VERSION = 0.3.20 +PYTHON_PYROUTE2_VERSION = 0.4.8 PYTHON_PYROUTE2_SOURCE = pyroute2-$(PYTHON_PYROUTE2_VERSION).tar.gz -PYTHON_PYROUTE2_SITE = https://pypi.python.org/packages/source/p/pyroute2 +PYTHON_PYROUTE2_SITE = https://pypi.python.org/packages/fb/c1/2cbd9d3f91c663be7168ee2d8d6e919006ffeef57cac76bdd9e6cba7f468 PYTHON_PYROUTE2_LICENSE = Apache-2.0 or GPLv2+ PYTHON_PYROUTE2_LICENSE_FILES = LICENSE.Apache.v2 LICENSE.GPL.v2 README.license.md PYTHON_PYROUTE2_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.hash b/bsp/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.hash index cb57c8d8..2b865cbc 100644 --- a/bsp/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.hash +++ b/bsp/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 e073732ed34777bdeb018dcd8b3fa51bc85956da80b92da401a4436ee72350e0 pysnmp-apps-0.3.3.tar.gz +# md5 from https://pypi.python.org/pypi/pysnmp-apps/json, sha256 locally computed +md5 7fc08e2d81a77d558b38be5e49ff833e pysnmp-apps-0.4.1.tar.gz +sha256 57accb8c2fcb255b4da85af07ef9cd6a266dc5143b2834419ec8a39a879edeb7 pysnmp-apps-0.4.1.tar.gz diff --git a/bsp/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.mk b/bsp/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.mk index d6e9db2d..2c831df1 100644 --- a/bsp/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.mk +++ b/bsp/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.mk @@ -4,12 +4,12 @@ # ################################################################################ -PYTHON_PYSNMP_APPS_VERSION = 0.3.3 +PYTHON_PYSNMP_APPS_VERSION = 0.4.1 PYTHON_PYSNMP_APPS_SOURCE = pysnmp-apps-$(PYTHON_PYSNMP_APPS_VERSION).tar.gz PYTHON_PYSNMP_APPS_SITE = https://pypi.python.org/packages/source/p/pysnmp-apps PYTHON_PYSNMP_APPS_SETUP_TYPE = setuptools PYTHON_PYSNMP_APPS_LICENSE = BSD-3c -PYTHON_PYSNMP_APPS_LICENSE_FILES = LICENSE +PYTHON_PYSNMP_APPS_LICENSE_FILES = LICENSE.txt PYTHON_PYSNMP_APPS_DEPENDENCIES = python-pysnmp diff --git a/bsp/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.hash b/bsp/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.hash index 3253896d..8deb2e53 100644 --- a/bsp/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.hash +++ b/bsp/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 a499ef45d942f42ab9e922c7da93efa084a7ec490ba6cad576b64a7d573ec043 pysnmp-mibs-0.1.4.tar.gz +# md5 from https://pypi.python.org/pypi/pysnmp-mibs/json, sha256 locally computed +md5 01845c4595d87d3c3485c0449616cbda pysnmp-mibs-0.1.6.tar.gz +sha256 00fa321ca598e8a14c0ad98702bf10fb5e9d57b7d06bb99dc818fea07683720c pysnmp-mibs-0.1.6.tar.gz diff --git a/bsp/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.mk b/bsp/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.mk index 21b96737..a0db763c 100644 --- a/bsp/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.mk +++ b/bsp/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.mk @@ -4,12 +4,12 @@ # ################################################################################ -PYTHON_PYSNMP_MIBS_VERSION = 0.1.4 +PYTHON_PYSNMP_MIBS_VERSION = 0.1.6 PYTHON_PYSNMP_MIBS_SOURCE = pysnmp-mibs-$(PYTHON_PYSNMP_MIBS_VERSION).tar.gz -PYTHON_PYSNMP_MIBS_SITE = https://pypi.python.org/packages/source/p/pysnmp-mibs +PYTHON_PYSNMP_MIBS_SITE = https://pypi.python.org/packages/bf/7c/99ab192af934ed5d41ceef92a1b949b41652f29b46241b902ffec55642f4 PYTHON_PYSNMP_MIBS_SETUP_TYPE = setuptools PYTHON_PYSNMP_MIBS_LICENSE = BSD-3c -PYTHON_PYSNMP_MIBS_LICENSE_FILES = LICENSE +PYTHON_PYSNMP_MIBS_LICENSE_FILES = LICENSE.txt PYTHON_PYSNMP_MIBS_DEPENDENCIES = python-pysnmp diff --git a/bsp/buildroot/package/python-pysnmp/python-pysnmp.hash b/bsp/buildroot/package/python-pysnmp/python-pysnmp.hash index c7957a0c..b0f0f496 100644 --- a/bsp/buildroot/package/python-pysnmp/python-pysnmp.hash +++ b/bsp/buildroot/package/python-pysnmp/python-pysnmp.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 c5d78273f14afc6401b7456f086e7b56baaaa51fa0c39830d159bed611c9d89d pysnmp-4.2.4.tar.gz +# md5 from https://pypi.python.org/pypi/pysnmp/json, sha256 locally computed +md5 9a4d23c4c1edea1c77faed72c469d8e8 pysnmp-4.3.2.tar.gz +sha256 7c2bd81df17aa7dca0057a68e7a32284a72231309a0237d66d5b803b5c118977 pysnmp-4.3.2.tar.gz diff --git a/bsp/buildroot/package/python-pysnmp/python-pysnmp.mk b/bsp/buildroot/package/python-pysnmp/python-pysnmp.mk index 3d0f3b52..dff8bdd3 100644 --- a/bsp/buildroot/package/python-pysnmp/python-pysnmp.mk +++ b/bsp/buildroot/package/python-pysnmp/python-pysnmp.mk @@ -4,13 +4,13 @@ # ################################################################################ -PYTHON_PYSNMP_VERSION = 4.2.4 +PYTHON_PYSNMP_VERSION = 4.3.2 PYTHON_PYSNMP_SOURCE = pysnmp-$(PYTHON_PYSNMP_VERSION).tar.gz -PYTHON_PYSNMP_SITE = https://pypi.python.org/packages/source/p/pysnmp +PYTHON_PYSNMP_SITE = https://pypi.python.org/packages/9e/77/795fcc9d9a01adcb6175a3bf6532132addb8904922afd7877a9930d89f2f PYTHON_PYSNMP_SETUP_TYPE = setuptools PYTHON_PYSNMP_LICENSE = BSD-3c -PYTHON_PYSNMP_LICENSE_FILES = LICENSE +PYTHON_PYSNMP_LICENSE_FILES = LICENSE.txt PYTHON_PYSNMP_DEPENDENCIES = python-pyasn python-pycrypto diff --git a/bsp/buildroot/package/python-pytablereader/Config.in b/bsp/buildroot/package/python-pytablereader/Config.in new file mode 100644 index 00000000..050ff65c --- /dev/null +++ b/bsp/buildroot/package/python-pytablereader/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_PYTABLEREADER + bool "python-pytablereader" + select BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4 # runtime + select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime + select BR2_PACKAGE_PYTHON_JSONSCHEMA # runtime + select BR2_PACKAGE_PYTHON_LOGBOOK # runtime + select BR2_PACKAGE_PYTHON_MARKDOWN2 # runtime + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime + select BR2_PACKAGE_PYTHON_PATHPY # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_XLRD # runtime + help + A python library to load structured table data from + files/URL with various data formats: + CSV/Excel/HTML/JSON/LTSV/Markdown/TSV. + + https://github.com/thombashi/pytablereader diff --git a/bsp/buildroot/package/python-pytablereader/python-pytablereader.hash b/bsp/buildroot/package/python-pytablereader/python-pytablereader.hash new file mode 100644 index 00000000..7d1438a1 --- /dev/null +++ b/bsp/buildroot/package/python-pytablereader/python-pytablereader.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pytablereader/json, sha256 locally computed +md5 ae95462a1a982186d1307ee0d6e275e2 pytablereader-0.8.8.tar.gz +sha256 6ba95dc699d2c7ab7bc4b3f0224a17404255d110a3ece8ba12217d650aa7de79 pytablereader-0.8.8.tar.gz diff --git a/bsp/buildroot/package/python-pytablereader/python-pytablereader.mk b/bsp/buildroot/package/python-pytablereader/python-pytablereader.mk new file mode 100644 index 00000000..2b6f2d46 --- /dev/null +++ b/bsp/buildroot/package/python-pytablereader/python-pytablereader.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pytablereader +# +################################################################################ + +PYTHON_PYTABLEREADER_VERSION = 0.8.8 +PYTHON_PYTABLEREADER_SOURCE = pytablereader-$(PYTHON_PYTABLEREADER_VERSION).tar.gz +PYTHON_PYTABLEREADER_SITE = https://pypi.python.org/packages/05/0c/7801617e60ce0d9b4cc57cb542cc431a95b9f43ac1ac14030017163da29d +PYTHON_PYTABLEREADER_SETUP_TYPE = setuptools +PYTHON_PYTABLEREADER_LICENSE = MIT +PYTHON_PYTABLEREADER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-pytablewriter/Config.in b/bsp/buildroot/package/python-pytablewriter/Config.in index 6c197451..f270d0da 100644 --- a/bsp/buildroot/package/python-pytablewriter/Config.in +++ b/bsp/buildroot/package/python-pytablewriter/Config.in @@ -5,6 +5,9 @@ config BR2_PACKAGE_PYTHON_PYTABLEWRITER select BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime select BR2_PACKAGE_PYTHON_SIX # runtime select BR2_PACKAGE_PYTHON_XLSXWRITER # runtime + select BR2_PACKAGE_PYTHON_XLWT # runtime + select BR2_PACKAGE_PYTHON_TOML # runtime + select BR2_PACKAGE_PYTHON_PYTABLEREADER # runtime help pytablewriter is a python library to write a table in various formats: CSV, HTML, JavaScript, JSON, Markdown, Excel, Pandas, diff --git a/bsp/buildroot/package/python-pytablewriter/python-pytablewriter.hash b/bsp/buildroot/package/python-pytablewriter/python-pytablewriter.hash index 9c27aede..3b5bef32 100644 --- a/bsp/buildroot/package/python-pytablewriter/python-pytablewriter.hash +++ b/bsp/buildroot/package/python-pytablewriter/python-pytablewriter.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/pytablewriter/json -md5 7a28e4ddb8b59199e161b7ee9e97e3a3 pytablewriter-0.5.0.tar.gz -# sha256 calculated by scanpypi -sha256 e939adec820e68ed1b7c2eddfba73ce82a88f315aa90c81e04af0229020bfb7c pytablewriter-0.5.0.tar.gz +# md5 from https://pypi.python.org/pypi/pytablewriter/json, sha256 locally computed +md5 7b909647bb8a87373f2553a6fccdf419 pytablewriter-0.17.1.tar.gz +sha256 20c58c41359941262bf288d2fe81ca506e2a38cfdd337d982dbcb2e26ec4a3ed pytablewriter-0.17.1.tar.gz diff --git a/bsp/buildroot/package/python-pytablewriter/python-pytablewriter.mk b/bsp/buildroot/package/python-pytablewriter/python-pytablewriter.mk index 1de7a69b..6d2e5456 100644 --- a/bsp/buildroot/package/python-pytablewriter/python-pytablewriter.mk +++ b/bsp/buildroot/package/python-pytablewriter/python-pytablewriter.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PYTABLEWRITER_VERSION = 0.5.0 +PYTHON_PYTABLEWRITER_VERSION = 0.17.1 PYTHON_PYTABLEWRITER_SOURCE = pytablewriter-$(PYTHON_PYTABLEWRITER_VERSION).tar.gz -PYTHON_PYTABLEWRITER_SITE = https://pypi.python.org/packages/c8/01/e4b7f1d83434d268fe6a0aec2d8ad00515de042285e58533090cfd72904d +PYTHON_PYTABLEWRITER_SITE = https://pypi.python.org/packages/a2/2f/093dded4e265705c1d87d68a9062acb69b39c6ec615f74d71c62f6625afa PYTHON_PYTABLEWRITER_SETUP_TYPE = setuptools PYTHON_PYTABLEWRITER_LICENSE = MIT PYTHON_PYTABLEWRITER_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-pytz/python-pytz.hash b/bsp/buildroot/package/python-pytz/python-pytz.hash index 5047a8c5..fbccc52b 100644 --- a/bsp/buildroot/package/python-pytz/python-pytz.hash +++ b/bsp/buildroot/package/python-pytz/python-pytz.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/pytz/json -md5 e56283d61935963157aebc5135206a47 pytz-2016.4.tar.bz2 -# sha256 calculated by scanpypi -sha256 ee7c751544e35a7b7fb5e3fb25a49dade37d51e70a93e5107f10575d7102c311 pytz-2016.4.tar.bz2 +# md5 from https://pypi.python.org/pypi/pytz/json, sha256 locally computed +md5 88b1d6c50c764579292edce3493c8a3a pytz-2016.10.tar.bz2 +sha256 7016b2c4fa075c564b81c37a252a5fccf60d8964aa31b7f5eae59aeb594ae02b pytz-2016.10.tar.bz2 diff --git a/bsp/buildroot/package/python-pytz/python-pytz.mk b/bsp/buildroot/package/python-pytz/python-pytz.mk index a73c9cfb..9a8bd07e 100644 --- a/bsp/buildroot/package/python-pytz/python-pytz.mk +++ b/bsp/buildroot/package/python-pytz/python-pytz.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PYTZ_VERSION = 2016.4 +PYTHON_PYTZ_VERSION = 2016.10 PYTHON_PYTZ_SOURCE = pytz-$(PYTHON_PYTZ_VERSION).tar.bz2 -PYTHON_PYTZ_SITE = https://pypi.python.org/packages/f4/7d/7c0c85e9c64a75dde11bc9d3e1adc4e09a42ce7cdb873baffa1598118709 +PYTHON_PYTZ_SITE = https://pypi.python.org/packages/d0/e1/aca6ef73a7bd322a7fc73fd99631ee3454d4fc67dc2bee463e2adf6bb3d3 PYTHON_PYTZ_SETUP_TYPE = setuptools PYTHON_PYTZ_LICENSE = MIT PYTHON_PYTZ_LICENSE_FILES = LICENSE.txt diff --git a/bsp/buildroot/package/python-pyusb/Config.in b/bsp/buildroot/package/python-pyusb/Config.in index de5b4870..1f97979c 100644 --- a/bsp/buildroot/package/python-pyusb/Config.in +++ b/bsp/buildroot/package/python-pyusb/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_PYTHON_PYUSB bool "python-pyusb" - depends on BR2_PACKAGE_PYTHON depends on BR2_TOOLCHAIN_HAS_THREADS # libusb select BR2_PACKAGE_LIBUSB help @@ -10,5 +9,4 @@ config BR2_PACKAGE_PYTHON_PYUSB http://sourceforge.net/apps/trac/pyusb/ comment "python-pyusb needs a toolchain w/ threads" - depends on BR2_PACKAGE_PYTHON depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/python-pyusb/python-pyusb.hash b/bsp/buildroot/package/python-pyusb/python-pyusb.hash index 3524ca96..098d08f7 100644 --- a/bsp/buildroot/package/python-pyusb/python-pyusb.hash +++ b/bsp/buildroot/package/python-pyusb/python-pyusb.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 14ec66077bdcd6f1aa9e892a0a35a54bb3c1ec56aa740ead64349c18f0186d19 python-pyusb-1.0.0b2.tar.gz +# md5 from https://pypi.python.org/pypi/pyusb/json, sha256 locally computed +md5 c8a571bfdba778555156af3facaea6fc PyUSB-1.0.0.tar.gz +sha256 5b34ffa74ac34f330bff949c94ee00ec4a9d147234db17ee2eed2a67c0275368 PyUSB-1.0.0.tar.gz diff --git a/bsp/buildroot/package/python-pyusb/python-pyusb.mk b/bsp/buildroot/package/python-pyusb/python-pyusb.mk index ae69026f..cfdef533 100644 --- a/bsp/buildroot/package/python-pyusb/python-pyusb.mk +++ b/bsp/buildroot/package/python-pyusb/python-pyusb.mk @@ -4,8 +4,9 @@ # ################################################################################ -PYTHON_PYUSB_VERSION = 1.0.0b2 -PYTHON_PYUSB_SITE = $(call github,walac,pyusb,$(PYTHON_PYUSB_VERSION)) +PYTHON_PYUSB_VERSION = 1.0.0 +PYTHON_PYUSB_SOURCE = PyUSB-$(PYTHON_PYUSB_VERSION).tar.gz +PYTHON_PYUSB_SITE = https://pypi.python.org/packages/8a/19/66fb48a4905e472f5dfeda3a1bafac369fbf6d6fc5cf55b780864962652d PYTHON_PYUSB_LICENSE = BSD-3c PYTHON_PYUSB_LICENSE_FILES = LICENSE PYTHON_PYUSB_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-pyxb/python-pyxb.hash b/bsp/buildroot/package/python-pyxb/python-pyxb.hash index d8b43f8c..9aa50fc7 100644 --- a/bsp/buildroot/package/python-pyxb/python-pyxb.hash +++ b/bsp/buildroot/package/python-pyxb/python-pyxb.hash @@ -1,2 +1,3 @@ -# Locally computed: -sha256 14ced19ecce51e7cd26434446f9bd6b4e309e91806f1f6fc5e21f4ac736aa0de python-pyxb-1.2.4.tar.gz +# md5 from https://pypi.python.org/pypi/pyxb/json, sha256 locally computed +md5 197c462ab8427ea197313ca3776b252a PyXB-1.2.5.tar.gz +sha256 4e8f62ee2cfffc37e4f40634ab9c79e0311cfaf28cf4ce5e7f4828ec56e4ff67 PyXB-1.2.5.tar.gz diff --git a/bsp/buildroot/package/python-pyxb/python-pyxb.mk b/bsp/buildroot/package/python-pyxb/python-pyxb.mk index eb9ffceb..d0b2da54 100644 --- a/bsp/buildroot/package/python-pyxb/python-pyxb.mk +++ b/bsp/buildroot/package/python-pyxb/python-pyxb.mk @@ -4,8 +4,9 @@ # ################################################################################ -PYTHON_PYXB_VERSION = 1.2.4 -PYTHON_PYXB_SITE = $(call github,pabigot,pyxb,PyXB-$(PYTHON_PYXB_VERSION)) +PYTHON_PYXB_VERSION = 1.2.5 +PYTHON_PYXB_SOURCE = PyXB-$(PYTHON_PYXB_VERSION).tar.gz +PYTHON_PYXB_SITE = https://pypi.python.org/packages/43/7a/9d40392e4380463f37bf5aa2851dfd8ba7c0e4d2a9dc2355177b8b785794 PYTHON_PYXB_LICENSE = Apache-2.0 PYTHON_PYXB_LICENSE_FILES = LICENSE PYTHON_PYXB_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-pyyaml/python-pyyaml.hash b/bsp/buildroot/package/python-pyyaml/python-pyyaml.hash index a6d9a776..209ab27e 100644 --- a/bsp/buildroot/package/python-pyyaml/python-pyyaml.hash +++ b/bsp/buildroot/package/python-pyyaml/python-pyyaml.hash @@ -1,4 +1,3 @@ -# From https://pypi.python.org/pypi?:action=show_md5&digest=f50e08ef0fe55178479d3a618efe21db -md5 f50e08ef0fe55178479d3a618efe21db PyYAML-3.11.tar.gz -# Locally computed -sha256 c36c938a872e5ff494938b33b14aaa156cb439ec67548fcab3535bb78b0846e8 PyYAML-3.11.tar.gz +# md5 from https://pypi.python.org/pypi/pyyaml/json, sha256 locally computed +md5 4c129761b661d181ebf7ff4eb2d79950 PyYAML-3.12.tar.gz +sha256 592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab PyYAML-3.12.tar.gz diff --git a/bsp/buildroot/package/python-pyyaml/python-pyyaml.mk b/bsp/buildroot/package/python-pyyaml/python-pyyaml.mk index f3d72833..0509a7ad 100644 --- a/bsp/buildroot/package/python-pyyaml/python-pyyaml.mk +++ b/bsp/buildroot/package/python-pyyaml/python-pyyaml.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PYYAML_VERSION = 3.11 +PYTHON_PYYAML_VERSION = 3.12 PYTHON_PYYAML_SOURCE = PyYAML-$(PYTHON_PYYAML_VERSION).tar.gz -PYTHON_PYYAML_SITE = https://pypi.python.org/packages/source/P/PyYAML +PYTHON_PYYAML_SITE = https://pypi.python.org/packages/4a/85/db5a2df477072b2902b0eb892feb37d88ac635d36245a72a6a69b23b383a PYTHON_PYYAML_SETUP_TYPE = distutils PYTHON_PYYAML_LICENSE = Python software foundation license v2 PYTHON_PYYAML_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-pyzmq/0001-use-buildroot-zmq-version-instead-of-detect.patch b/bsp/buildroot/package/python-pyzmq/0001-use-buildroot-zmq-version-instead-of-detect.patch index 56060698..cb52eaf6 100644 --- a/bsp/buildroot/package/python-pyzmq/0001-use-buildroot-zmq-version-instead-of-detect.patch +++ b/bsp/buildroot/package/python-pyzmq/0001-use-buildroot-zmq-version-instead-of-detect.patch @@ -5,39 +5,47 @@ retrieve a version string for the installed ZMQ library, but if the cross compiler links it together, the result cannot be run on the host, due to different architectures and libraries. -And if the host compiler would compile/link it, it would not link with the -library version inside buildroot but with the library from the host, possibly returning a wrong version number. +And if the host compiler would compile/link it, it would not link with +the library version inside buildroot but with the library from the +host, possibly returning a wrong version number. Instead of trying to run the compiled test program to get the version dynamically, return the version of the buildroot environment. -Signed-off-by: Michael Rommel +Written by Michael Rommel, modified for version 16.0.2 by Lionel +Flandrin. ---- pyzmq-13.0.2/buildutils/detect.py.orig 2013-08-10 00:49:28.242557978 +0200 -+++ pyzmq-13.0.2/buildutils/detect.py 2013-08-10 00:44:35.197572704 +0200 -@@ -119,15 +119,17 @@ def detect_zmq(basedir, compiler=None, * - - efile = test_compilation(cfile, compiler=compiler, **compiler_attrs) +Signed-off-by: Lionel Flandrin +--- + buildutils/detect.py | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/buildutils/detect.py b/buildutils/detect.py +index 9520da7..823144f 100644 +--- a/buildutils/detect.py ++++ b/buildutils/detect.py +@@ -117,13 +117,15 @@ def detect_zmq(basedir, compiler=None, **compiler_attrs): -- result = Popen(efile, stdout=PIPE, stderr=PIPE) -- so, se = result.communicate() -+ # result = Popen(efile, stdout=PIPE, stderr=PIPE) -+ # so, se = result.communicate() - # for py3k: -- so = so.decode() -- se = se.decode() -- if result.returncode: + cc = get_compiler(compiler=compiler, **compiler_attrs) + efile = test_compilation(cfile, compiler=cc) +- patch_lib_paths(efile, cc.library_dirs) ++ #patch_lib_paths(efile, cc.library_dirs) + +- rc, so, se = get_output_error([efile]) +- if rc: - msg = "Error running version detection script:\n%s\n%s" % (so,se) - logging.error(msg) - raise IOError(msg) -+ #so = so.decode() -+ #se = se.decode() -+ #if result.returncode: -+ # msg = "Error running version detection script:\n%s\n%s" % (so,se) -+ # logging.error(msg) -+ # raise IOError(msg) ++ #rc, so, se = get_output_error([efile]) ++ # if rc: ++ # msg = "Error running version detection script:\n%s\n%s" % (so,se) ++ # logging.error(msg) ++ # raise IOError(msg) + + so = "vers: ##ZEROMQ_VERSION##" handlers = {'vers': lambda val: tuple(int(v) for v in val.split('.'))} +-- +2.11.0 + diff --git a/bsp/buildroot/package/python-pyzmq/0002-replace-compile_and_run-with-compile_and_forget.patch b/bsp/buildroot/package/python-pyzmq/0002-replace-compile_and_run-with-compile_and_forget.patch new file mode 100644 index 00000000..278e939e --- /dev/null +++ b/bsp/buildroot/package/python-pyzmq/0002-replace-compile_and_run-with-compile_and_forget.patch @@ -0,0 +1,76 @@ +detect.py: replace compile_and_run with compile_and_forget + +This function is only used in setup.py to detect the availability of +sys/un.h by compiling and running a small test program. Since we're +cross-compiling we can't run the generated program, however if the +header is missing the test will fail at the compilation step so +running the test in unnecessary. + +Signed-off-by: Lionel Flandrin +--- + buildutils/detect.py | 16 ++++++++-------- + setup.py | 4 ++-- + 2 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/buildutils/detect.py b/buildutils/detect.py +index 7a6c115..9520da7 100644 +--- a/buildutils/detect.py ++++ b/buildutils/detect.py +@@ -58,7 +58,7 @@ def test_compilation(cfile, compiler=None, **compiler_attrs): + cc.link_executable(objs, efile, extra_preargs=lpreargs) + return efile + +-def compile_and_run(basedir, src, compiler=None, **compiler_attrs): ++def compile_and_forget(basedir, src, compiler=None, **compiler_attrs): + if not os.path.exists(basedir): + os.makedirs(basedir) + cfile = pjoin(basedir, os.path.basename(src)) +@@ -66,16 +66,16 @@ def compile_and_run(basedir, src, compiler=None, **compiler_attrs): + try: + cc = get_compiler(compiler, **compiler_attrs) + efile = test_compilation(cfile, compiler=cc) +- patch_lib_paths(efile, cc.library_dirs) +- result = Popen(efile, stdout=PIPE, stderr=PIPE) +- so, se = result.communicate() +- # for py3k: +- so = so.decode() +- se = se.decode() ++ # patch_lib_paths(efile, cc.library_dirs) ++ # result = Popen(efile, stdout=PIPE, stderr=PIPE) ++ # so, se = result.communicate() ++ # # for py3k: ++ # so = so.decode() ++ # se = se.decode() + finally: + shutil.rmtree(basedir) + +- return result.returncode, so, se ++ return None + + + def detect_zmq(basedir, compiler=None, **compiler_attrs): +diff --git a/setup.py b/setup.py +index c3a2879..b8b0aaf 100755 +--- a/setup.py ++++ b/setup.py +@@ -54,7 +54,7 @@ from buildutils import ( + info, warn, fatal, debug, line, copy_and_patch_libzmq, localpath, + fetch_libzmq, stage_platform_hpp, + bundled_version, customize_mingw, +- compile_and_run, ++ compile_and_forget, + patch_lib_paths, + ) + +@@ -327,7 +327,7 @@ class Configure(build_ext): + except Exception: + pass + try: +- compile_and_run(self.tempdir, ++ compile_and_forget(self.tempdir, + pjoin('buildutils', 'check_sys_un.c'), + **minus_zmq + ) +-- +2.11.0 + diff --git a/bsp/buildroot/package/python-pyzmq/Config.in b/bsp/buildroot/package/python-pyzmq/Config.in index af4467fa..8f33a635 100644 --- a/bsp/buildroot/package/python-pyzmq/Config.in +++ b/bsp/buildroot/package/python-pyzmq/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_PYTHON_PYZMQ bool "python-pyzmq" - depends on BR2_USE_WCHAR # zeromq depends on BR2_INSTALL_LIBSTDCPP # zeromq depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq select BR2_PACKAGE_ZEROMQ @@ -9,7 +8,6 @@ config BR2_PACKAGE_PYTHON_PYZMQ http://zeromq.org/bindings:python -comment "python-pyzmq needs a toolchain w/ C++, wchar, threads" +comment "python-pyzmq needs a toolchain w/ C++, threads" depends on BR2_PACKAGE_PYTHON - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && \ - BR2_TOOLCHAIN_HAS_THREADS) + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/bsp/buildroot/package/python-pyzmq/python-pyzmq.hash b/bsp/buildroot/package/python-pyzmq/python-pyzmq.hash index 9871ecd1..6cdd0b9f 100644 --- a/bsp/buildroot/package/python-pyzmq/python-pyzmq.hash +++ b/bsp/buildroot/package/python-pyzmq/python-pyzmq.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 00e263c26a524f81127247e6f37cbf427eddf3a3657d170cf4865bd522df3914 pyzmq-14.3.1.tar.gz +# md5 from https://pypi.python.org/pypi/pyzmq/json, sha256 locally computed +md5 9a8768b00a566a400d70318f8c359cfe pyzmq-16.0.2.tar.gz +sha256 0322543fff5ab6f87d11a8a099c4c07dd8a1719040084b6ce9162bcdf5c45c9d pyzmq-16.0.2.tar.gz diff --git a/bsp/buildroot/package/python-pyzmq/python-pyzmq.mk b/bsp/buildroot/package/python-pyzmq/python-pyzmq.mk index 0e787b1d..ade2d3a2 100644 --- a/bsp/buildroot/package/python-pyzmq/python-pyzmq.mk +++ b/bsp/buildroot/package/python-pyzmq/python-pyzmq.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_PYZMQ_VERSION = 14.3.1 +PYTHON_PYZMQ_VERSION = 16.0.2 PYTHON_PYZMQ_SOURCE = pyzmq-$(PYTHON_PYZMQ_VERSION).tar.gz -PYTHON_PYZMQ_SITE = http://pypi.python.org/packages/source/p/pyzmq +PYTHON_PYZMQ_SITE = https://pypi.python.org/packages/af/37/8e0bf3800823bc247c36715a52e924e8f8fd5d1432f04b44b8cd7a5d7e55 PYTHON_PYZMQ_LICENSE = LGPLv3+, BSD-3c, Apache-2.0 # Apache license only online: http://www.apache.org/licenses/LICENSE-2.0 PYTHON_PYZMQ_LICENSE_FILES = COPYING.LESSER COPYING.BSD diff --git a/bsp/buildroot/package/python-requests-toolbelt/Config.in b/bsp/buildroot/package/python-requests-toolbelt/Config.in new file mode 100644 index 00000000..ba2b9515 --- /dev/null +++ b/bsp/buildroot/package/python-requests-toolbelt/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_REQUESTS_TOOLBELT + bool "python-requests-toolbelt" + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + help + A utility belt for advanced users of python-requests. + + https://toolbelt.readthedocs.org diff --git a/bsp/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.hash b/bsp/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.hash new file mode 100644 index 00000000..89f5ca11 --- /dev/null +++ b/bsp/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/requests-toolbelt/json, sha256 locally computed +md5 bfe2009905f460f4764c32cfbbf4205f requests-toolbelt-0.7.0.tar.gz +sha256 33899d4a559c3f0f5e9fbc115d337c4236febdc083755a160a4132d92fc3c91a requests-toolbelt-0.7.0.tar.gz diff --git a/bsp/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.mk b/bsp/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.mk new file mode 100644 index 00000000..2e944c06 --- /dev/null +++ b/bsp/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-requests-toolbelt +# +################################################################################ + +PYTHON_REQUESTS_TOOLBELT_VERSION = 0.7.0 +PYTHON_REQUESTS_TOOLBELT_SOURCE = requests-toolbelt-$(PYTHON_REQUESTS_TOOLBELT_VERSION).tar.gz +PYTHON_REQUESTS_TOOLBELT_SITE = https://pypi.python.org/packages/59/78/1d391d30ebf74079a8e4de6ab66fdca5362903ef2df64496f4697e9bb626 +PYTHON_REQUESTS_TOOLBELT_SETUP_TYPE = setuptools +PYTHON_REQUESTS_TOOLBELT_LICENSE = Apache-2.0 +PYTHON_REQUESTS_TOOLBELT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-requests/python-requests.hash b/bsp/buildroot/package/python-requests/python-requests.hash index b567fe6a..e441c008 100644 --- a/bsp/buildroot/package/python-requests/python-requests.hash +++ b/bsp/buildroot/package/python-requests/python-requests.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=0b7f480d19012ec52bab78292efd976d, sha256 locally computed -md5 0b7f480d19012ec52bab78292efd976d requests-2.9.1.tar.gz -sha256 c577815dd00f1394203fc44eb979724b098f88264a9ef898ee45b8e5e9cf587f requests-2.9.1.tar.gz +# md5 from https://pypi.python.org/pypi/requests/json, sha256 locally computed +md5 ad5f9c47b5c5dfdb28363ad7546b0763 requests-2.11.1.tar.gz +sha256 5acf980358283faba0b897c73959cecf8b841205bb4b2ad3ef545f46eae1a133 requests-2.11.1.tar.gz diff --git a/bsp/buildroot/package/python-requests/python-requests.mk b/bsp/buildroot/package/python-requests/python-requests.mk index 8cda2c51..49980bf9 100644 --- a/bsp/buildroot/package/python-requests/python-requests.mk +++ b/bsp/buildroot/package/python-requests/python-requests.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_REQUESTS_VERSION = 2.9.1 +PYTHON_REQUESTS_VERSION = 2.11.1 PYTHON_REQUESTS_SOURCE = requests-$(PYTHON_REQUESTS_VERSION).tar.gz -PYTHON_REQUESTS_SITE = http://pypi.python.org/packages/source/r/requests +PYTHON_REQUESTS_SITE = https://pypi.python.org/packages/2e/ad/e627446492cc374c284e82381215dcd9a0a87c4f6e90e9789afefe6da0ad PYTHON_REQUESTS_SETUP_TYPE = setuptools PYTHON_REQUESTS_LICENSE = Apache-2.0 PYTHON_REQUESTS_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.hash b/bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.hash old mode 100755 new mode 100644 index 8b498f1f..a502972c --- a/bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.hash +++ b/bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.hash @@ -1,3 +1,3 @@ -# md5sum from http://sourceforge.net/projects/raspberry-gpio-python/files/, sha256 calculated locally -md5 254d0443a436eb241367c487274e7197 RPi.GPIO-0.6.1.tar.gz -sha256 54e5fb06d9ea1a1389a497fb5a06dfa950c86303b0f4ba89b68c55999d1df064 RPi.GPIO-0.6.1.tar.gz +# md5 from https://pypi.python.org/pypi/rpi-gpio/json, sha256 locally computed +md5 9db86fd5f3bae872de9dbb068ee0b096 RPi.GPIO-0.6.2.tar.gz +sha256 82acff0ef6bbe3cdf6f4dbdd73d96add5294bb94baf7f51c1d901861af3c2392 RPi.GPIO-0.6.2.tar.gz diff --git a/bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.mk b/bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.mk old mode 100755 new mode 100644 index 106b8dd1..8f02d160 --- a/bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.mk +++ b/bsp/buildroot/package/python-rpi-gpio/python-rpi-gpio.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_RPI_GPIO_VERSION = 0.6.1 +PYTHON_RPI_GPIO_VERSION = 0.6.2 PYTHON_RPI_GPIO_SOURCE = RPi.GPIO-$(PYTHON_RPI_GPIO_VERSION).tar.gz -PYTHON_RPI_GPIO_SITE = http://sourceforge.net/projects/raspberry-gpio-python/files +PYTHON_RPI_GPIO_SITE = https://pypi.python.org/packages/c1/a8/de92cf6d04376f541ce250de420f4fe7cbb2b32a7128929a600bc89aede5 PYTHON_RPI_GPIO_LICENSE = MIT PYTHON_RPI_GPIO_LICENSE_FILES = LICENCE.txt PYTHON_RPI_GPIO_SETUP_TYPE = distutils diff --git a/bsp/buildroot/package/python-rtslib-fb/Config.in b/bsp/buildroot/package/python-rtslib-fb/Config.in index 7bae5604..f4083340 100644 --- a/bsp/buildroot/package/python-rtslib-fb/Config.in +++ b/bsp/buildroot/package/python-rtslib-fb/Config.in @@ -6,4 +6,4 @@ config BR2_PACKAGE_PYTHON_RTSLIB_FB the LIO generic SCSI target, present in 3.x Linux kernel versions. - https://github.com/agrover/rtslib-fb + https://github.com/open-iscsi/rtslib-fb diff --git a/bsp/buildroot/package/python-rtslib-fb/python-rtslib-fb.mk b/bsp/buildroot/package/python-rtslib-fb/python-rtslib-fb.mk index 85bee0ba..8236fb8e 100644 --- a/bsp/buildroot/package/python-rtslib-fb/python-rtslib-fb.mk +++ b/bsp/buildroot/package/python-rtslib-fb/python-rtslib-fb.mk @@ -4,8 +4,11 @@ # ################################################################################ +# When upgrading the version, be sure to also upgrade +# python-configshell-fb and targetcli-fb at the same time. PYTHON_RTSLIB_FB_VERSION = v2.1.fb57 -PYTHON_RTSLIB_FB_SITE = $(call github,agrover,rtslib-fb,$(PYTHON_RTSLIB_FB_VERSION)) +# Do not switch site to PyPI: it does not contain the latest version. +PYTHON_RTSLIB_FB_SITE = $(call github,open-iscsi,rtslib-fb,$(PYTHON_RTSLIB_FB_VERSION)) PYTHON_RTSLIB_FB_LICENSE = Apache-2.0 PYTHON_RTSLIB_FB_LICENSE_FILES = COPYING PYTHON_RTSLIB_FB_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-service-identity/python-service-identity.hash b/bsp/buildroot/package/python-service-identity/python-service-identity.hash index caf29dc4..09561d8f 100644 --- a/bsp/buildroot/package/python-service-identity/python-service-identity.hash +++ b/bsp/buildroot/package/python-service-identity/python-service-identity.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=cea0b0156d73b025ecef660fb51f0d9a, sha256 locally computed. -md5 cea0b0156d73b025ecef660fb51f0d9a service_identity-14.0.0.tar.gz -sha256 3105a319a7c558490666694f599be0c377ad54824eefb404cde4ce49e74a4f5a service_identity-14.0.0.tar.gz +# md5 from https://pypi.python.org/pypi/service_identity/json, sha256 locally computed +md5 d52392597b9c44a740abf322bfdb21e6 service_identity-16.0.0.tar.gz +sha256 0630e222f59f91f3db498be46b1d879ff220955d7bbad719a5cb9ad14e3c3036 service_identity-16.0.0.tar.gz diff --git a/bsp/buildroot/package/python-service-identity/python-service-identity.mk b/bsp/buildroot/package/python-service-identity/python-service-identity.mk index 9eca3c1d..88549abf 100644 --- a/bsp/buildroot/package/python-service-identity/python-service-identity.mk +++ b/bsp/buildroot/package/python-service-identity/python-service-identity.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_SERVICE_IDENTITY_VERSION = 14.0.0 +PYTHON_SERVICE_IDENTITY_VERSION = 16.0.0 PYTHON_SERVICE_IDENTITY_SOURCE = service_identity-$(PYTHON_SERVICE_IDENTITY_VERSION).tar.gz -PYTHON_SERVICE_IDENTITY_SITE = http://pypi.python.org/packages/source/s/service_identity +PYTHON_SERVICE_IDENTITY_SITE = https://pypi.python.org/packages/f3/2a/7c04e7ab74f9f2be026745a9ffa81fd9d56139fa6f5f4b4c8a8c07b2bfba PYTHON_SERVICE_IDENTITY_LICENSE = MIT PYTHON_SERVICE_IDENTITY_LICENSE_FILES = LICENSE PYTHON_SERVICE_IDENTITY_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-setuptools-scm/python-setuptools-scm.hash b/bsp/buildroot/package/python-setuptools-scm/python-setuptools-scm.hash new file mode 100644 index 00000000..734fc5a9 --- /dev/null +++ b/bsp/buildroot/package/python-setuptools-scm/python-setuptools-scm.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/setuptools_scm/json, sha256 locally computed +md5 b6916c78ed6253d6602444fad4279c5b setuptools_scm-1.15.0.tar.gz +sha256 daf12d05aa2155a46aa357453757ffdc47d87f839e62114f042bceac6a619e2f setuptools_scm-1.15.0.tar.gz diff --git a/bsp/buildroot/package/python-setuptools-scm/python-setuptools-scm.mk b/bsp/buildroot/package/python-setuptools-scm/python-setuptools-scm.mk new file mode 100644 index 00000000..993fbb97 --- /dev/null +++ b/bsp/buildroot/package/python-setuptools-scm/python-setuptools-scm.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-setuptools-scm +# +################################################################################ + +PYTHON_SETUPTOOLS_SCM_VERSION = 1.15.0 +PYTHON_SETUPTOOLS_SCM_SOURCE = setuptools_scm-$(PYTHON_SETUPTOOLS_SCM_VERSION).tar.gz +PYTHON_SETUPTOOLS_SCM_SITE = https://pypi.python.org/packages/80/b7/31b6ae5fcb188e37f7e31abe75f9be90490a5456a72860fa6e643f8a3cbc +PYTHON_SETUPTOOLS_SCM_LICENSE = MIT +PYTHON_SETUPTOOLS_SCM_LICENSE_FILES = LICENSE +PYTHON_SETUPTOOLS_SCM_SETUP_TYPE = setuptools + +$(eval $(host-python-package)) diff --git a/bsp/buildroot/package/python-sh/Config.in b/bsp/buildroot/package/python-sh/Config.in new file mode 100644 index 00000000..b55ea4a3 --- /dev/null +++ b/bsp/buildroot/package/python-sh/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SH + bool "python-sh" + help + Python subprocess replacement that allows you to call any + program as if it were a function. + + https://github.com/amoffat/sh diff --git a/bsp/buildroot/package/python-sh/python-sh.hash b/bsp/buildroot/package/python-sh/python-sh.hash new file mode 100644 index 00000000..0445fa62 --- /dev/null +++ b/bsp/buildroot/package/python-sh/python-sh.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/sh/json, sha256 locally computed +md5 89d46b1dba32713b7df74b1bc59d74a1 sh-1.12.7.tar.gz +sha256 5a07373657a1a704a34ea1bf73b2e55c42388c5d449634d6d7c96147f5660086 sh-1.12.7.tar.gz diff --git a/bsp/buildroot/package/python-sh/python-sh.mk b/bsp/buildroot/package/python-sh/python-sh.mk new file mode 100644 index 00000000..1aa6bb9b --- /dev/null +++ b/bsp/buildroot/package/python-sh/python-sh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sh +# +################################################################################ + +PYTHON_SH_VERSION = 1.12.7 +PYTHON_SH_SOURCE = sh-$(PYTHON_SH_VERSION).tar.gz +PYTHON_SH_SITE = https://pypi.python.org/packages/c2/98/565d9b566b3153607336ae9e91c1c467896f7f786c2d5d8e50fef7d75b08 +PYTHON_SH_SETUP_TYPE = setuptools +PYTHON_SH_LICENSE = MIT +PYTHON_SH_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-simpleaudio/Config.in b/bsp/buildroot/package/python-simpleaudio/Config.in new file mode 100644 index 00000000..a3e07f9e --- /dev/null +++ b/bsp/buildroot/package/python-simpleaudio/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_SIMPLEAUDIO + bool "python-simpleaudio" + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + help + The simplaudio package provides cross-platform, dependency-free + audio playback capability for Python 3 on OSX, Windows, and Linux. + + https://github.com/hamiltron/py-simple-audio + +comment "python-simpleaudio needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/python-simpleaudio/python-simpleaudio.hash b/bsp/buildroot/package/python-simpleaudio/python-simpleaudio.hash new file mode 100644 index 00000000..7e3a7fb3 --- /dev/null +++ b/bsp/buildroot/package/python-simpleaudio/python-simpleaudio.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/simpleaudio/json, sha256 locally computed +md5 8c1c82fdf7ebba1a79b1243651e451d7 simpleaudio-1.0.1.tar.gz +sha256 6cc84d50d8192c074505c719722138ae6ea987fd8eee7fd930237cb308962604 simpleaudio-1.0.1.tar.gz diff --git a/bsp/buildroot/package/python-simpleaudio/python-simpleaudio.mk b/bsp/buildroot/package/python-simpleaudio/python-simpleaudio.mk new file mode 100644 index 00000000..b9562ee6 --- /dev/null +++ b/bsp/buildroot/package/python-simpleaudio/python-simpleaudio.mk @@ -0,0 +1,15 @@ +############################################################# +# +# python-simpleaudio +# +############################################################# + +PYTHON_SIMPLEAUDIO_VERSION = 1.0.1 +PYTHON_SIMPLEAUDIO_SOURCE = simpleaudio-$(PYTHON_SIMPLEAUDIO_VERSION).tar.gz +PYTHON_SIMPLEAUDIO_SITE = https://pypi.python.org/packages/12/f6/327c1af94062a6a6a5ff06dcf9dc689ed81aa07ae757cca3438c3c9e50fe +PYTHON_SIMPLEAUDIO_LICENSE = MIT +PYTHON_SIMPLEAUDIO_LICENSE_FILES = LICENSE.txt +PYTHON_SIMPLEAUDIO_SETUP_TYPE = setuptools +PYTHON_SIMPLEAUDIO_DEPENDENCIES = alsa-lib + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-simplejson/python-simplejson.hash b/bsp/buildroot/package/python-simplejson/python-simplejson.hash index c0f33b23..19421b86 100644 --- a/bsp/buildroot/package/python-simplejson/python-simplejson.hash +++ b/bsp/buildroot/package/python-simplejson/python-simplejson.hash @@ -1,2 +1,3 @@ -# locally computed -sha256 a80dc90320e1c1b8eaceaaa755ae2aed382d64a59321ae9f6ddbe0321c02878a simplejson-3.5.3.tar.gz +# md5 from https://pypi.python.org/pypi/simplejson/json, sha256 locally computed +md5 53b1371bbf883b129a12d594a97e9a18 simplejson-3.8.2.tar.gz +sha256 d58439c548433adcda98e695be53e526ba940a4b9c44fb9a05d92cd495cdd47f simplejson-3.8.2.tar.gz diff --git a/bsp/buildroot/package/python-simplejson/python-simplejson.mk b/bsp/buildroot/package/python-simplejson/python-simplejson.mk index 61283b71..703bca22 100644 --- a/bsp/buildroot/package/python-simplejson/python-simplejson.mk +++ b/bsp/buildroot/package/python-simplejson/python-simplejson.mk @@ -4,11 +4,11 @@ # ################################################################################ -PYTHON_SIMPLEJSON_VERSION = 3.5.3 +PYTHON_SIMPLEJSON_VERSION = 3.8.2 PYTHON_SIMPLEJSON_SOURCE = simplejson-$(PYTHON_SIMPLEJSON_VERSION).tar.gz -PYTHON_SIMPLEJSON_SITE = http://pypi.python.org/packages/source/s/simplejson -PYTHON_SIMPLEJSON_LICENSE = MIT +PYTHON_SIMPLEJSON_SITE = https://pypi.python.org/packages/f0/07/26b519e6ebb03c2a74989f7571e6ae6b82e9d7d81b8de6fcdbfc643c7b58 +PYTHON_SIMPLEJSON_LICENSE = Academic Free License (AFL), MIT PYTHON_SIMPLEJSON_LICENSE_FILES = LICENSE.txt -PYTHON_SIMPLEJSON_SETUP_TYPE = distutils +PYTHON_SIMPLEJSON_SETUP_TYPE = setuptools $(eval $(python-package)) diff --git a/bsp/buildroot/package/python-sip/Config.in b/bsp/buildroot/package/python-sip/Config.in index 45e48ad0..1f8961d0 100644 --- a/bsp/buildroot/package/python-sip/Config.in +++ b/bsp/buildroot/package/python-sip/Config.in @@ -2,12 +2,17 @@ comment "python-sip needs a toolchain w/ C++, threads" depends on BR2_USE_MMU depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS +comment "python-sip needs qt or qt5" + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5 + config BR2_PACKAGE_PYTHON_SIP bool "python-sip" depends on BR2_INSTALL_LIBSTDCPP # qt depends on BR2_TOOLCHAIN_HAS_THREADS # qt depends on BR2_USE_MMU # qt - select BR2_PACKAGE_QT + depends on BR2_PACKAGE_QT || BR2_PACKAGE_QT5 help SIP is a tool that makes it very easy to create Python bindings for C and C++ libraries. It was originally diff --git a/bsp/buildroot/package/python-sip/python-sip.mk b/bsp/buildroot/package/python-sip/python-sip.mk index d13801fb..0c0a9473 100644 --- a/bsp/buildroot/package/python-sip/python-sip.mk +++ b/bsp/buildroot/package/python-sip/python-sip.mk @@ -10,7 +10,11 @@ PYTHON_SIP_SITE = http://downloads.sourceforge.net/project/pyqt/sip/sip-$(PYTHON PYTHON_SIP_LICENSE = SIP license or GPLv2 or GPLv3 PYTHON_SIP_LICENSE_FILES = LICENSE LICENSE-GPL2 LICENSE-GPL3 +ifeq ($(BR2_PACKAGE_QT5),y) +PYTHON_SIP_DEPENDENCIES = qt5base +else PYTHON_SIP_DEPENDENCIES = qt +endif ifeq ($(BR2_PACKAGE_PYTHON),y) PYTHON_SIP_DEPENDENCIES += python diff --git a/bsp/buildroot/package/python-slob/Config.in b/bsp/buildroot/package/python-slob/Config.in new file mode 100644 index 00000000..2c8ddb08 --- /dev/null +++ b/bsp/buildroot/package/python-slob/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PYTHON_SLOB + bool "python-slob" + depends on !BR2_BINFMT_FLAT # python-pyicu -> icu + depends on BR2_INSTALL_LIBSTDCPP # python-pyicu -> icu + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_PYICU # runtime + # although optional, it is used as default compression + select BR2_PACKAGE_PYTHON3_XZ # runtime + help + slob.py is a reference implementation of slob format reader + and writer. + + https://github.com/itkach/slob + +comment "python-slob needs a toolchain w/ C++" + depends on BR2_PACKAGE_PYTHON3 && !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/bsp/buildroot/package/python-slob/python-slob.hash b/bsp/buildroot/package/python-slob/python-slob.hash new file mode 100644 index 00000000..39d5d81f --- /dev/null +++ b/bsp/buildroot/package/python-slob/python-slob.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 18eb4f45d09d49b1f776cac52ea70ab951566c60cd30bbec39e88f10908fd8ff python-slob-31ad0e769360a5b10a4893f686587bb8e48c3895.tar.gz diff --git a/bsp/buildroot/package/python-slob/python-slob.mk b/bsp/buildroot/package/python-slob/python-slob.mk new file mode 100644 index 00000000..474c0c94 --- /dev/null +++ b/bsp/buildroot/package/python-slob/python-slob.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-slob +# +################################################################################ + +PYTHON_SLOB_VERSION = 31ad0e769360a5b10a4893f686587bb8e48c3895 +PYTHON_SLOB_SITE = $(call github,itkach,slob,$(PYTHON_SLOB_VERSION)) +PYTHON_SLOB_LICENSE = GPLv3 +PYTHON_SLOB_LICENSE_FILES = LICENSE +PYTHON_SLOB_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-socketio/python-socketio.mk b/bsp/buildroot/package/python-socketio/python-socketio.mk index 3bcfed1f..57dc1f8b 100644 --- a/bsp/buildroot/package/python-socketio/python-socketio.mk +++ b/bsp/buildroot/package/python-socketio/python-socketio.mk @@ -5,7 +5,6 @@ ################################################################################ PYTHON_SOCKETIO_VERSION = 1.4.1 -PYTHON_SOCKETIO_SOURCE = python-socketio-$(PYTHON_SOCKETIO_VERSION).tar.gz PYTHON_SOCKETIO_SITE = https://pypi.python.org/packages/da/00/66103df6a116a2ce3ea662a9c8c80f337d43d7f138caf04e9af6dec24ba7 PYTHON_SOCKETIO_SETUP_TYPE = setuptools PYTHON_SOCKETIO_LICENSE = MIT diff --git a/bsp/buildroot/package/python-spidev/0001-Fix-build-with-musl-libc.patch b/bsp/buildroot/package/python-spidev/0001-Fix-build-with-musl-libc.patch deleted file mode 100644 index b22a73aa..00000000 --- a/bsp/buildroot/package/python-spidev/0001-Fix-build-with-musl-libc.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 3d6e59bff088783f249a60a5f1c900c7f99f933b Mon Sep 17 00:00:00 2001 -From: Bernd Kuhls -Date: Sun, 31 Jan 2016 15:03:50 +0100 -Subject: [PATCH 1/1] Fix build with musl libc -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Include missing header to prevent build error: - -spidev_module.c: In function ‘SpiDev_xfer’: -spidev_module.c:330:27: error: ‘_IOC_SIZEBITS’ undeclared (first use in this function) - status = ioctl(self->fd, SPI_IOC_MESSAGE(1), &xfer); - ^ -spidev_module.c:330:27: note: each undeclared identifier is reported only once for each function it appears in -spidev_module.c: In function ‘SpiDev_xfer2’: -spidev_module.c:421:27: error: ‘_IOC_SIZEBITS’ undeclared (first use in this function) - status = ioctl(self->fd, SPI_IOC_MESSAGE(1), &xfer); - ^ - -Signed-off-by: Bernd Kuhls bernd.kuhls@t-online.de -Signed-off-by: Bernd Kuhls ---- -Patch sent upstream: https://github.com/doceme/py-spidev/pull/39 - - spidev_module.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/spidev_module.c b/spidev_module.c -index d58ef07..bccaacf 100644 ---- a/spidev_module.c -+++ b/spidev_module.c -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - - #define SPIDEV_MAXPATH 4096 - --- -2.7.0 - diff --git a/bsp/buildroot/package/python-spidev/python-spidev.hash b/bsp/buildroot/package/python-spidev/python-spidev.hash index 49e8db8a..dc08925d 100644 --- a/bsp/buildroot/package/python-spidev/python-spidev.hash +++ b/bsp/buildroot/package/python-spidev/python-spidev.hash @@ -1,2 +1,3 @@ -# Locally calculated -sha256 355391e9ad3024950590626b080324394c12e75bb21923dbd56a978a1eac6ac7 spidev-3.1.tar.gz +# md5 from https://pypi.python.org/pypi/spidev/json, sha256 locally computed +md5 f601676f1bb48b9aa3b3897f95216365 spidev-3.2.tar.gz +sha256 09d2b5122f0dd79910713a11f9a0020f71537224bf829916def4fffc0ea59456 spidev-3.2.tar.gz diff --git a/bsp/buildroot/package/python-spidev/python-spidev.mk b/bsp/buildroot/package/python-spidev/python-spidev.mk index 0a8dd156..d839bb3f 100644 --- a/bsp/buildroot/package/python-spidev/python-spidev.mk +++ b/bsp/buildroot/package/python-spidev/python-spidev.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_SPIDEV_VERSION = 3.1 +PYTHON_SPIDEV_VERSION = 3.2 PYTHON_SPIDEV_SOURCE = spidev-$(PYTHON_SPIDEV_VERSION).tar.gz -PYTHON_SPIDEV_SITE = https://pypi.python.org/packages/source/s/spidev +PYTHON_SPIDEV_SITE = https://pypi.python.org/packages/36/83/73748b6e1819b57d8e1df8090200195cdae33aaa22a49a91ded16785eedd PYTHON_SPIDEV_SETUP_TYPE = distutils PYTHON_SPIDEV_LICENSE = GPLv2 PYTHON_SPIDEV_LICENSE_FILES = LICENSE.md diff --git a/bsp/buildroot/package/python-thrift/python-thrift.hash b/bsp/buildroot/package/python-thrift/python-thrift.hash index 811aa988..72269eb8 100644 --- a/bsp/buildroot/package/python-thrift/python-thrift.hash +++ b/bsp/buildroot/package/python-thrift/python-thrift.hash @@ -1,2 +1,3 @@ -# From https://www.apache.org/dist/thrift/0.9.2/thrift-0.9.2.tar.gz.md5 -md5 89f63cc4d0100912f4a1f8a9dee63678 thrift-0.9.2.tar.gz +# md5 from https://pypi.python.org/pypi/thrift/json, sha256 locally computed +md5 b519551d7a086bb0b4f222a8f566b7e8 thrift-0.9.3.tar.gz +sha256 dfbc3d3bd19d396718dab05abaf46d93ae8005e2df798ef02e32793cd963877e thrift-0.9.3.tar.gz diff --git a/bsp/buildroot/package/python-thrift/python-thrift.mk b/bsp/buildroot/package/python-thrift/python-thrift.mk index 99641b8b..d0e3a146 100644 --- a/bsp/buildroot/package/python-thrift/python-thrift.mk +++ b/bsp/buildroot/package/python-thrift/python-thrift.mk @@ -4,12 +4,11 @@ # ################################################################################ -PYTHON_THRIFT_VERSION = 0.9.2 +PYTHON_THRIFT_VERSION = 0.9.3 PYTHON_THRIFT_SOURCE = thrift-$(PYTHON_THRIFT_VERSION).tar.gz -PYTHON_THRIFT_SITE = http://www.us.apache.org/dist/thrift/$(PYTHON_THRIFT_VERSION) +PYTHON_THRIFT_SITE = https://pypi.python.org/packages/ae/58/35e3f0cd290039ff862c2c9d8ae8a76896665d70343d833bdc2f748b8e55 PYTHON_THRIFT_LICENSE = Apache-2.0 -PYTHON_THRIFT_LICENSE_FILES = LICENSE +PYTHON_THRIFT_LICENSE_FILES = setup.py PYTHON_THRIFT_SETUP_TYPE = setuptools -PYTHON_THRIFT_SUBDIR = lib/py $(eval $(python-package)) diff --git a/bsp/buildroot/package/python-toml/Config.in b/bsp/buildroot/package/python-toml/Config.in new file mode 100644 index 00000000..a41622fc --- /dev/null +++ b/bsp/buildroot/package/python-toml/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TOML + bool "python-toml" + help + Python Library for Tom's Obvious, Minimal Language. + + https://github.com/uiri/toml diff --git a/bsp/buildroot/package/python-toml/python-toml.hash b/bsp/buildroot/package/python-toml/python-toml.hash new file mode 100644 index 00000000..cbc71a96 --- /dev/null +++ b/bsp/buildroot/package/python-toml/python-toml.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 aee9679726f42fb09f48b9701a321571e0b6a51305c3e0f3913b3057d8bf7083 python-toml-0.9.2.tar.gz diff --git a/bsp/buildroot/package/python-toml/python-toml.mk b/bsp/buildroot/package/python-toml/python-toml.mk new file mode 100644 index 00000000..fec113e1 --- /dev/null +++ b/bsp/buildroot/package/python-toml/python-toml.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-toml +# +################################################################################ + +PYTHON_TOML_VERSION = 0.9.2 +PYTHON_TOML_SITE = $(call github,uiri,toml,$(PYTHON_TOML_VERSION)) +PYTHON_TOML_SETUP_TYPE = distutils +PYTHON_TOML_LICENSE = MIT +PYTHON_TOML_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-tornado/0001-Don-t-require-backports.ssl_match_hostname-on-Python.patch b/bsp/buildroot/package/python-tornado/0001-Don-t-require-backports.ssl_match_hostname-on-Python.patch deleted file mode 100644 index d5702e8d..00000000 --- a/bsp/buildroot/package/python-tornado/0001-Don-t-require-backports.ssl_match_hostname-on-Python.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 785fe675d5602e51a559b06861d543c7d37a380c Mon Sep 17 00:00:00 2001 -From: Yegor Yefremov -Date: Wed, 4 May 2016 09:26:22 +0200 -Subject: [PATCH] Don't require backports.ssl_match_hostname on Python 2.7.9 - and newer - -As Python 3.2 support was dropped one can check 2.7.x dependency only. - -Tornado running on Python 2.7.9+ doesn't need this backported package, -but some Python packages like circus check package dependencies at -runtime and insist on having backports.ssl_match_hostname installed, -though they don't even use this particular feature. - -So checking for exact version makes life of package maintainer easier -especially on embedded Linux distributions like Buildroot. - -Signed-off-by: Yegor Yefremov ---- - setup.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/setup.py b/setup.py -index c13eeed..0c24e70 100644 ---- a/setup.py -+++ b/setup.py -@@ -129,7 +129,7 @@ if setuptools is not None: - if sys.version_info < (2, 7): - # Only needed indirectly, for singledispatch. - install_requires.append('ordereddict') -- if sys.version_info < (3, 2): -+ if sys.version_info < (2, 7, 9): - install_requires.append('backports.ssl_match_hostname') - if sys.version_info < (3, 4): - install_requires.append('singledispatch') --- -2.8.1 - diff --git a/bsp/buildroot/package/python-tornado/python-tornado.hash b/bsp/buildroot/package/python-tornado/python-tornado.hash index e0f3c39a..ee4080fe 100644 --- a/bsp/buildroot/package/python-tornado/python-tornado.hash +++ b/bsp/buildroot/package/python-tornado/python-tornado.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=c548d7b77a11d523c3d7255bd7fd6df8, sha256 locally computed -md5 d13a99dc0b60ba69f5f8ec1235e5b232 tornado-4.3.tar.gz -sha256 c9c2d32593d16eedf2cec1b6a41893626a2649b40b21ca9c4cac4243bde2efbf tornado-4.3.tar.gz +# md5 from https://pypi.python.org/pypi/tornado/json, sha256 locally computed +md5 b4816ea209118667ffc52ce9ff06ac85 tornado-4.4.2.tar.gz +sha256 2898f992f898cd41eeb8d53b6df75495f2f423b6672890aadaf196ea1448edcc tornado-4.4.2.tar.gz diff --git a/bsp/buildroot/package/python-tornado/python-tornado.mk b/bsp/buildroot/package/python-tornado/python-tornado.mk index 64809b79..e512e60f 100644 --- a/bsp/buildroot/package/python-tornado/python-tornado.mk +++ b/bsp/buildroot/package/python-tornado/python-tornado.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_TORNADO_VERSION = 4.3 +PYTHON_TORNADO_VERSION = 4.4.2 PYTHON_TORNADO_SOURCE = tornado-$(PYTHON_TORNADO_VERSION).tar.gz -PYTHON_TORNADO_SITE = https://pypi.python.org/packages/source/t/tornado +PYTHON_TORNADO_SITE = https://pypi.python.org/packages/1e/7c/ea047f7bbd1ff22a7f69fe55e7561040e3e54d6f31da6267ef9748321f98 PYTHON_TORNADO_LICENSE = Apache-2.0 PYTHON_TORNADO_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-twisted/Config.in b/bsp/buildroot/package/python-twisted/Config.in index 1221fc25..7fe4289d 100644 --- a/bsp/buildroot/package/python-twisted/Config.in +++ b/bsp/buildroot/package/python-twisted/Config.in @@ -1,5 +1,7 @@ config BR2_PACKAGE_PYTHON_TWISTED bool "python-twisted" + select BR2_PACKAGE_PYTHON_INCREMENTAL + select BR2_PACKAGE_PYTHON_CONSTANTLY # runtime select BR2_PACKAGE_PYTHON_ZOPE_INTERFACE # runtime help Twisted is an event-driven networking engine written in Python. diff --git a/bsp/buildroot/package/python-twisted/python-twisted.hash b/bsp/buildroot/package/python-twisted/python-twisted.hash index 8836a10c..cc78a4cb 100644 --- a/bsp/buildroot/package/python-twisted/python-twisted.hash +++ b/bsp/buildroot/package/python-twisted/python-twisted.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi/Twisted/json, sha256 locally computed. -md5 8b35a88d5f1a4bfd762a008968fddabf Twisted-16.2.0.tar.bz2 -sha256 a090e8dc675e97fb20c3bb5f8114ae94169f4e29fd3b3cbede35705fd3cdbd79 Twisted-16.2.0.tar.bz2 +# md5 from https://pypi.python.org/pypi/twisted/json, sha256 locally computed +md5 54a88ffe773d5a83c91fcfe86044b094 Twisted-16.6.0.tar.bz2 +sha256 d0fe115ea7ef8cf632d05103de60356c6e992b2153d6830bdc4476f8accb1fca Twisted-16.6.0.tar.bz2 diff --git a/bsp/buildroot/package/python-twisted/python-twisted.mk b/bsp/buildroot/package/python-twisted/python-twisted.mk index 3c45d01c..29fe7358 100644 --- a/bsp/buildroot/package/python-twisted/python-twisted.mk +++ b/bsp/buildroot/package/python-twisted/python-twisted.mk @@ -4,11 +4,12 @@ # ################################################################################ -PYTHON_TWISTED_VERSION = 16.2.0 +PYTHON_TWISTED_VERSION = 16.6.0 PYTHON_TWISTED_SOURCE = Twisted-$(PYTHON_TWISTED_VERSION).tar.bz2 -PYTHON_TWISTED_SITE = https://pypi.python.org/packages/18/85/eb7af503356e933061bf1220033c3a85bad0dbc5035dfd9a97f1e900dfcb +PYTHON_TWISTED_SITE = https://pypi.python.org/packages/dc/c0/a0114a6d7fa211c0904b0de931e8cafb5210ad824996cc6a9d67f3bae22c PYTHON_TWISTED_SETUP_TYPE = setuptools PYTHON_TWISTED_LICENSE = MIT PYTHON_TWISTED_LICENSE_FILES = LICENSE +PYTHON_TWISTED_DEPENDENCIES = python-incremental $(eval $(python-package)) diff --git a/bsp/buildroot/package/python-u-msgpack/python-u-msgpack.hash b/bsp/buildroot/package/python-u-msgpack/python-u-msgpack.hash index 16f50408..12f2be37 100644 --- a/bsp/buildroot/package/python-u-msgpack/python-u-msgpack.hash +++ b/bsp/buildroot/package/python-u-msgpack/python-u-msgpack.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/u-msgpack-python/json -md5 2ccadbf06c7e70bbdb58e920d045d50c u-msgpack-python-2.1.tar.gz -# sha256 calculated by scanpypi -sha256 66a39ddc6830be29b6d304dee9d4ab37104550ac4565eab1aa4c2bd3d34d759f u-msgpack-python-2.1.tar.gz +# md5 from https://pypi.python.org/pypi/u-msgpack-python/json, sha256 locally computed +md5 f5adfb3e19910d8a41e331d3b03aa7c6 u-msgpack-python-2.2.tar.gz +sha256 cdd5a88f2313856a6a9f481f652dab9edd5731059badbb0111280f27249930d7 u-msgpack-python-2.2.tar.gz diff --git a/bsp/buildroot/package/python-u-msgpack/python-u-msgpack.mk b/bsp/buildroot/package/python-u-msgpack/python-u-msgpack.mk index e3897165..a88beeb1 100644 --- a/bsp/buildroot/package/python-u-msgpack/python-u-msgpack.mk +++ b/bsp/buildroot/package/python-u-msgpack/python-u-msgpack.mk @@ -4,11 +4,11 @@ # ################################################################################ -PYTHON_U_MSGPACK_VERSION = 2.1 +PYTHON_U_MSGPACK_VERSION = 2.2 PYTHON_U_MSGPACK_SOURCE = u-msgpack-python-$(PYTHON_U_MSGPACK_VERSION).tar.gz -PYTHON_U_MSGPACK_SITE = https://pypi.python.org/packages/b7/8d/791f037a0954f98a8eceb09c7c14babb97db0a81c985108bb21939b801eb +PYTHON_U_MSGPACK_SITE = https://pypi.python.org/packages/66/5b/36fe0fcf290bd39f6ef6c1f5924cf0a9a76b0dc94575975ad7d318619cf9 PYTHON_U_MSGPACK_SETUP_TYPE = distutils PYTHON_U_MSGPACK_LICENSE = MIT -PYTHON_U_MSGPACK_LICENSE_FILES = umsgpack.py +PYTHON_U_MSGPACK_LICENSE_FILES = LICENSE $(eval $(python-package)) diff --git a/bsp/buildroot/package/python-ubjson/python-ubjson.hash b/bsp/buildroot/package/python-ubjson/python-ubjson.hash index 1995da63..88c8c62b 100644 --- a/bsp/buildroot/package/python-ubjson/python-ubjson.hash +++ b/bsp/buildroot/package/python-ubjson/python-ubjson.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=7d7e7b9b67acfb8c6b417dab78ac4639,sha256 locally computed. -md5 7d7e7b9b67acfb8c6b417dab78ac4639 py-ubjson-0.8.4.tar.gz -sha256 395c0cbbb097d88bb0db92fe1ac82d31b56f3be396946fe02d38f08e86a8efe9 py-ubjson-0.8.4.tar.gz +# md5 from https://pypi.python.org/pypi/py-ubjson/json, sha256 locally computed +md5 09584b02508451a8133095c3b5f2bf41 py-ubjson-0.8.5.tar.gz +sha256 e58e99753aaff3ed5d884989a6236bd98a4b0dfdb0e62f9753c20f485691fa9e py-ubjson-0.8.5.tar.gz diff --git a/bsp/buildroot/package/python-ubjson/python-ubjson.mk b/bsp/buildroot/package/python-ubjson/python-ubjson.mk index a69efab6..e42b2dc5 100644 --- a/bsp/buildroot/package/python-ubjson/python-ubjson.mk +++ b/bsp/buildroot/package/python-ubjson/python-ubjson.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_UBJSON_VERSION = 0.8.4 +PYTHON_UBJSON_VERSION = 0.8.5 PYTHON_UBJSON_SOURCE = py-ubjson-$(PYTHON_UBJSON_VERSION).tar.gz -PYTHON_UBJSON_SITE = https://pypi.python.org/packages/bf/a3/990c47fa0d2d244a3d493ae917d5cbf2a0632c1ac6aa53445f4e53ce3675 +PYTHON_UBJSON_SITE = https://pypi.python.org/packages/99/12/173cd417cacdacd158f947365bb17952a93b4e9d08f8a2f4b77d6c17cb4e PYTHON_UBJSON_LICENSE = Apache-2.0 PYTHON_UBJSON_LICENSE_FILES = LICENSE PYTHON_UBJSON_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-urllib3/python-urllib3.hash b/bsp/buildroot/package/python-urllib3/python-urllib3.hash index 266b8e90..fb5fd9dd 100644 --- a/bsp/buildroot/package/python-urllib3/python-urllib3.hash +++ b/bsp/buildroot/package/python-urllib3/python-urllib3.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=5e1407428ac33b521c71a7ac273b3847, sha256 locally computed -md5 5e1407428ac33b521c71a7ac273b3847 urllib3-1.14.tar.gz -sha256 dd4fb13a4ce50b18338c7e4d665b21fd38632c5d4b1d9f1a1379276bd3c08d37 urllib3-1.14.tar.gz +# md5 from https://pypi.python.org/pypi/urllib3/json, sha256 locally computed +md5 1eadd93bd5e58d3528d977111f2997ea urllib3-1.18.tar.gz +sha256 d30dd4d1cbbc36ebab6e4a2076820cfe0c60f10adf087fecbc5a3edae79fdc81 urllib3-1.18.tar.gz diff --git a/bsp/buildroot/package/python-urllib3/python-urllib3.mk b/bsp/buildroot/package/python-urllib3/python-urllib3.mk index 0101053e..9043aa35 100644 --- a/bsp/buildroot/package/python-urllib3/python-urllib3.mk +++ b/bsp/buildroot/package/python-urllib3/python-urllib3.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_URLLIB3_VERSION = 1.14 +PYTHON_URLLIB3_VERSION = 1.18 PYTHON_URLLIB3_SOURCE = urllib3-$(PYTHON_URLLIB3_VERSION).tar.gz -PYTHON_URLLIB3_SITE = https://pypi.python.org/packages/source/u/urllib3 +PYTHON_URLLIB3_SITE = https://pypi.python.org/packages/8f/45/7434a6a44d42744b74fb969a39720f0c3d4f31f921737e51a69d8b15c859 PYTHON_URLLIB3_LICENSE = MIT PYTHON_URLLIB3_LICENSE_FILES = LICENSE.txt PYTHON_URLLIB3_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/python-urwid/python-urwid.hash b/bsp/buildroot/package/python-urwid/python-urwid.hash index eceed9d5..c6008516 100644 --- a/bsp/buildroot/package/python-urwid/python-urwid.hash +++ b/bsp/buildroot/package/python-urwid/python-urwid.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi/urwid/1.3.0, sha256 locally computed -md5 a989acd54f4ff1a554add464803a9175 urwid-1.3.0.tar.gz -sha256 29f04fad3bf0a79c5491f7ebec2d50fa086e9d16359896c9204c6a92bc07aba2 urwid-1.3.0.tar.gz +# md5 from https://pypi.python.org/pypi/urwid/json, sha256 locally computed +md5 2e1a005cb31368fe21bfeba2d6ad5a5c urwid-1.3.1.tar.gz +sha256 cfcec03e36de25a1073e2e35c2c7b0cc6969b85745715c3a025a31d9786896a1 urwid-1.3.1.tar.gz diff --git a/bsp/buildroot/package/python-urwid/python-urwid.mk b/bsp/buildroot/package/python-urwid/python-urwid.mk index 1cd30220..e52a155e 100644 --- a/bsp/buildroot/package/python-urwid/python-urwid.mk +++ b/bsp/buildroot/package/python-urwid/python-urwid.mk @@ -4,7 +4,7 @@ # ################################################################################ -PYTHON_URWID_VERSION = 1.3.0 +PYTHON_URWID_VERSION = 1.3.1 PYTHON_URWID_SOURCE = urwid-$(PYTHON_URWID_VERSION).tar.gz PYTHON_URWID_SITE = https://pypi.python.org/packages/source/u/urwid PYTHON_URWID_LICENSE = LGPLv2.1+ diff --git a/bsp/buildroot/package/python-vcversioner/python-vcversioner.hash b/bsp/buildroot/package/python-vcversioner/python-vcversioner.hash new file mode 100644 index 00000000..58573a18 --- /dev/null +++ b/bsp/buildroot/package/python-vcversioner/python-vcversioner.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/vcversioner/json, sha256 locally computed +md5 aab6ef5e0cf8614a1b1140ed5b7f107d vcversioner-2.16.0.0.tar.gz +sha256 dae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b vcversioner-2.16.0.0.tar.gz diff --git a/bsp/buildroot/package/python-vcversioner/python-vcversioner.mk b/bsp/buildroot/package/python-vcversioner/python-vcversioner.mk new file mode 100644 index 00000000..e7a62f86 --- /dev/null +++ b/bsp/buildroot/package/python-vcversioner/python-vcversioner.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-vcversioner +# +################################################################################ + +PYTHON_VCVERSIONER_VERSION = 2.16.0.0 +PYTHON_VCVERSIONER_SOURCE = vcversioner-$(PYTHON_VCVERSIONER_VERSION).tar.gz +PYTHON_VCVERSIONER_SITE = https://pypi.python.org/packages/c5/cc/33162c0a7b28a4d8c83da07bc2b12cee58c120b4a9e8bba31c41c8d35a16 +PYTHON_VCVERSIONER_SETUP_TYPE = setuptools +PYTHON_VCVERSIONER_LICENSE = ISC + +$(eval $(host-python-package)) diff --git a/bsp/buildroot/package/python-werkzeug/python-werkzeug.hash b/bsp/buildroot/package/python-werkzeug/python-werkzeug.hash index e2afd14c..3f233524 100644 --- a/bsp/buildroot/package/python-werkzeug/python-werkzeug.hash +++ b/bsp/buildroot/package/python-werkzeug/python-werkzeug.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=780967186f9157e88f2bfbfa6f07a893, sha256 locally computed -md5 780967186f9157e88f2bfbfa6f07a893 Werkzeug-0.11.10.tar.gz -sha256 cc64dafbacc716cdd42503cf6c44cb5a35576443d82f29f6829e5c49264aeeee Werkzeug-0.11.10.tar.gz +# md5 from https://pypi.python.org/pypi/werkzeug/json, sha256 locally computed +md5 1d34afa1f19abcef4c0da51ebc2c4ea7 Werkzeug-0.11.11.tar.gz +sha256 e72c46bc14405cba7a26bd2ce28df734471bc9016bc8b4cb69466c2c14c2f7e5 Werkzeug-0.11.11.tar.gz diff --git a/bsp/buildroot/package/python-werkzeug/python-werkzeug.mk b/bsp/buildroot/package/python-werkzeug/python-werkzeug.mk index c0af65c6..072937fc 100644 --- a/bsp/buildroot/package/python-werkzeug/python-werkzeug.mk +++ b/bsp/buildroot/package/python-werkzeug/python-werkzeug.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_WERKZEUG_VERSION = 0.11.10 +PYTHON_WERKZEUG_VERSION = 0.11.11 PYTHON_WERKZEUG_SOURCE = Werkzeug-$(PYTHON_WERKZEUG_VERSION).tar.gz -PYTHON_WERKZEUG_SITE = https://pypi.python.org/packages/b7/7f/44d3cfe5a12ba002b253f6985a4477edfa66da53787a2a838a40f6415263 +PYTHON_WERKZEUG_SITE = https://pypi.python.org/packages/43/2e/d822b4a4216804519ace92e0368dcfc4b0b2887462d852fdd476b253ecc9 PYTHON_WERKZEUG_SETUP_TYPE = setuptools PYTHON_WERKZEUG_LICENSE = BSD-3c PYTHON_WERKZEUG_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/python-whoosh/Config.in b/bsp/buildroot/package/python-whoosh/Config.in new file mode 100644 index 00000000..1128ce64 --- /dev/null +++ b/bsp/buildroot/package/python-whoosh/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_WHOOSH + bool "python-whoosh" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + Whoosh is a fast, pure-Python full text indexing, search and + spell checking library. + + https://pypi.python.org/pypi/Whoosh/ diff --git a/bsp/buildroot/package/python-whoosh/python-whoosh.hash b/bsp/buildroot/package/python-whoosh/python-whoosh.hash new file mode 100644 index 00000000..b14dd0f8 --- /dev/null +++ b/bsp/buildroot/package/python-whoosh/python-whoosh.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/Whoosh/json, sha256 locally computed +md5 9a0fc2df9335e1d2e81dd84a2c4c416f Whoosh-2.7.0.tar.gz +sha256 cdfc0e1c5173207ac7b312afe78d83fb552cfed30427bf7b3dba8b1d26cea8f7 Whoosh-2.7.0.tar.gz diff --git a/bsp/buildroot/package/python-whoosh/python-whoosh.mk b/bsp/buildroot/package/python-whoosh/python-whoosh.mk new file mode 100644 index 00000000..64f3820c --- /dev/null +++ b/bsp/buildroot/package/python-whoosh/python-whoosh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-whoosh +# +################################################################################ + +PYTHON_WHOOSH_VERSION = 2.7.0 +PYTHON_WHOOSH_SOURCE = Whoosh-$(PYTHON_WHOOSH_VERSION).tar.gz +PYTHON_WHOOSH_SITE = http://pypi.python.org/packages/source/W/Whoosh +PYTHON_WHOOSH_SETUP_TYPE = setuptools +PYTHON_WHOOSH_LICENSE = BSD-3c +PYTHON_WHOOSH_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/bsp/buildroot/package/python-ws4py/python-ws4py.hash b/bsp/buildroot/package/python-ws4py/python-ws4py.hash index e58e14aa..4d5904ee 100644 --- a/bsp/buildroot/package/python-ws4py/python-ws4py.hash +++ b/bsp/buildroot/package/python-ws4py/python-ws4py.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=6b47e33cbd13f5c134b04f2a44a480ad, sha256 locally computed -md5 6b47e33cbd13f5c134b04f2a44a480ad ws4py-0.3.4.tar.gz -sha256 85d5c01bb0d031e151a32fad56094caf54e20c2ddb51cf25b5709421ff92d007 ws4py-0.3.4.tar.gz +# md5 from https://pypi.python.org/pypi/ws4py/json, sha256 locally computed +md5 b0cbe30433350ef5ec98e8cbb3c3b39c ws4py-0.3.5.tar.gz +sha256 c4cc4a872027f6a6006a6142a38eb6d65c2ece29a4cefac98dd20a48c34ec7a9 ws4py-0.3.5.tar.gz diff --git a/bsp/buildroot/package/python-ws4py/python-ws4py.mk b/bsp/buildroot/package/python-ws4py/python-ws4py.mk index f332d150..fac99f32 100644 --- a/bsp/buildroot/package/python-ws4py/python-ws4py.mk +++ b/bsp/buildroot/package/python-ws4py/python-ws4py.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_WS4PY_VERSION = 0.3.4 +PYTHON_WS4PY_VERSION = 0.3.5 PYTHON_WS4PY_SOURCE = ws4py-$(PYTHON_WS4PY_VERSION).tar.gz -PYTHON_WS4PY_SITE = https://pypi.python.org/packages/source/w/ws4py +PYTHON_WS4PY_SITE = https://pypi.python.org/packages/c8/b4/1784512791fbd196a48f282ca6c79398cace9541a9c151d89c30b6add6e1 PYTHON_WS4PY_SETUP_TYPE = setuptools PYTHON_WS4PY_LICENSE = BSD-3c PYTHON_WS4PY_LICENSE_FILES = ws4py/__init__.py diff --git a/bsp/buildroot/package/python-xlsxwriter/python-xlsxwriter.hash b/bsp/buildroot/package/python-xlsxwriter/python-xlsxwriter.hash index 69bfc6f7..5d9a5ac2 100644 --- a/bsp/buildroot/package/python-xlsxwriter/python-xlsxwriter.hash +++ b/bsp/buildroot/package/python-xlsxwriter/python-xlsxwriter.hash @@ -1,4 +1,3 @@ -# md5 from https://pypi.python.org/pypi/XlsxWriter/json -md5 545c938f279abcfd7f11e705012302fe XlsxWriter-0.8.9.tar.gz -# sha256 locally computed -sha256 cb90c5283b88af72549adf82f203d15623a0f4faeae29b6a20733e187dfde882 XlsxWriter-0.8.9.tar.gz +# md5 from https://pypi.python.org/pypi/xlsxwriter/json, sha256 locally computed +md5 17f48e222aa091b053fa2a14986b21c5 XlsxWriter-0.9.4.tar.gz +sha256 1642cf0adc6486dd3b17db9aba72a47fd41b947da6081e97acd6ab9872a22386 XlsxWriter-0.9.4.tar.gz diff --git a/bsp/buildroot/package/python-xlsxwriter/python-xlsxwriter.mk b/bsp/buildroot/package/python-xlsxwriter/python-xlsxwriter.mk index af911cc0..bd2ca086 100644 --- a/bsp/buildroot/package/python-xlsxwriter/python-xlsxwriter.mk +++ b/bsp/buildroot/package/python-xlsxwriter/python-xlsxwriter.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_XLSXWRITER_VERSION = 0.8.9 +PYTHON_XLSXWRITER_VERSION = 0.9.4 PYTHON_XLSXWRITER_SOURCE = XlsxWriter-$(PYTHON_XLSXWRITER_VERSION).tar.gz -PYTHON_XLSXWRITER_SITE = https://pypi.python.org/packages/2a/de/4ee20ac103417662865e0e3acde859b002c13f52af0d50a2664d3eca5897 +PYTHON_XLSXWRITER_SITE = https://pypi.python.org/packages/52/66/670322b9999b8e47659c8b172a11aa3c0e629a5fc86b5a8fd497b85941c0 PYTHON_XLSXWRITER_SETUP_TYPE = setuptools PYTHON_XLSXWRITER_LICENSE = BSD-2c PYTHON_XLSXWRITER_LICENSE_FILES = LICENSE.txt diff --git a/bsp/buildroot/package/python-zope-interface/python-zope-interface.hash b/bsp/buildroot/package/python-zope-interface/python-zope-interface.hash index 2c161f37..7a46cd34 100644 --- a/bsp/buildroot/package/python-zope-interface/python-zope-interface.hash +++ b/bsp/buildroot/package/python-zope-interface/python-zope-interface.hash @@ -1,3 +1,3 @@ -# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=9ae3d24c0c7415deb249dd1a132f0f79, sha256 locally computed -md5 9ae3d24c0c7415deb249dd1a132f0f79 zope.interface-4.1.3.tar.gz -sha256 2e221a9eec7ccc58889a278ea13dcfed5ef939d80b07819a9a8b3cb1c681484f zope.interface-4.1.3.tar.gz +# md5 from https://pypi.python.org/pypi/zope-interface/json, sha256 locally computed +md5 ba3f32eacaea66094b7e2ae2788cec89 zope.interface-4.3.3.tar.gz +sha256 8780ef68ca8c3fe1abb30c058a59015129d6e04a6b02c2e56b9c7de6078dfa88 zope.interface-4.3.3.tar.gz diff --git a/bsp/buildroot/package/python-zope-interface/python-zope-interface.mk b/bsp/buildroot/package/python-zope-interface/python-zope-interface.mk index ac3c2301..3e3b464b 100644 --- a/bsp/buildroot/package/python-zope-interface/python-zope-interface.mk +++ b/bsp/buildroot/package/python-zope-interface/python-zope-interface.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_ZOPE_INTERFACE_VERSION = 4.1.3 +PYTHON_ZOPE_INTERFACE_VERSION = 4.3.3 PYTHON_ZOPE_INTERFACE_SOURCE = zope.interface-$(PYTHON_ZOPE_INTERFACE_VERSION).tar.gz -PYTHON_ZOPE_INTERFACE_SITE = https://pypi.python.org/packages/source/z/zope.interface +PYTHON_ZOPE_INTERFACE_SITE = https://pypi.python.org/packages/44/af/cea1e18bc0d3be0e0824762d3236f0e61088eeed75287e7b854d65ec9916 PYTHON_ZOPE_INTERFACE_SETUP_TYPE = setuptools PYTHON_ZOPE_INTERFACE_LICENSE = ZPLv2.1 PYTHON_ZOPE_INTERFACE_LICENSE_FILES = LICENSE.txt diff --git a/bsp/buildroot/package/python/004-sysconfigdata-install-location.patch b/bsp/buildroot/package/python/004-sysconfigdata-install-location.patch index edf7120e..2998364f 100644 --- a/bsp/buildroot/package/python/004-sysconfigdata-install-location.patch +++ b/bsp/buildroot/package/python/004-sysconfigdata-install-location.patch @@ -58,9 +58,9 @@ Index: b/Makefile.pre.in -rm -f python*-gdb.py - -rm -f pybuilddir.txt + -rm -f pybuilddir.txt pysysconfigdatadir.txt - find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \ - -o -name '[@,#]*' -o -name '*.old' \ - -o -name '*.orig' -o -name '*.rej' \ + # Issue #28258: set LC_ALL to avoid issues with Estonian locale. + # Expansion is performed here by shell (spawned by make) itself before + # arguments are passed to find. So LC_ALL=C must be set as a separate Index: b/configure.ac =================================================================== --- a/configure.ac diff --git a/bsp/buildroot/package/python/010-fix-python-config.patch b/bsp/buildroot/package/python/010-fix-python-config.patch index 1266f3d3..b40339b4 100644 --- a/bsp/buildroot/package/python/010-fix-python-config.patch +++ b/bsp/buildroot/package/python/010-fix-python-config.patch @@ -61,7 +61,7 @@ Index: b/Makefile.pre.in @@ -410,7 +410,7 @@ # Default target - all: build_all + all: @DEF_MAKE_ALL_RULE@ -build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks +build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks python-config diff --git a/bsp/buildroot/package/python/python.hash b/bsp/buildroot/package/python/python.hash index b7d00360..f285e424 100644 --- a/bsp/buildroot/package/python/python.hash +++ b/bsp/buildroot/package/python/python.hash @@ -1,4 +1,4 @@ -# From https://www.python.org/downloads/release/python-2712/ -md5 57dffcee9cee8bb2ab5f82af1d8e9a69 Python-2.7.12.tar.xz +# From https://www.python.org/downloads/release/python-2713/ +md5 53b43534153bb2a0363f08bae8b9d990 Python-2.7.13.tar.xz # Locally calculated -sha256 d7837121dd5652a05fef807c361909d255d173280c4e1a4ded94d73d80a1f978 Python-2.7.12.tar.xz +sha256 35d543986882f78261f97787fd3e06274bfa6df29fac9b4a94f73930ff98f731 Python-2.7.13.tar.xz diff --git a/bsp/buildroot/package/python/python.mk b/bsp/buildroot/package/python/python.mk index 90267035..281130c6 100644 --- a/bsp/buildroot/package/python/python.mk +++ b/bsp/buildroot/package/python/python.mk @@ -5,7 +5,7 @@ ################################################################################ PYTHON_VERSION_MAJOR = 2.7 -PYTHON_VERSION = $(PYTHON_VERSION_MAJOR).12 +PYTHON_VERSION = $(PYTHON_VERSION_MAJOR).13 PYTHON_SOURCE = Python-$(PYTHON_VERSION).tar.xz PYTHON_SITE = http://python.org/ftp/python/$(PYTHON_VERSION) PYTHON_LICENSE = Python software foundation license v2, others @@ -39,8 +39,12 @@ HOST_PYTHON_CONF_OPTS += \ # Make sure that LD_LIBRARY_PATH overrides -rpath. # This is needed because libpython may be installed at the same time that # python is called. +# Make python believe we don't have 'hg' and 'svn', so that it doesn't +# try to communicate over the network during the build. HOST_PYTHON_CONF_ENV += \ - LDFLAGS="$(HOST_LDFLAGS) -Wl,--enable-new-dtags" + LDFLAGS="$(HOST_LDFLAGS) -Wl,--enable-new-dtags" \ + ac_cv_prog_HAS_HG=/bin/false \ + ac_cv_prog_SVNVERSION=/bin/false # Building host python in parallel sometimes triggers a "Bus error" # during the execution of "./python setup.py build" in the @@ -101,6 +105,9 @@ endif # Default is UCS2 w/o a conf opt ifeq ($(BR2_PACKAGE_PYTHON_UCS4),y) +# host-python must have the same UCS2/4 configuration as the target +# python +HOST_PYTHON_CONF_OPTS += --enable-unicode=ucs4 PYTHON_CONF_OPTS += --enable-unicode=ucs4 endif @@ -126,11 +133,22 @@ else PYTHON_CONF_OPTS += --disable-ossaudiodev endif +# Make python believe we don't have 'hg' and 'svn', so that it doesn't +# try to communicate over the network during the build. PYTHON_CONF_ENV += \ ac_cv_have_long_long_format=yes \ ac_cv_file__dev_ptmx=yes \ ac_cv_file__dev_ptc=yes \ - ac_cv_working_tzset=yes + ac_cv_working_tzset=yes \ + ac_cv_prog_HAS_HG=/bin/false \ + ac_cv_prog_SVNVERSION=/bin/false + +# GCC is always compliant with IEEE754 +ifeq ($(BR2_ENDIAN),"LITTLE") +PYTHON_CONF_ENV += ac_cv_little_endian_double=yes +else +PYTHON_CONF_ENV += ac_cv_big_endian_double=yes +endif PYTHON_CONF_OPTS += \ --without-cxx-main \ diff --git a/bsp/buildroot/package/python3/0031-Add-an-option-to-disable-openssl.patch b/bsp/buildroot/package/python3/0031-Add-an-option-to-disable-openssl.patch new file mode 100644 index 00000000..d4375203 --- /dev/null +++ b/bsp/buildroot/package/python3/0031-Add-an-option-to-disable-openssl.patch @@ -0,0 +1,23 @@ +From: Nicolas Cavallari +Subject: [PATCH] Add an option to disable openssl support. + +Signed-off-by: Nicolas Cavallari +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/configure.ac ++++ b/configure.ac +@@ -3027,6 +3027,12 @@ + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} unicodedata" + fi]) + ++AC_ARG_ENABLE(openssl, ++ AS_HELP_STRING([--disable-openssl], [disable openssl support]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} ssl _ssl _hashlib" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), diff --git a/bsp/buildroot/package/python3/Config.in b/bsp/buildroot/package/python3/Config.in index 0f4fc88a..35f57e65 100644 --- a/bsp/buildroot/package/python3/Config.in +++ b/bsp/buildroot/package/python3/Config.in @@ -40,8 +40,8 @@ menu "core python3 modules" comment "The following modules are unusual or require extra libraries" config BR2_PACKAGE_PYTHON3_BZIP2 - select BR2_PACKAGE_BZIP2 bool "bz2 module" + select BR2_PACKAGE_BZIP2 help bzip2 module for Python3 @@ -51,14 +51,14 @@ config BR2_PACKAGE_PYTHON3_CODECSCJK Chinese/Japanese/Korean codecs module for Python (large). config BR2_PACKAGE_PYTHON3_CURSES - select BR2_PACKAGE_NCURSES bool "curses module" + select BR2_PACKAGE_NCURSES help curses module for Python3. config BR2_PACKAGE_PYTHON3_DECIMAL - select BR2_PACKAGE_MPDECIMAL bool "decimal module" + select BR2_PACKAGE_MPDECIMAL help decimal module for Python3. @@ -68,15 +68,15 @@ config BR2_PACKAGE_PYTHON3_OSSAUDIODEV ossaudiodev module for Python3. config BR2_PACKAGE_PYTHON3_READLINE - select BR2_PACKAGE_READLINE bool "readline" + select BR2_PACKAGE_READLINE help readline module for Python3 (required for command-line editing in the Python shell). config BR2_PACKAGE_PYTHON3_SSL - select BR2_PACKAGE_OPENSSL bool "ssl" + select BR2_PACKAGE_OPENSSL help _ssl module for Python3 (required for https in urllib etc). @@ -93,11 +93,17 @@ config BR2_PACKAGE_PYTHON3_SQLITE SQLite database support config BR2_PACKAGE_PYTHON3_PYEXPAT - select BR2_PACKAGE_EXPAT bool "xml module" + select BR2_PACKAGE_EXPAT help pyexpat and xml libraries for Python3. +config BR2_PACKAGE_PYTHON3_XZ + bool "xz module" + select BR2_PACKAGE_XZ + help + xz (a.k.a lzma) module for Python3 + config BR2_PACKAGE_PYTHON3_ZLIB bool "zlib module" select BR2_PACKAGE_ZLIB diff --git a/bsp/buildroot/package/python3/python3.mk b/bsp/buildroot/package/python3/python3.mk index 34e12975..8bfae79f 100644 --- a/bsp/buildroot/package/python3/python3.mk +++ b/bsp/buildroot/package/python3/python3.mk @@ -36,13 +36,17 @@ HOST_PYTHON3_CONF_OPTS += \ --enable-unicodedata \ --disable-test-modules \ --disable-idle3 \ - --disable-ossaudiodev + --disable-ossaudiodev \ + --disable-openssl # Make sure that LD_LIBRARY_PATH overrides -rpath. # This is needed because libpython may be installed at the same time that # python is called. +# Make python believe we don't have 'hg', so that it doesn't try to +# communicate over the network during the build. HOST_PYTHON3_CONF_ENV += \ - LDFLAGS="$(HOST_LDFLAGS) -Wl,--enable-new-dtags" + LDFLAGS="$(HOST_LDFLAGS) -Wl,--enable-new-dtags" \ + ac_cv_prog_HAS_HG=/bin/false PYTHON3_DEPENDENCIES = host-python3 libffi @@ -100,6 +104,10 @@ ifeq ($(BR2_PACKAGE_PYTHON3_BZIP2),y) PYTHON3_DEPENDENCIES += bzip2 endif +ifeq ($(BR2_PACKAGE_PYTHON3_XZ),y) +PYTHON3_DEPENDENCIES += xz +endif + ifeq ($(BR2_PACKAGE_PYTHON3_ZLIB),y) PYTHON3_DEPENDENCIES += zlib endif @@ -110,11 +118,21 @@ else PYTHON3_CONF_OPTS += --disable-ossaudiodev endif +# Make python believe we don't have 'hg', so that it doesn't try to +# communicate over the network during the build. PYTHON3_CONF_ENV += \ ac_cv_have_long_long_format=yes \ ac_cv_file__dev_ptmx=yes \ ac_cv_file__dev_ptc=yes \ - ac_cv_working_tzset=yes + ac_cv_working_tzset=yes \ + ac_cv_prog_HAS_HG=/bin/false + +# GCC is always compliant with IEEE754 +ifeq ($(BR2_ENDIAN),"LITTLE") +PYTHON3_CONF_ENV += ac_cv_little_endian_double=yes +else +PYTHON3_CONF_ENV += ac_cv_big_endian_double=yes +endif # uClibc is known to have a broken wcsftime() implementation, so tell # Python 3 to fall back to strftime() instead. diff --git a/bsp/buildroot/package/qemu/Config.in b/bsp/buildroot/package/qemu/Config.in index ea6b9460..f4a75fc2 100644 --- a/bsp/buildroot/package/qemu/Config.in +++ b/bsp/buildroot/package/qemu/Config.in @@ -2,7 +2,8 @@ config BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET bool # Only tested on these architectures default y if BR2_aarch64 || BR2_i386 || BR2_mips || BR2_mipsel \ - || BR2_x86_64 || BR2_arm + || BR2_x86_64 || BR2_arm \ + || BR2_powerpc64 || BR2_powerpc64le comment "QEMU requires a toolchain with wchar, threads" depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET @@ -69,11 +70,16 @@ comment "systems emulation needs a toolchain w/ dynamic library" config BR2_PACKAGE_QEMU_LINUX_USER bool "Enable all Linux user-land emulation" + # Incompatible "struct sigevent" definition on musl + depends on !BR2_TOOLCHAIN_USES_MUSL help Say 'y' to build all Linux user-land emulators that QEMU supports. # Note: bsd-user can not be build on Linux +comment "Linux user-land emulation needs a glibc or uClibc toolchain" + depends on BR2_TOOLCHAIN_USES_MUSL + endif # BR2_PACKAGE_QEMU_CUSTOM_TARGETS == "" config BR2_PACKAGE_QEMU_HAS_EMULS @@ -106,4 +112,9 @@ comment "FDT support needs a toolchain w/ dynamic library" endif # BR2_PACKAGE_QEMU_HAS_EMULS +config BR2_PACKAGE_QEMU_TOOLS + bool "Enable tools" + help + Say 'y' here to include tools packaged with QEMU (e.g. qemu-img). + endif # BR2_PACKAGE_QEMU diff --git a/bsp/buildroot/package/qemu/qemu.hash b/bsp/buildroot/package/qemu/qemu.hash index 2d6d96cb..572a5c91 100644 --- a/bsp/buildroot/package/qemu/qemu.hash +++ b/bsp/buildroot/package/qemu/qemu.hash @@ -1,2 +1,2 @@ # Locally computed, tarball verified with GPG signature -sha256 c9ac4a651b273233d21b8bec32e30507cb9cce7900841febc330956a1a8434ec qemu-2.6.0.tar.bz2 +sha256 326e739506ba690daf69fc17bd3913a6c313d9928d743bd8eddb82f403f81e53 qemu-2.7.0.tar.bz2 diff --git a/bsp/buildroot/package/qemu/qemu.mk b/bsp/buildroot/package/qemu/qemu.mk index 5ca0e77f..66efcba3 100644 --- a/bsp/buildroot/package/qemu/qemu.mk +++ b/bsp/buildroot/package/qemu/qemu.mk @@ -4,7 +4,7 @@ # ################################################################################ -QEMU_VERSION = 2.6.0 +QEMU_VERSION = 2.7.0 QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.bz2 QEMU_SITE = http://wiki.qemu.org/download QEMU_LICENSE = GPLv2, LGPLv2.1, MIT, BSD-3c, BSD-2c, Others/BSD-1c @@ -34,6 +34,8 @@ HOST_QEMU_DEPENDENCIES = host-pkgconf host-python host-zlib host-libglib2 host-p # mips64 mips64 # mips64el mips64el # powerpc ppc +# powerpc64 ppc64 +# powerpc64le ppc64 (system) / ppc64le (usermode) # sh2a not supported # sh4 sh4 # sh4eb sh4eb @@ -55,15 +57,23 @@ endif ifeq ($(HOST_QEMU_ARCH),powerpc) HOST_QEMU_ARCH = ppc endif +ifeq ($(HOST_QEMU_ARCH),powerpc64) +HOST_QEMU_ARCH = ppc64 +endif +ifeq ($(HOST_QEMU_ARCH),powerpc64le) +HOST_QEMU_ARCH = ppc64le +HOST_QEMU_SYS_ARCH = ppc64 +endif ifeq ($(HOST_QEMU_ARCH),sh4a) HOST_QEMU_ARCH = sh4 endif ifeq ($(HOST_QEMU_ARCH),sh4aeb) HOST_QEMU_ARCH = sh4eb endif +HOST_QEMU_SYS_ARCH ?= $(HOST_QEMU_ARCH) ifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y) -HOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-softmmu +HOST_QEMU_TARGETS += $(HOST_QEMU_SYS_ARCH)-softmmu HOST_QEMU_OPTS += --enable-system --enable-fdt HOST_QEMU_DEPENDENCIES += host-dtc else @@ -110,16 +120,19 @@ HOST_QEMU_OPTS += --enable-vde HOST_QEMU_DEPENDENCIES += host-vde2 endif +# Override CPP, as it expects to be able to call it like it'd +# call the compiler. define HOST_QEMU_CONFIGURE_CMDS - cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure \ - --target-list="$(HOST_QEMU_TARGETS)" \ - --prefix="$(HOST_DIR)/usr" \ - --interp-prefix=$(STAGING_DIR) \ - --cc="$(HOSTCC)" \ - --host-cc="$(HOSTCC)" \ - --python=$(HOST_DIR)/usr/bin/python2 \ - --extra-cflags="$(HOST_CFLAGS)" \ - --extra-ldflags="$(HOST_LDFLAGS)" \ + cd $(@D); $(HOST_CONFIGURE_OPTS) CPP="$(HOSTCC) -E" \ + ./configure \ + --target-list="$(HOST_QEMU_TARGETS)" \ + --prefix="$(HOST_DIR)/usr" \ + --interp-prefix=$(STAGING_DIR) \ + --cc="$(HOSTCC)" \ + --host-cc="$(HOSTCC)" \ + --python=$(HOST_DIR)/usr/bin/python2 \ + --extra-cflags="$(HOST_CFLAGS)" \ + --extra-ldflags="$(HOST_LDFLAGS)" \ $(HOST_QEMU_OPTS) endef @@ -193,11 +206,20 @@ else QEMU_OPTS += --disable-fdt endif +ifeq ($(BR2_PACKAGE_QEMU_TOOLS),y) +QEMU_OPTS += --enable-tools +else +QEMU_OPTS += --disable-tools +endif + +# Override CPP, as it expects to be able to call it like it'd +# call the compiler. define QEMU_CONFIGURE_CMDS ( cd $(@D); \ LIBS='$(QEMU_LIBS)' \ $(TARGET_CONFIGURE_OPTS) \ $(TARGET_CONFIGURE_ARGS) \ + CPP="$(TARGET_CC) -E" \ $(QEMU_VARS) \ ./configure \ --prefix=/usr \ @@ -228,7 +250,6 @@ define QEMU_CONFIGURE_CMDS --disable-strip \ --disable-seccomp \ --disable-sparse \ - --disable-tools \ $(QEMU_OPTS) \ ) endef diff --git a/bsp/buildroot/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch b/bsp/buildroot/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch new file mode 100644 index 00000000..e1d99f0f --- /dev/null +++ b/bsp/buildroot/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch @@ -0,0 +1,40 @@ +From 62fbe9c3539945df6204501b7e3ae0d51db075a3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 24 Nov 2016 22:30:40 +0100 +Subject: [PATCH] Create a main include file QExtSerialPort + +This main include file will be installed in + so that Qt applications can use this +library by including header files in a Qt-like style. + +Signed-off-by: Thomas Petazzoni +[Arnout: add it to qextserialport.pri so it is installed] +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + src/QExtSerialPort | 2 ++ + src/qextserialport.pri | 3 ++- + 2 files changed, 4 insertions(+), 1 deletion(-) + create mode 100644 src/QExtSerialPort + +diff --git a/src/QExtSerialPort b/src/QExtSerialPort +new file mode 100644 +index 0000000..a48aeea +--- /dev/null ++++ b/src/QExtSerialPort +@@ -0,0 +1,2 @@ ++#include "qextserialport.h" ++#include "qextserialenumerator.h" +diff --git a/src/qextserialport.pri b/src/qextserialport.pri +index 461d56f..f8a678d 100644 +--- a/src/qextserialport.pri ++++ b/src/qextserialport.pri +@@ -3,7 +3,8 @@ + + PUBLIC_HEADERS += $$PWD/qextserialport.h \ + $$PWD/qextserialenumerator.h \ +- $$PWD/qextserialport_global.h ++ $$PWD/qextserialport_global.h \ ++ $$PWD/QExtSerialPort + + HEADERS += $$PUBLIC_HEADERS \ + $$PWD/qextserialport_p.h \ diff --git a/bsp/buildroot/package/qextserialport/0001-gui.patch b/bsp/buildroot/package/qextserialport/0001-gui.patch deleted file mode 100644 index d3dedae8..00000000 --- a/bsp/buildroot/package/qextserialport/0001-gui.patch +++ /dev/null @@ -1,16 +0,0 @@ -Don't require Qt GUI module - -Signed-off-by: Arnout Vandecappelle (Essensium/Mind) ---- -diff -Nrup qextserialport-f83b4e7ca922e53.orig/qextserialport.pro qextserialport-f83b4e7ca922e53/qextserialport.pro ---- qextserialport-f83b4e7ca922e53.orig/qextserialport.pro 2012-10-17 09:13:53.000000000 +0200 -+++ qextserialport-f83b4e7ca922e53/qextserialport.pro 2012-11-13 22:48:29.249431510 +0100 -@@ -41,6 +41,8 @@ macx:qesp_mac_framework { - - win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release build_all - -+!win32*:!wince*:QT -= gui -+ - #generate proper library name - greaterThan(QT_MAJOR_VERSION, 4) { - QESP_LIB_BASENAME = QtExtSerialPort diff --git a/bsp/buildroot/package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch b/bsp/buildroot/package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch new file mode 100644 index 00000000..09e26a96 --- /dev/null +++ b/bsp/buildroot/package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch @@ -0,0 +1,28 @@ +From 14d4d3e7b5c748118acffddd397fb67b37fd5054 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Thu, 24 Nov 2016 22:44:02 +0100 +Subject: [PATCH] Tell qmake to add a pkgconfig file to ease usage with + applications + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + qextserialport.pro | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/qextserialport.pro b/qextserialport.pro +index 8d2c03a..2fcb39c 100644 +--- a/qextserialport.pro ++++ b/qextserialport.pro +@@ -42,7 +42,8 @@ TEMPLATE=lib + include(src/qextserialport.pri) + + #create_prl is needed, otherwise, MinGW can't found libqextserialport1.a +-CONFIG += create_prl ++CONFIG += create_prl create_pc ++QMAKE_PKGCONFIG_DESTDIR = pkgconfig + + #mac framework is designed for shared library + macx:qesp_mac_framework:qesp_static: CONFIG -= qesp_static +-- +2.10.2 + diff --git a/bsp/buildroot/package/qextserialport/0002-main-include.patch b/bsp/buildroot/package/qextserialport/0002-main-include.patch deleted file mode 100644 index 858f3354..00000000 --- a/bsp/buildroot/package/qextserialport/0002-main-include.patch +++ /dev/null @@ -1,15 +0,0 @@ -Create a main include file QExtSerialPort - -This main include file will be installed in - so that Qt applications can use this -library by including header files in a Qt-like style. - -Signed-off-by: Thomas Petazzoni - -Index: qextserialport-ef4af2a2ee3f/src/QExtSerialPort -=================================================================== ---- /dev/null -+++ qextserialport-ef4af2a2ee3f/src/QExtSerialPort -@@ -0,0 +1,2 @@ -+#include "qextserialport.h" -+#include "qextserialenumerator.h" diff --git a/bsp/buildroot/package/qextserialport/0003-pkgconfig.patch b/bsp/buildroot/package/qextserialport/0003-pkgconfig.patch deleted file mode 100644 index d67f3fcb..00000000 --- a/bsp/buildroot/package/qextserialport/0003-pkgconfig.patch +++ /dev/null @@ -1,19 +0,0 @@ -Add a pkgconfig file to ease usage with applications - -Signed-off-by: Thomas Petazzoni - -Index: qextserialport-ef4af2a2ee3f/qextserialport.pc -=================================================================== ---- /dev/null -+++ qextserialport-ef4af2a2ee3f/qextserialport.pc -@@ -0,0 +1,10 @@ -+prefix=/usr -+exec_prefix=${prefix} -+libdir=${prefix}/lib -+includedir=${prefix}/include/QExtSerialPort -+ -+Name: QtExtSerialPort -+Description: QtExtSerialPort library -+Version: 1.2.0 -+Libs: -L${libdir} -lqextserialport -+Cflags: -I${includedir} diff --git a/bsp/buildroot/package/qextserialport/qextserialport.mk b/bsp/buildroot/package/qextserialport/qextserialport.mk index 39e04075..e3e325ce 100644 --- a/bsp/buildroot/package/qextserialport/qextserialport.mk +++ b/bsp/buildroot/package/qextserialport/qextserialport.mk @@ -10,32 +10,36 @@ QEXTSERIALPORT_LICENSE = MIT QEXTSERIALPORT_LICENSE_FILES = LICENSE.md QEXTSERIALPORT_INSTALL_STAGING = YES +ifeq ($(BR2_STATIC_LIBS),y) +QEXTSERIALPORT_CONF_OPTS += CONFIG+=qesp_static +endif + ifeq ($(BR2_PACKAGE_QT),y) QEXTSERIALPORT_DEPENDENCIES += qt -define QEXTSERIALPORT_CONFIGURE_CMDS - (cd $(@D); $(TARGET_MAKE_ENV) $(QT_QMAKE)) -endef +QEXTSERIALPORT_QMAKE = $(QT_QMAKE) else ifeq ($(BR2_PACKAGE_QT5),y) QEXTSERIALPORT_DEPENDENCIES += qt5base -define QEXTSERIALPORT_CONFIGURE_CMDS - (cd $(@D); $(TARGET_MAKE_ENV) $(QT5_QMAKE)) -endef +QEXTSERIALPORT_QMAKE = $(QT5_QMAKE) endif +define QEXTSERIALPORT_CONFIGURE_CMDS + cd $(@D); $(TARGET_MAKE_ENV) $(QEXTSERIALPORT_QMAKE) $(QEXTSERIALPORT_CONF_OPTS) +endef + define QEXTSERIALPORT_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) endef define QEXTSERIALPORT_INSTALL_STAGING_CMDS - mkdir -p $(STAGING_DIR)/usr/include/QExtSerialPort - cp $(@D)/src/*.h $(STAGING_DIR)/usr/include/QExtSerialPort/ - cp $(@D)/src/QExtSerialPort $(STAGING_DIR)/usr/include/QExtSerialPort/ - cp -a $(@D)/*.so* $(STAGING_DIR)/usr/lib/ - cp $(@D)/qextserialport.pc $(STAGING_DIR)/usr/lib/pkgconfig/ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install endef +ifeq ($(BR2_STATIC_LIBS),y) +QEXTSERIALPORT_INSTALL_TARGET = NO +else define QEXTSERIALPORT_INSTALL_TARGET_CMDS cp -a $(@D)/*.so.* $(TARGET_DIR)/usr/lib endef +endif $(eval $(generic-package)) diff --git a/bsp/buildroot/package/qjson/0001-fix-Qt4-package-error-in-CMakeLists.txt.patch b/bsp/buildroot/package/qjson/0001-fix-Qt4-package-error-in-CMakeLists.txt.patch index 6f7a9ba2..a9e34e4c 100644 --- a/bsp/buildroot/package/qjson/0001-fix-Qt4-package-error-in-CMakeLists.txt.patch +++ b/bsp/buildroot/package/qjson/0001-fix-Qt4-package-error-in-CMakeLists.txt.patch @@ -1,10 +1,7 @@ -From 45ec86156819c0872d023b05001682a8d2d2dc25 Mon Sep 17 00:00:00 2001 +From 254858bbf443bded2e80480e9f9032ce166b923e Mon Sep 17 00:00:00 2001 From: Zoltan Gyarmati -Date: Sat, 6 Apr 2013 16:54:25 +0200 -Subject: [PATCH] fix Qt4 package error in CMakeLists.txt - -Avoid checking for uic executable by cmake as it results configure -time error if QtGui isn't installed. +Date: Fri, 2 Dec 2016 23:00:58 +0100 +Subject: [PATCH] CMake, Qt4: check specifically for QtCore, fixes #96 Signed-off-by: Zoltan Gyarmati --- @@ -12,18 +9,18 @@ Signed-off-by: Zoltan Gyarmati 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt -index adb65e9..81854b1 100644 +index 31d9987..2fde79f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -52,7 +52,7 @@ IF (Qt5Core_FOUND) +@@ -62,7 +62,7 @@ IF (Qt5Core_FOUND) ELSE() MESSAGE ("Qt5 not found, searching for Qt4") # Find Qt4 -- FIND_PACKAGE( Qt4 REQUIRED ) -+ FIND_PACKAGE( Qt4 COMPONENTS QtCore REQUIRED ) - - # Include the cmake file needed to use qt4 - INCLUDE( ${QT_USE_FILE} ) +- FIND_PACKAGE( Qt4 4.5 REQUIRED ) ++ FIND_PACKAGE( Qt4 4.5 REQUIRED QtCore) + # QStringBuilder is supported since Qt 4.8 for both QString and QByteArray + IF (NOT (${QT_VERSION_MINOR} STRLESS "8")) + MESSAGE ("Enable QStringBuilder") -- -2.1.1 +2.7.4 diff --git a/bsp/buildroot/package/qjson/qjson.hash b/bsp/buildroot/package/qjson/qjson.hash index 62822276..d794b487 100644 --- a/bsp/buildroot/package/qjson/qjson.hash +++ b/bsp/buildroot/package/qjson/qjson.hash @@ -1,2 +1,2 @@ # locally computed -sha256 863f0dd6b7199f84acf1e2487735830fab316a9a3a5e1651130ad153a231f2ed qjson-ba273682a9d33a7b3090e74f4742b5f3bf6c9b02.tar.gz +sha256 e812617477f3c2bb990561767a4cd8b1d3803a52018d4878da302529552610d4 qjson-0.9.0.tar.gz diff --git a/bsp/buildroot/package/qjson/qjson.mk b/bsp/buildroot/package/qjson/qjson.mk index 6a166173..dab2381b 100644 --- a/bsp/buildroot/package/qjson/qjson.mk +++ b/bsp/buildroot/package/qjson/qjson.mk @@ -4,7 +4,7 @@ # ################################################################################ -QJSON_VERSION = ba273682a9d33a7b3090e74f4742b5f3bf6c9b02 +QJSON_VERSION = 0.9.0 QJSON_SITE = $(call github,flavio,qjson,$(QJSON_VERSION)) QJSON_INSTALL_STAGING = YES QJSON_DEPENDENCIES = \ diff --git a/bsp/buildroot/package/qpid-proton/Config.in b/bsp/buildroot/package/qpid-proton/Config.in index f8aaf395..47cddebe 100644 --- a/bsp/buildroot/package/qpid-proton/Config.in +++ b/bsp/buildroot/package/qpid-proton/Config.in @@ -1,7 +1,6 @@ config BR2_PACKAGE_QPID_PROTON bool "qpid-proton" depends on !BR2_STATIC_LIBS # build a shared library - depends on BR2_USE_WCHAR # util-linux select BR2_PACKAGE_UTIL_LINUX select BR2_PACKAGE_UTIL_LINUX_LIBUUID help @@ -14,5 +13,5 @@ config BR2_PACKAGE_QPID_PROTON https://qpid.apache.org/proton/ -comment "qpid-proton needs a toolchain w/ dynamic library, wchar" - depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR +comment "qpid-proton needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/bsp/buildroot/package/qt-webkit-kiosk/Config.in b/bsp/buildroot/package/qt-webkit-kiosk/Config.in index 32952d7c..1b0e0dee 100644 --- a/bsp/buildroot/package/qt-webkit-kiosk/Config.in +++ b/bsp/buildroot/package/qt-webkit-kiosk/Config.in @@ -9,6 +9,7 @@ config BR2_PACKAGE_QT_WEBKIT_KIOSK depends on !BR2_STATIC_LIBS # qt5webkit depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5webkit depends on !BR2_BINFMT_FLAT # qt5webkit + depends on !BR2_MIPS_SOFT_FLOAT # qt5webkit help Simple kiosk-mode browser powered by Qt5Webkit diff --git a/bsp/buildroot/package/qt/0012-OpenGL-EGL-Avoid-X11-header-collision.patch b/bsp/buildroot/package/qt/0012-OpenGL-EGL-Avoid-X11-header-collision.patch new file mode 100644 index 00000000..8c65d1db --- /dev/null +++ b/bsp/buildroot/package/qt/0012-OpenGL-EGL-Avoid-X11-header-collision.patch @@ -0,0 +1,60 @@ +From 87c9c18fad02744238336a6cf1ce70d3ec2c89c2 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 11 Jun 2016 17:03:07 +0200 +Subject: [PATCH 1/1] OpenGL/EGL: Avoid X11 header collision + +Including X11 headers via EGL/egl.h leads to a collision of defines +between Qt and X11. To fix this qt5 added + DEFINES += MESA_EGL_NO_X11_HEADERS +in various files: + +https://github.com/qtproject/qtbase/blob/dev/src/platformsupport/eglconvenience/eglconvenience.pri#L19 +https://github.com/qtproject/qtbase/blob/dev/src/plugins/platforms/minimalegl/minimalegl.pro#L10 +https://github.com/qtproject/qtbase/blob/dev/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/eglfs_x11.pro#L6 +[...] + +This patch fixes a similar compile error in qt4: +http://autobuild.buildroot.net/results/9b0/9b0ed92984eead89d148eaa71aff6e2f1e117837/ +http://autobuild.buildroot.org/results/4fd/4fd57553336d36439fab32a7221fc8639758e887/ +http://autobuild.buildroot.org/results/5cb/5cb8072f8220f7203fa79936eedcc43eab53ec66/ + +Signed-off-by: Bernd Kuhls +(patch not sent upstream because qt4 branch is closed: + http://blog.qt.io/blog/2015/05/26/qt-4-8-7-released/) +--- + + src/gui/egl/egl.pri | 3 +++ + src/opengl/opengl.pro | 3 +++ + 2 files changed, 6 insertions(+) + +diff --git a/src/gui/egl/egl.pri b/src/gui/egl/egl.pri +index 8e8664c..715ffd7 100644 +--- a/src/gui/egl/egl.pri ++++ b/src/gui/egl/egl.pri +@@ -22,6 +22,9 @@ contains(QT_CONFIG, egl): { + !isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL + } + ++ # Avoid X11 header collision ++ DEFINES += MESA_EGL_NO_X11_HEADERS ++ + wince*: SOURCES += egl/qegl_wince.cpp + + unix { +diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro +index ce1a5d2..65b1031 100644 +--- a/src/opengl/opengl.pro ++++ b/src/opengl/opengl.pro +@@ -149,6 +149,9 @@ embedded { + qglwindowsurface_qws_p.h \ + qgl_egl_p.h + ++ # Avoid X11 header collision ++ DEFINES += MESA_EGL_NO_X11_HEADERS ++ + contains(QT_CONFIG, fontconfig) { + include($$QT_SOURCE_TREE/config.tests/unix/freetype/freetype.pri) + } else { +-- +2.8.1 + diff --git a/bsp/buildroot/package/qt/qt.mk b/bsp/buildroot/package/qt/qt.mk index 8c0ff7b0..29dcc46b 100644 --- a/bsp/buildroot/package/qt/qt.mk +++ b/bsp/buildroot/package/qt/qt.mk @@ -505,7 +505,7 @@ endef endif define QT_CONFIGURE_CMDS - -[ -f $(@D)/Makefile ] && $(MAKE) -C $(@D) confclean + -[ -f $(@D)/Makefile ] && $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) confclean $(QT_CONFIGURE_IPV6) $(QT_CONFIGURE_CONFIG_FILE) # Fix compiler path @@ -527,7 +527,7 @@ define QT_CONFIGURE_CMDS PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \ PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \ - $(QT_CONFIGURE_ENV) \ + $(TARGET_MAKE_ENV) \ MAKEFLAGS="$(MAKEFLAGS) -j$(PARALLEL_JOBS)" ./configure \ $(if $(VERBOSE),-verbose,-silent) \ -force-pkg-config \ @@ -632,7 +632,7 @@ endef # remove the sysroot path from them, since pkg-config already adds it # automatically. define QT_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install mkdir -p $(HOST_DIR)/usr/bin mv $(addprefix $(STAGING_DIR)/usr/bin/,$(QT_HOST_PROGRAMS)) $(HOST_DIR)/usr/bin ln -sf $(STAGING_DIR)/usr/mkspecs $(HOST_DIR)/usr/mkspecs diff --git a/bsp/buildroot/package/qt5/Config.in b/bsp/buildroot/package/qt5/Config.in index 84cbb0fb..4bcbc6ef 100644 --- a/bsp/buildroot/package/qt5/Config.in +++ b/bsp/buildroot/package/qt5/Config.in @@ -30,8 +30,36 @@ menuconfig BR2_PACKAGE_QT5 http://qt.io if BR2_PACKAGE_QT5 -source "package/qt5/qt5base/Config.in" + +choice + prompt "Qt5 version" + +config BR2_PACKAGE_QT5_VERSION_LATEST + bool "Latest (5.8)" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11 + depends on !BR2_ARM_CPU_ARMV4 # needs ARMv5+ + # no built-in double-conversion support + depends on !BR2_arc && !BR2_nios2 && !BR2_xtensa + help + This option builds Qt 5.8, which is licensed under + (L)GPLv3+. + +comment "Latest Qt version needs host/toolchain w/ gcc >= 4.8" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_HOST_GCC_AT_LEAST_4_8 + depends on !BR2_ARM_CPU_ARMV4 + depends on !BR2_arc && !BR2_nios2 && !BR2_xtensa + +config BR2_PACKAGE_QT5_VERSION_5_6 + bool "LTS (5.6)" + help + This option builds Qt 5.6, which is licensed under + (L)GPLv2+. + +endchoice + source "package/qt5/qt53d/Config.in" +source "package/qt5/qt5base/Config.in" source "package/qt5/qt5canvas3d/Config.in" source "package/qt5/qt5connectivity/Config.in" source "package/qt5/qt5declarative/Config.in" @@ -41,18 +69,16 @@ source "package/qt5/qt5imageformats/Config.in" source "package/qt5/qt5location/Config.in" source "package/qt5/qt5multimedia/Config.in" source "package/qt5/qt5quickcontrols/Config.in" +source "package/qt5/qt5quickcontrols2/Config.in" +source "package/qt5/qt5script/Config.in" source "package/qt5/qt5sensors/Config.in" source "package/qt5/qt5serialbus/Config.in" source "package/qt5/qt5serialport/Config.in" source "package/qt5/qt5svg/Config.in" source "package/qt5/qt5tools/Config.in" source "package/qt5/qt5webchannel/Config.in" +source "package/qt5/qt5webkit/Config.in" source "package/qt5/qt5websockets/Config.in" source "package/qt5/qt5x11extras/Config.in" source "package/qt5/qt5xmlpatterns/Config.in" -comment "technology preview" -source "package/qt5/qt5quickcontrols2/Config.in" -comment "legacy compatibility" -source "package/qt5/qt5script/Config.in" -source "package/qt5/qt5webkit/Config.in" endif diff --git a/bsp/buildroot/package/qt5/qt5.mk b/bsp/buildroot/package/qt5/qt5.mk index 04bad818..9e77ce35 100644 --- a/bsp/buildroot/package/qt5/qt5.mk +++ b/bsp/buildroot/package/qt5/qt5.mk @@ -1,6 +1,15 @@ -QT5_VERSION_MAJOR = 5.6 -QT5_VERSION = $(QT5_VERSION_MAJOR).1-1 +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5_VERSION_MAJOR = 5.8 +QT5_VERSION = $(QT5_VERSION_MAJOR).0 QT5_SITE = http://download.qt.io/official_releases/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules +QT5_SNAPSHOTS_SITE = http://download.qt.io/snapshots/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/latest_src/submodules +else +QT5_VERSION_MAJOR = 5.6 +QT5_VERSION = $(QT5_VERSION_MAJOR).2 +QT5_SITE = http://download.qt.io/official_releases/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules +QT5_SNAPSHOTS_SITE = http://download.qt.io/snapshots/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/latest_src/submodules +endif + include $(sort $(wildcard package/qt5/*/*.mk)) define QT5_LA_PRL_FILES_FIXUP diff --git a/bsp/buildroot/package/qt5/qt53d/Config.in b/bsp/buildroot/package/qt5/qt53d/Config.in index ff50204f..27f27a80 100644 --- a/bsp/buildroot/package/qt5/qt53d/Config.in +++ b/bsp/buildroot/package/qt5/qt53d/Config.in @@ -12,6 +12,10 @@ config BR2_PACKAGE_QT53D This package corresponds to the qt53d module. + + This module was in tech preview in Qt 5.6, and promoted + to a core module in Qt 5.7.0. + Enable the assimp package to gain the assimp sceneparser plugin. http://doc.qt.io/qt-5/qt3d-index.html diff --git a/bsp/buildroot/package/qt5/qt53d/qt53d.hash b/bsp/buildroot/package/qt5/qt53d/qt53d.hash index fbe782d2..7eaf2cdb 100644 --- a/bsp/buildroot/package/qt5/qt53d/qt53d.hash +++ b/bsp/buildroot/package/qt5/qt53d/qt53d.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qt3d-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 6e71b6925a39056c18920350ea94e5a6b45a54f27ea2e04905e4b2acb464b7db qt3d-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qt3d-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 a21786db6e0f5c6c70213fe1a3530ed3d7f28f28401a0f793970e9bc860ce941 qt3d-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qt3d-opensource-src-5.8.0.tar.xz +sha256 3a224576fc922195ac0063b5b351cd6b9d13afcde9cec14317be0347d10c8ae5 qt3d-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5base/0007-Remove-libudev-dependency-from-kms.pro.patch b/bsp/buildroot/package/qt5/qt5base/0007-Remove-libudev-dependency-from-kms.pro.patch deleted file mode 100644 index 7ecbcd05..00000000 --- a/bsp/buildroot/package/qt5/qt5base/0007-Remove-libudev-dependency-from-kms.pro.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0f1b4bb65abe0e36e9e4b9813e45192223509de8 Mon Sep 17 00:00:00 2001 -From: Ralf Nolden -Date: Tue, 17 May 2016 12:57:17 +0200 -Subject: [PATCH] Remove libudev dependency from kms.pro - -To compile the kms qpa plugin, only libdrm is needed. -Remove the libudev dependency for the compile check to enable -building of the qpa plugin on platforms where libudev is not present -such as BSD systems (but where KMS works) - -Change-Id: Icd0be70a8949578a6158d523428706890a9674eb -Reviewed-by: Laszlo Agocs -Reviewed-by: Oswald Buddenhagen - -Upstream: https://code.qt.io/cgit/qt/qtbase.git/patch/?id=72492735b7b7770808fcc9fe067e8f03fab827fc -Signed-off-by: Peter Seiderer ---- - config.tests/qpa/kms/kms.pro | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/config.tests/qpa/kms/kms.pro b/config.tests/qpa/kms/kms.pro -index 1fb7367..5147bc8 100644 ---- a/config.tests/qpa/kms/kms.pro -+++ b/config.tests/qpa/kms/kms.pro -@@ -1,4 +1,4 @@ - SOURCES = kms.cpp - CONFIG += link_pkgconfig --PKGCONFIG += libdrm libudev -+PKGCONFIG += libdrm - CONFIG -= qt --- -2.8.1 - diff --git a/bsp/buildroot/package/qt5/qt5base/0006-eglfs-rasp-pi-header-inclusion.patch b/bsp/buildroot/package/qt5/qt5base/5.6.2/0001-eglfs-rasp-pi-header-inclusion.patch similarity index 100% rename from bsp/buildroot/package/qt5/qt5base/0006-eglfs-rasp-pi-header-inclusion.patch rename to bsp/buildroot/package/qt5/qt5base/5.6.2/0001-eglfs-rasp-pi-header-inclusion.patch diff --git a/bsp/buildroot/package/qt5/qt5base/5.6.2/0002-eglfs-fix-eglfs_mali-compile-for-odroid-mali.patch b/bsp/buildroot/package/qt5/qt5base/5.6.2/0002-eglfs-fix-eglfs_mali-compile-for-odroid-mali.patch new file mode 100644 index 00000000..cbafb397 --- /dev/null +++ b/bsp/buildroot/package/qt5/qt5base/5.6.2/0002-eglfs-fix-eglfs_mali-compile-for-odroid-mali.patch @@ -0,0 +1,53 @@ +From b6c602e4264021f98ec2c72316e2a2000bf35e82 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 14 Nov 2016 23:42:25 +0100 +Subject: [PATCH] eglfs: fix eglfs_mali compile for odroid-mali + +Avoid duplicated struct fbdev_window definition (introduced by [1]) by +renaming struct fbdev_window to shadow_fbdev_window. + +Fixes the following buildroot compile failure ([2]): + +qeglfsmaliintegration.cpp:45:8: error: redefinition of 'struct fbdev_window' + struct fbdev_window { + ^ +In file included from /accts/mlweber1/rc-buildroot-test/scripts/instance-0/output/host/usr/aarch64-buildroot-linux-gnu/sysroot/usr/include/EGL/eglplatform.h:28:0, + from /accts/mlweber1/rc-buildroot-test/scripts/instance-0/output/host/usr/aarch64-buildroot-linux-gnu/sysroot/usr/include/EGL/egl.h:36, + from ../../../eglfs/qeglfsglobal.h:45, + from ../../../eglfs/qeglfsdeviceintegration.h:48, + from qeglfsmaliintegration.h:37, + from qeglfsmaliintegration.cpp:34: + +[1] https://code.qt.io/cgit/qt/qtbase.git/commit/?h=dev&id=58bed4cda98e8e25db8adc61c7db73b6853077dc +[2] http://autobuild.buildroot.net/results/48c/48c458c035162169e8ca7c34ae65e9064822f25a + +Signed-off-by: Peter Seiderer +--- + .../eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp +index 43decdf..aeba83f 100644 +--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp ++++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/qeglfsmaliintegration.cpp +@@ -42,7 +42,7 @@ + + QT_BEGIN_NAMESPACE + +-struct fbdev_window { ++struct shadow_fbdev_window { + unsigned short width; + unsigned short height; + }; +@@ -85,7 +85,7 @@ EGLNativeWindowType QEglFSMaliIntegration::createNativeWindow(QPlatformWindow *w + Q_UNUSED(window); + Q_UNUSED(format); + +- fbdev_window *fbwin = reinterpret_cast(malloc(sizeof(fbdev_window))); ++ shadow_fbdev_window *fbwin = reinterpret_cast(malloc(sizeof(shadow_fbdev_window))); + if (NULL == fbwin) + return 0; + +-- +2.8.1 + diff --git a/bsp/buildroot/package/qt5/qt5base/5.8.0/0001-fix-parallel-builds-with-qt-freetype-system-libpng.patch b/bsp/buildroot/package/qt5/qt5base/5.8.0/0001-fix-parallel-builds-with-qt-freetype-system-libpng.patch new file mode 100644 index 00000000..8548ef0e --- /dev/null +++ b/bsp/buildroot/package/qt5/qt5base/5.8.0/0001-fix-parallel-builds-with-qt-freetype-system-libpng.patch @@ -0,0 +1,34 @@ +From 74af93f5298b54bc2327843f390bf202776f2f48 Mon Sep 17 00:00:00 2001 +From: Oswald Buddenhagen +Date: Tue, 10 Jan 2017 14:18:02 +0100 +Subject: [PATCH] fix parallel builds with -qt-freetype -system-libpng + +freetype has no dependency on gui, so it needs to pull in gui's +configuration manually, as that's where the system libpng is found. + +Task-number: QTBUG-58038 +Change-Id: I881495f7d2a8f7c1a45d7d4c9e7698ff1d30f2a9 +Reviewed-by: Joerg Bornemann +Reviewed-by: Joni Poikelin + +Upstream: https://code.qt.io/cgit/qt/qtbase.git/commit/?id=4dcfd90e4fd7d4c49138038dbbcbda8794a9fbff +Signed-off-by: Peter Seiderer +--- + src/3rdparty/freetype/freetype.pro | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/3rdparty/freetype/freetype.pro b/src/3rdparty/freetype/freetype.pro +index 5b1eb92e..390a6da7 100644 +--- a/src/3rdparty/freetype/freetype.pro ++++ b/src/3rdparty/freetype/freetype.pro +@@ -69,6 +69,7 @@ DEFINES += FT_CONFIG_OPTION_SYSTEM_ZLIB + include(../zlib_dependency.pri) + + DEFINES += FT_CONFIG_OPTION_USE_PNG ++include($$OUT_PWD/../../gui/qtgui-config.pri) + QMAKE_USE_PRIVATE += libpng + + DEFINES += TT_CONFIG_OPTION_SUBPIXEL_HINTING +-- +2.11.0 + diff --git a/bsp/buildroot/package/qt5/qt5base/5.8.0/0002-fix-VNC-platform-plugin-build-on-big-endian-machines.patch b/bsp/buildroot/package/qt5/qt5base/5.8.0/0002-fix-VNC-platform-plugin-build-on-big-endian-machines.patch new file mode 100644 index 00000000..e7d7ee36 --- /dev/null +++ b/bsp/buildroot/package/qt5/qt5base/5.8.0/0002-fix-VNC-platform-plugin-build-on-big-endian-machines.patch @@ -0,0 +1,97 @@ +From 35ee8b53549fab6ebffe289417e1d94298447af7 Mon Sep 17 00:00:00 2001 +From: Shawn Rutledge +Date: Fri, 10 Feb 2017 13:56:58 +0100 +Subject: [PATCH] fix VNC platform plugin build on big-endian machines + +Task-number: QTBUG-58734 +Change-Id: I3e44ee4be5003acaba2f1b8ed2658a3ff1bd700e +Reviewed-by: Lars Knoll +Reviewed-by: Dmitry Shachnev + +Upstream: http://code.qt.io/cgit/qt/qtbase.git/patch/?id=6f64bfa654fb7e20bb75ec3b0544b81482babb44 +Signed-off-by: Peter Seiderer +--- + src/plugins/platforms/vnc/qvncclient.cpp | 6 +++--- + src/plugins/platforms/vnc/qvncscreen.cpp | 7 ++++++- + src/plugins/platforms/vnc/qvncscreen.h | 2 +- + 3 files changed, 10 insertions(+), 5 deletions(-) + +diff --git a/src/plugins/platforms/vnc/qvncclient.cpp b/src/plugins/platforms/vnc/qvncclient.cpp +index dae3e83f..58dcfc9b 100644 +--- a/src/plugins/platforms/vnc/qvncclient.cpp ++++ b/src/plugins/platforms/vnc/qvncclient.cpp +@@ -142,7 +142,7 @@ void QVncClient::convertPixels(char *dst, const char *src, int count) const + case 16: { + quint16 p = *reinterpret_cast(src); + #if Q_BYTE_ORDER == Q_BIG_ENDIAN +- if (swapBytes) ++ if (m_swapBytes) + p = ((p & 0xff) << 8) | ((p & 0xff00) >> 8); + #endif + r = (p >> 11) & 0x1f; +@@ -484,7 +484,7 @@ void QVncClient::setPixelFormat() + m_sameEndian = (QSysInfo::ByteOrder == QSysInfo::BigEndian) == !!m_pixelFormat.bigEndian; + m_needConversion = pixelConversionNeeded(); + #if Q_BYTE_ORDER == Q_BIG_ENDIAN +- m_swapBytes = qvnc_screen->swapBytes(); ++ m_swapBytes = server()->screen()->swapBytes(); + #endif + } + } +@@ -639,7 +639,7 @@ bool QVncClient::pixelConversionNeeded() const + return true; + + #if Q_BYTE_ORDER == Q_BIG_ENDIAN +- if (qvnc_screen->swapBytes()) ++ if (server()->screen()->swapBytes()) + return true; + #endif + +diff --git a/src/plugins/platforms/vnc/qvncscreen.cpp b/src/plugins/platforms/vnc/qvncscreen.cpp +index 34def457..64f1bc0b 100644 +--- a/src/plugins/platforms/vnc/qvncscreen.cpp ++++ b/src/plugins/platforms/vnc/qvncscreen.cpp +@@ -43,6 +43,7 @@ + #include + + #include ++#include + #include + + +@@ -172,14 +173,18 @@ QPixmap QVncScreen::grabWindow(WId wid, int x, int y, int width, int height) con + } + + #if Q_BYTE_ORDER == Q_BIG_ENDIAN +-bool QVNCScreen::swapBytes() const ++bool QVncScreen::swapBytes() const + { ++ return false; ++ ++ /* TODO + if (depth() != 16) + return false; + + if (screen()) + return screen()->frameBufferLittleEndian(); + return frameBufferLittleEndian(); ++ */ + } + #endif + +diff --git a/src/plugins/platforms/vnc/qvncscreen.h b/src/plugins/platforms/vnc/qvncscreen.h +index 785abd6d..0b42c3c7 100644 +--- a/src/plugins/platforms/vnc/qvncscreen.h ++++ b/src/plugins/platforms/vnc/qvncscreen.h +@@ -73,7 +73,7 @@ public: + void clearDirty() { dirtyRegion = QRegion(); } + + #if Q_BYTE_ORDER == Q_BIG_ENDIAN +- bool swapBytes() const ++ bool swapBytes() const; + #endif + + QStringList mArgs; +-- +2.11.0 + diff --git a/bsp/buildroot/package/qt5/qt5base/Config.in b/bsp/buildroot/package/qt5/qt5base/Config.in index 64a7f653..337dcf24 100644 --- a/bsp/buildroot/package/qt5/qt5base/Config.in +++ b/bsp/buildroot/package/qt5/qt5base/Config.in @@ -16,6 +16,17 @@ config BR2_PACKAGE_QT5BASE if BR2_PACKAGE_QT5BASE +config BR2_PACKAGE_QT5BASE_CUSTOM_CONF_OPTS + string "Custom configuration options" + help + Define custom qt5 configuration options which can be used to + enable or disable options not managed by buildroot. These + options are appended to the ones generated by buildroot and + passed to qt5base during configuration. + + E.g. to remove the Windows Vista style option, add the option + -no-feature-style_windowsvista. + config BR2_PACKAGE_QT5BASE_LICENSE_APPROVED bool "Approve free license" help @@ -117,6 +128,7 @@ config BR2_PACKAGE_QT5BASE_XML config BR2_PACKAGE_QT5BASE_GUI bool "gui module" + select BR2_PACKAGE_FREETYPE # At least one graphic backend must be enabled, so enable # linuxfb if nothing is enabled. select BR2_PACKAGE_QT5BASE_LINUXFB if \ @@ -180,7 +192,7 @@ config BR2_PACKAGE_QT5BASE_DIRECTFB bool "directfb support" depends on BR2_PACKAGE_DIRECTFB -comment "directfb backend if directb is enabled" +comment "directfb backend available if directfb is enabled" depends on !BR2_PACKAGE_DIRECTFB config BR2_PACKAGE_QT5BASE_XCB diff --git a/bsp/buildroot/package/qt5/qt5base/qmake.conf b/bsp/buildroot/package/qt5/qt5base/qmake.conf index 2152d3c7..49cf8983 100644 --- a/bsp/buildroot/package/qt5/qt5base/qmake.conf +++ b/bsp/buildroot/package/qt5/qt5base/qmake.conf @@ -19,6 +19,7 @@ QMAKE_CXXFLAGS_RELEASE += -O3 CONFIG += nostrip QMAKE_LIBS += -lrt -lpthread -ldl +QMAKE_CFLAGS_ISYSTEM = include(../common/linux_device_post.conf) load(qt_config) diff --git a/bsp/buildroot/package/qt5/qt5base/qt5base.hash b/bsp/buildroot/package/qt5/qt5base/qt5base.hash index 2df165bb..3f6af8ac 100644 --- a/bsp/buildroot/package/qt5/qt5base/qt5base.hash +++ b/bsp/buildroot/package/qt5/qt5base/qt5base.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtbase-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 329678347ec5ebb404225345300a8deb1e7c991322a4c50584be550c69be7c39 qtbase-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtbase-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 2f6eae93c5d982fe0a387a01aeb3435571433e23e9d9d9246741faf51f1ee787 qtbase-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtbase-opensource-src-5.8.0.tar.xz +sha256 c17111ae02a44dc7be1ec2cf979a47ee9e58edf4904041a525c21f4fa53fc005 qtbase-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5base/qt5base.mk b/bsp/buildroot/package/qt5/qt5base/qt5base.mk index bf541b0f..7a335736 100644 --- a/bsp/buildroot/package/qt5/qt5base/qt5base.mk +++ b/bsp/buildroot/package/qt5/qt5base/qt5base.mk @@ -21,13 +21,14 @@ QT5BASE_INSTALL_STAGING = YES QT5BASE_CONFIGURE_OPTS += \ -optimized-qmake \ -no-cups \ - -no-nis \ -no-iconv \ -system-zlib \ -system-pcre \ -no-pch \ -shared +QT5BASE_CONFIGURE_OPTS += $(call qstrip,$(BR2_PACKAGE_QT5BASE_CUSTOM_CONF_OPTS)) + # Uses libgbm from mesa3d ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) QT5BASE_CONFIGURE_OPTS += -kms -gbm @@ -42,12 +43,23 @@ else QT5BASE_CONFIGURE_OPTS += -release endif +ifeq ($(BR2_PACKAGE_QT5_VERSION_5_6),y) QT5BASE_CONFIGURE_OPTS += -largefile +endif ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) QT5BASE_CONFIGURE_OPTS += -opensource -confirm-license +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5BASE_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5BASE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5BASE_LICENSE = GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5BASE_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5BASE_LICENSE := $(QT5BASE_LICENSE), BSD-3c (examples) +QT5BASE_LICENSE_FILES += header.BSD +endif else QT5BASE_LICENSE = Commercial license QT5BASE_REDISTRIBUTE = NO @@ -85,10 +97,16 @@ QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM),sqlite) QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_NONE),-no-sql-sqlite) endif +ifeq ($(BR2_PACKAGE_QT5BASE_GUI),y) +QT5BASE_CONFIGURE_OPTS += -gui -system-freetype +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5_VERSION_5_6),-I$(STAGING_DIR)/usr/include/freetype2) +QT5BASE_DEPENDENCIES += freetype +else +QT5BASE_CONFIGURE_OPTS += -no-gui -no-freetype +endif +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),-widgets,-no-widgets) # We have to use --enable-linuxfb, otherwise Qt thinks that -linuxfb # is to add a link against the "inuxfb" library. -QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_GUI),-gui,-no-gui) -QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),-widgets,-no-widgets) QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_LINUXFB),--enable-linuxfb,-no-linuxfb) QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_DIRECTFB),-directfb,-no-directfb) QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_DIRECTFB),directfb) @@ -154,6 +172,7 @@ QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_ICU),icu) QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_EXAMPLES),-make,-nomake) examples +ifeq ($(BR2_PACKAGE_QT5_VERSION_5_6),y) # gstreamer 0.10 support is broken in qt5multimedia ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) QT5BASE_CONFIGURE_OPTS += -gstreamer 1.0 @@ -161,6 +180,14 @@ QT5BASE_DEPENDENCIES += gst1-plugins-base else QT5BASE_CONFIGURE_OPTS += -no-gstreamer endif +endif + +ifeq ($(BR2_PACKAGE_LIBINPUT),y) +QT5BASE_CONFIGURE_OPTS += -libinput +QT5BASE_DEPENDENCIES += libinput +else +QT5BASE_CONFIGURE_OPTS += -no-libinput +endif # Build the list of libraries to be installed on the target QT5BASE_INSTALL_LIBS_y += Qt5Core @@ -171,7 +198,11 @@ QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_SQL) += Qt5Sql QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_TEST) += Qt5Test QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_XML) += Qt5Xml QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_OPENGL_LIB) += Qt5OpenGL +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_EGLFS) += Qt5EglFSDeviceIntegration +else QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_EGLFS) += Qt5EglDeviceIntegration +endif QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_GUI) += Qt5Gui QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_WIDGETS) += Qt5Widgets @@ -237,12 +268,14 @@ define QT5BASE_INSTALL_TARGET_PLUGINS fi endef +ifeq ($(BR2_PACKAGE_QT5_VERSION_5_6),y) define QT5BASE_INSTALL_TARGET_FONTS if [ -d $(STAGING_DIR)/usr/lib/fonts/ ] ; then \ mkdir -p $(TARGET_DIR)/usr/lib/fonts ; \ cp -dpfr $(STAGING_DIR)/usr/lib/fonts/* $(TARGET_DIR)/usr/lib/fonts ; \ fi endef +endif define QT5BASE_INSTALL_TARGET_EXAMPLES if [ -d $(STAGING_DIR)/usr/lib/qt/examples/ ] ; then \ diff --git a/bsp/buildroot/package/qt5/qt5canvas3d/Config.in b/bsp/buildroot/package/qt5/qt5canvas3d/Config.in index 3ae51928..8058a2e2 100644 --- a/bsp/buildroot/package/qt5/qt5canvas3d/Config.in +++ b/bsp/buildroot/package/qt5/qt5canvas3d/Config.in @@ -8,9 +8,10 @@ config BR2_PACKAGE_QT5CANVAS3D Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5canvas3d module. + Qt Canvas 3D module provides a way to make WebGL-like + 3D drawing calls from Qt Quick JavaScript. - http://qt.io + http://doc.qt.io/qt-5/qtcanvas3d-index.html comment "qt5canvas3d needs an OpenGL-capable backend" depends on !BR2_PACKAGE_QT5_GL_AVAILABLE diff --git a/bsp/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash b/bsp/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash index 99d4ff6b..2d84fe45 100644 --- a/bsp/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash +++ b/bsp/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtcanvas3d-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 84d02cc051eeda6edb8a4da00d9a35869a447f7beb04d3c39cd375a3793f228c qtcanvas3d-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtcanvas3d-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 d7584d006b03f99692ccabce922e755a6f12bb1ed1fbc99c2b84842b9e0aa0ad qtcanvas3d-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtcanvas3d-opensource-src-5.8.0.tar.xz +sha256 5446f790f526f582df7790e1e1442357f61aac9c23ea9b00d4a791c9d78ccaa3 qtcanvas3d-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5connectivity/Config.in b/bsp/buildroot/package/qt5/qt5connectivity/Config.in index fa9b9112..8903fc94 100644 --- a/bsp/buildroot/package/qt5/qt5connectivity/Config.in +++ b/bsp/buildroot/package/qt5/qt5connectivity/Config.in @@ -8,9 +8,11 @@ config BR2_PACKAGE_QT5CONNECTIVITY Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5connectivity module. + Qt Connectivity module provides support for Bluetooth/NFC + peripherials. - http://qt.io + http://doc.qt.io/qt-5/qtbluetooth-index.html + http://doc.qt.io/qt-5/qtnfc-index.html comment "qt5connectivity needs neard and/or bluez(5)_utils" depends on !BR2_PACKAGE_NEARD && !BR2_PACKAGE_BLUEZ_UTILS && \ diff --git a/bsp/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash b/bsp/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash index 3dab371f..d6b841aa 100644 --- a/bsp/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash +++ b/bsp/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtconnectivity-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 f1d714b8f359df069b9e94e72719bcb9f5340212d9ce223453b7100c6ed7266b qtconnectivity-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtconnectivity-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 1b672923e0703d62f605ccec97b454b1a04c1f0db47f54b687d009e84eabedf9 qtconnectivity-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtconnectivity-opensource-src-5.8.0.tar.xz +sha256 7b2d01e9d67f6390a9e64bdae62e81a965b0f0b21137cf1a021e08a28bb227f1 qtconnectivity-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk b/bsp/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk index 0f7257d3..f00dcb22 100644 --- a/bsp/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk +++ b/bsp/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk @@ -11,8 +11,16 @@ QT5CONNECTIVITY_DEPENDENCIES = qt5base QT5CONNECTIVITY_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5CONNECTIVITY_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5CONNECTIVITY_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5CONNECTIVITY_LICENSE = GPLv2 or GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5CONNECTIVITY_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5CONNECTIVITY_LICENSE := $(QT5CONNECTIVITY_LICENSE), BSD-3c (examples) +endif else QT5CONNECTIVITY_LICENSE = Commercial license QT5CONNECTIVITY_REDISTRIBUTE = NO @@ -54,12 +62,22 @@ define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH cp -dpf $(STAGING_DIR)/usr/lib/libQt5Bluetooth.so.* $(TARGET_DIR)/usr/lib cp -dpf $(STAGING_DIR)/usr/bin/sdpscanner $(TARGET_DIR)/usr/bin endef +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/bluetooth $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif endif ifeq ($(BR2_PACKAGE_NEARD),y) define QT5CONNECTIVITY_INSTALL_TARGET_NFC cp -dpf $(STAGING_DIR)/usr/lib/libQt5Nfc.so.* $(TARGET_DIR)/usr/lib endef +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5CONNECTIVITY_INSTALL_TARGET_NFC_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/nfc $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif endif define QT5CONNECTIVITY_INSTALL_TARGET_CMDS @@ -67,6 +85,8 @@ define QT5CONNECTIVITY_INSTALL_TARGET_CMDS $(QT5CONNECTIVITY_INSTALL_TARGET_NFC) $(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_QMLS) $(QT5CONNECTIVITY_INSTALL_TARGET_NFC_QMLS) + $(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_EXAMPLES) + $(QT5CONNECTIVITY_INSTALL_TARGET_NFC_EXAMPLES) endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/qt5/qt5declarative/Config.in b/bsp/buildroot/package/qt5/qt5declarative/Config.in index eba4c8d6..853322ca 100644 --- a/bsp/buildroot/package/qt5/qt5declarative/Config.in +++ b/bsp/buildroot/package/qt5/qt5declarative/Config.in @@ -8,9 +8,11 @@ config BR2_PACKAGE_QT5DECLARATIVE Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5declarative module. + Qt Declarative module provides the Qt QML and Qt Quick + modules for developing UIs with the QML language - http://qt.io + http://doc.qt.io/qt-5/qtqml-index.html + http://doc.qt.io/qt-5/qtquick-index.html if BR2_PACKAGE_QT5DECLARATIVE diff --git a/bsp/buildroot/package/qt5/qt5declarative/qt5declarative.hash b/bsp/buildroot/package/qt5/qt5declarative/qt5declarative.hash index 15c0c46d..98a46f1f 100644 --- a/bsp/buildroot/package/qt5/qt5declarative/qt5declarative.hash +++ b/bsp/buildroot/package/qt5/qt5declarative/qt5declarative.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtdeclarative-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 1cdf60b52509972ac001f5402a42d9b144b344010ec6e34f528f7dfc6be98f24 qtdeclarative-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtdeclarative-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 0086a986bc36b398ba518c404d08cdff0a0d7978c30aa3fa2ab73d71654209da qtdeclarative-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtdeclarative-opensource-src-5.8.0.tar.xz +sha256 32941eb9ad12d8735dfc64de8b50b5ab830a6d8705a421c57369de7cb5708a46 qtdeclarative-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5declarative/qt5declarative.mk b/bsp/buildroot/package/qt5/qt5declarative/qt5declarative.mk index be3a7b7d..fb546bd7 100644 --- a/bsp/buildroot/package/qt5/qt5declarative/qt5declarative.mk +++ b/bsp/buildroot/package/qt5/qt5declarative/qt5declarative.mk @@ -11,8 +11,13 @@ QT5DECLARATIVE_DEPENDENCIES = qt5base qt5xmlpatterns QT5DECLARATIVE_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5DECLARATIVE_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5DECLARATIVE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5DECLARATIVE_LICENSE = GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5DECLARATIVE_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5DECLARATIVE_LICENSE = Commercial license QT5DECLARATIVE_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5enginio/Config.in b/bsp/buildroot/package/qt5/qt5enginio/Config.in index fcb866cd..102058e7 100644 --- a/bsp/buildroot/package/qt5/qt5enginio/Config.in +++ b/bsp/buildroot/package/qt5/qt5enginio/Config.in @@ -8,6 +8,10 @@ config BR2_PACKAGE_QT5ENGINIO Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5enginio module. + Enginio is a Backend-as-a-Service solution for simplifying + backend development of connected and data-driven applications. - http://qt.io + This package has been tagged as deprecated since version + 5.6 and not recommended for new design. + + http://doc.qt.io/archives/qt-5.5/enginio-index.html diff --git a/bsp/buildroot/package/qt5/qt5enginio/qt5enginio.hash b/bsp/buildroot/package/qt5/qt5enginio/qt5enginio.hash index 2105aba2..99518348 100644 --- a/bsp/buildroot/package/qt5/qt5enginio/qt5enginio.hash +++ b/bsp/buildroot/package/qt5/qt5enginio/qt5enginio.hash @@ -1,2 +1,2 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtenginio-opensource-src-1.6.1.tar.xz.mirrorlist -sha256 0e14d5dfcae3f0b44c52751b20a8fc5f9e2c0d53aa1025ffbabbfde43fcc1a9e qtenginio-opensource-src-1.6.1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtenginio-opensource-src-1.6.2.tar.xz.mirrorlist +sha256 90ffc38d214a75ab0ef90a4760843f12bc073ae49c17de24c677d1d403bddcc3 qtenginio-opensource-src-1.6.2.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5enginio/qt5enginio.mk b/bsp/buildroot/package/qt5/qt5enginio/qt5enginio.mk index 51cc5b41..dad78897 100644 --- a/bsp/buildroot/package/qt5/qt5enginio/qt5enginio.mk +++ b/bsp/buildroot/package/qt5/qt5enginio/qt5enginio.mk @@ -6,7 +6,7 @@ # Qt5Enginio does not follow Qt versionning # see https://bugreports.qt.io/browse/QTBUG-50111 -QT5ENGINIO_VERSION = 1.6.1 +QT5ENGINIO_VERSION = 1.6.2 QT5ENGINIO_SITE = $(QT5_SITE) QT5ENGINIO_SOURCE = qtenginio-opensource-src-$(QT5ENGINIO_VERSION).tar.xz QT5ENGINIO_DEPENDENCIES = openssl qt5base @@ -15,6 +15,9 @@ QT5ENGINIO_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) QT5ENGINIO_LICENSE = GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5ENGINIO_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5ENGINIO_LICENSE := $(QT5ENGINIO_LICENSE), BSD-3c (examples) +endif else QT5ENGINIO_LICENSE = Commercial license QT5ENGINIO_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5graphicaleffects/Config.in b/bsp/buildroot/package/qt5/qt5graphicaleffects/Config.in index a42e1f8f..df234259 100644 --- a/bsp/buildroot/package/qt5/qt5graphicaleffects/Config.in +++ b/bsp/buildroot/package/qt5/qt5graphicaleffects/Config.in @@ -8,9 +8,11 @@ config BR2_PACKAGE_QT5GRAPHICALEFFECTS Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5graphicaleffects module. + The Qt Graphical Effects module provides a set of QML types + for adding visually impressive and configurable effects to + user interfaces. - http://qt.io + http://doc.qt.io/qt-5/qtgraphicaleffects-index.html comment "qt5graphicaleffects needs an OpenGL-capable backend" depends on !BR2_PACKAGE_QT5_GL_AVAILABLE diff --git a/bsp/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash b/bsp/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash index 7e952b4a..ac4167be 100644 --- a/bsp/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash +++ b/bsp/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtgraphicaleffects-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 2b9cecf8eb3e12587788fa320119cf8d7b84775211cc1d78334d27e50040c014 qtgraphicaleffects-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtgraphicaleffects-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 1e9f0fac2c72a812d396db74b2d9d12f513d2ec9135d5982ca85aee7f00be75e qtgraphicaleffects-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtgraphicaleffects-opensource-src-5.8.0.tar.xz +sha256 5f2a9b50530ac83d7c2b2ce73fbdf03ac61f83a9521e9d4b796fa17a969dd919 qtgraphicaleffects-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk b/bsp/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk index 223374a2..aef69eb4 100644 --- a/bsp/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk +++ b/bsp/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk @@ -11,8 +11,13 @@ QT5GRAPHICALEFFECTS_DEPENDENCIES = qt5base qt5declarative QT5GRAPHICALEFFECTS_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5GRAPHICALEFFECTS_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5GRAPHICALEFFECTS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5GRAPHICALEFFECTS_LICENSE = GPLv2 or GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5GRAPHICALEFFECTS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5GRAPHICALEFFECTS_LICENSE = Commercial license QT5GRAPHICALEFFECTS_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5imageformats/0001-tvOS-support.patch b/bsp/buildroot/package/qt5/qt5imageformats/0001-tvOS-support.patch deleted file mode 100644 index 3759c104..00000000 --- a/bsp/buildroot/package/qt5/qt5imageformats/0001-tvOS-support.patch +++ /dev/null @@ -1,35 +0,0 @@ -From a9e4b41a04b8d1a6d3d687964c146b87f60f9683 Mon Sep 17 00:00:00 2001 -From: Mike Krus -Date: Mon, 28 Dec 2015 21:02:35 +0000 -Subject: [PATCH] tvOS support -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -QT_ARCH for tvOS is arm64 (not arm, since it’s 64bits only) - -Change-Id: Ia03d3ee07d2543a0e70ee7d77448aff9382d8fc8 -Reviewed-by: Jake Petroules - -Upstream: https://code.qt.io/cgit/qt/qtimageformats.git/patch/?id=e4c1d9ece74de212ebe5c55b134de7cb23469e2d -Signed-off-by: Peter Seiderer ---- - src/3rdparty/libwebp.pri | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/3rdparty/libwebp.pri b/src/3rdparty/libwebp.pri -index b7c1bb6..2197953 100644 ---- a/src/3rdparty/libwebp.pri -+++ b/src/3rdparty/libwebp.pri -@@ -82,7 +82,7 @@ android { - INCLUDEPATH += $$NDK_ROOT/sources/android/cpufeatures - } - --equals(QT_ARCH, arm) { -+equals(QT_ARCH, arm)|equals(QT_ARCH, arm64) { - SOURCES_FOR_NEON += \ - $$PWD/libwebp/src/dsp/dec_neon.c \ - $$PWD/libwebp/src/dsp/enc_neon.c \ --- -2.8.1 - diff --git a/bsp/buildroot/package/qt5/qt5imageformats/Config.in b/bsp/buildroot/package/qt5/qt5imageformats/Config.in index 4dd848e4..44c85c9b 100644 --- a/bsp/buildroot/package/qt5/qt5imageformats/Config.in +++ b/bsp/buildroot/package/qt5/qt5imageformats/Config.in @@ -6,6 +6,7 @@ config BR2_PACKAGE_QT5IMAGEFORMATS Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5imageformats module. + The Qt Image Formats module provides plugins for + additional image formats: TIFF, MNG, TGA, WBMP - http://qt.io + http://doc.qt.io/qt-5/qtimageformats-index.html diff --git a/bsp/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash b/bsp/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash index e21fb17e..0a635233 100644 --- a/bsp/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash +++ b/bsp/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtimageformats-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 cc45e481394dcc4eb4e565969c9bb50b87b1da23f006bf849a5f8daa375328dd qtimageformats-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtimageformats-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 4fb153be62dac393cbcebab65040b3b9d6edecd1ebbe5e543401b0e45bd147e4 qtimageformats-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtimageformats-opensource-src-5.8.0.tar.xz +sha256 75045eeac11c96194260badbdb4d3e9eb7b7f9972d18d3491230ea820be4606f qtimageformats-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk b/bsp/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk index 921656d0..d7649255 100644 --- a/bsp/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk +++ b/bsp/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk @@ -11,8 +11,13 @@ QT5IMAGEFORMATS_DEPENDENCIES = qt5base QT5IMAGEFORMATS_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5IMAGEFORMATS_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5IMAGEFORMATS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5IMAGEFORMATS_LICENSE = GPLv2 or GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5IMAGEFORMATS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5IMAGEFORMATS_LICENSE = Commercial license QT5IMAGEFORMATS_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5location/Config.in b/bsp/buildroot/package/qt5/qt5location/Config.in index 209d1342..e1778182 100644 --- a/bsp/buildroot/package/qt5/qt5location/Config.in +++ b/bsp/buildroot/package/qt5/qt5location/Config.in @@ -5,6 +5,8 @@ config BR2_PACKAGE_QT5LOCATION Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5location module. + The Qt Location API helps you create viable mapping + solutions using the data available from some of the + popular location services. - http://qt.io + http://doc.qt.io/qt-5/qtlocation-index.html diff --git a/bsp/buildroot/package/qt5/qt5location/qt5location.hash b/bsp/buildroot/package/qt5/qt5location/qt5location.hash index 099519f7..6afc918e 100644 --- a/bsp/buildroot/package/qt5/qt5location/qt5location.hash +++ b/bsp/buildroot/package/qt5/qt5location/qt5location.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtlocation-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 c9cc21ba3dd3f13376a175b092256403589a52c7851603dbfe1e15d5d9bac457 qtlocation-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtlocation-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 7a8995206ed0220f943a33c037527a1a8243d5386f5ca77bf88152675c28d23a qtlocation-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtlocation-opensource-src-5.8.0.tar.xz +sha256 48a1e39ed989f0133aeacaa379e9c3958ec9b08c043626bba503619891d21abb qtlocation-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5location/qt5location.mk b/bsp/buildroot/package/qt5/qt5location/qt5location.mk index 358b1621..dbdc6457 100644 --- a/bsp/buildroot/package/qt5/qt5location/qt5location.mk +++ b/bsp/buildroot/package/qt5/qt5location/qt5location.mk @@ -11,8 +11,13 @@ QT5LOCATION_DEPENDENCIES = qt5base QT5LOCATION_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5LOCATION_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5LOCATION_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5LOCATION_LICENSE = GPLv2 or GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5LOCATION_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5LOCATION_LICENSE = Commercial license QT5LOCATION_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5multimedia/Config.in b/bsp/buildroot/package/qt5/qt5multimedia/Config.in index 7549b351..5b14ac57 100644 --- a/bsp/buildroot/package/qt5/qt5multimedia/Config.in +++ b/bsp/buildroot/package/qt5/qt5multimedia/Config.in @@ -8,6 +8,9 @@ config BR2_PACKAGE_QT5MULTIMEDIA Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5multimedia module. + The Qt Multimedia module provides a rich feature set that + enables you to easily take advantage of a platform's multimedia + capabilities such as media playback and the use of camera and + radio devices. - http://qt.io + http://doc.qt.io/qt-5/multimediaoverview.html diff --git a/bsp/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash b/bsp/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash index e2e5a2d7..ffd8a779 100644 --- a/bsp/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash +++ b/bsp/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtmultimedia-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 4e28dcc696a9996b03a124b0f56fc86646bc2e9d29d383dc923b926040774e5d qtmultimedia-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtmultimedia-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 cb9a70a7c6c0eb5be4a3fcaf9590863479e95a255308bbf07d5b7aa303bb8caf qtmultimedia-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtmultimedia-opensource-src-5.8.0.tar.xz +sha256 a8bc044834f95208261915feefe5e2fdb6761b76f0f99e21062963bd9f9d4a07 qtmultimedia-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk b/bsp/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk index 67e79686..fccdd5d6 100644 --- a/bsp/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk +++ b/bsp/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk @@ -11,8 +11,13 @@ QT5MULTIMEDIA_DEPENDENCIES = qt5base QT5MULTIMEDIA_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5MULTIMEDIA_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5MULTIMEDIA_LICENSE = GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5MULTIMEDIA_LICENSE = Commercial license QT5MULTIMEDIA_REDISTRIBUTE = NO @@ -59,9 +64,16 @@ define QT5MULTIMEDIA_INSTALL_TARGET_QMLS endef endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5MULTIMEDIA_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/multimedia* $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + define QT5MULTIMEDIA_INSTALL_TARGET_CMDS $(QT5MULTIMEDIA_INSTALL_TARGET_LIBS) $(QT5MULTIMEDIA_INSTALL_TARGET_QMLS) + $(QT5MULTIMEDIA_INSTALL_TARGET_EXAMPLES) endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/qt5/qt5quickcontrols/Config.in b/bsp/buildroot/package/qt5/qt5quickcontrols/Config.in index 0fe8465e..3ab6ded4 100644 --- a/bsp/buildroot/package/qt5/qt5quickcontrols/Config.in +++ b/bsp/buildroot/package/qt5/qt5quickcontrols/Config.in @@ -8,9 +8,10 @@ config BR2_PACKAGE_QT5QUICKCONTROLS Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5quickcontrols module. + The Qt Quick Controls module provides a set of controls + that can be used to build complete interfaces in Qt Quick. - http://qt.io + http://doc.qt.io/qt-5/qtquickcontrols-index.html comment "qt5quickcontrols needs an OpenGL-capable backend" depends on !BR2_PACKAGE_QT5_GL_AVAILABLE diff --git a/bsp/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash b/bsp/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash index f9962632..95657d25 100644 --- a/bsp/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash +++ b/bsp/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtquickcontrols-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 011047af8bc2242fa9f7e7860818ca16a62a54e06b27a6b518919f4c08725f32 qtquickcontrols-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 5ed0f2292be10222dfb1b57a05472798fd759279f65455d91c02ef4fb746102c qtquickcontrols-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtquickcontrols-opensource-src-5.8.0.tar.xz +sha256 04e70d0ccfd9ba882691a5e8f81e3428ae1b72a76bb9f43ba242f1c33bd7b326 qtquickcontrols-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk b/bsp/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk index b33ff157..43254ba0 100644 --- a/bsp/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk +++ b/bsp/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk @@ -30,8 +30,25 @@ define QT5QUICKCONTROLS_INSTALL_STAGING_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install endef + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK)$(BR2_PACKAGE_QT5BASE_WIDGETS),yy) +define QT5QUICKCONTROLS_INSTALL_TARGET_PRIVATEWIDGETS + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/PrivateWidgets $(TARGET_DIR)/usr/qml/QtQuick +endef +endif + +ifeq ($(BR2_PACKAGE_QT5_VERSION_5_6),y) +define QT5QUICKCONTROLS_INSTALL_TARGET_LAYOUTS + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Layouts $(TARGET_DIR)/usr/qml/QtQuick +endef +endif + define QT5QUICKCONTROLS_INSTALL_TARGET_CMDS - cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick $(TARGET_DIR)/usr/qml + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Controls $(TARGET_DIR)/usr/qml/QtQuick + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Dialogs $(TARGET_DIR)/usr/qml/QtQuick + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Extras $(TARGET_DIR)/usr/qml/QtQuick + $(QT5QUICKCONTROLS_INSTALL_TARGET_PRIVATEWIDGETS) + $(QT5QUICKCONTROLS_INSTALL_TARGET_LAYOUTS) endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/qt5/qt5quickcontrols2/Config.in b/bsp/buildroot/package/qt5/qt5quickcontrols2/Config.in index 1e57674d..adf89d0d 100644 --- a/bsp/buildroot/package/qt5/qt5quickcontrols2/Config.in +++ b/bsp/buildroot/package/qt5/qt5quickcontrols2/Config.in @@ -10,7 +10,10 @@ config BR2_PACKAGE_QT5QUICKCONTROLS2 This package corresponds to the qt5quickcontrols2 module. - http://qt.io + This module was in tech preview in Qt 5.6, and promoted + to a core module in Qt 5.7.0. + + https://doc.qt.io/qt-5/qtquickcontrols2-index.html comment "qt5quickcontrols2 needs an OpenGL-capable backend" depends on !BR2_PACKAGE_QT5_GL_AVAILABLE diff --git a/bsp/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash b/bsp/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash index 798a8ab2..80a3103b 100644 --- a/bsp/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash +++ b/bsp/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtquickcontrols2-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 4c915939f659bb5f7dc381eb011809b6030c717269d9d260fca36f8d5917ca71 qtquickcontrols2-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols2-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 09dc1710aa4701aebe145829eb99bab94d0870cf578f7dddcec0af92286dfec1 qtquickcontrols2-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtquickcontrols2-opensource-src-5.8.0.tar.xz +sha256 b099866ec74f13cf0047274c61f0486d1eba27716fa07b69f682c54d3a4ade1b qtquickcontrols2-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk b/bsp/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk index a5ad3f6d..f6aca2cd 100644 --- a/bsp/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk +++ b/bsp/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk @@ -30,11 +30,30 @@ define QT5QUICKCONTROLS2_INSTALL_STAGING_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install endef +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5QUICKCONTROLS2_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/quickcontrols2 $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +define QT5QUICKCONTROLS2_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5QuickTemplates2.so.* $(TARGET_DIR)/usr/lib + cp -dpf $(STAGING_DIR)/usr/lib/libQt5QuickControls2.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/calendar $(TARGET_DIR)/usr/qml/Qt/labs + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/platform $(TARGET_DIR)/usr/qml/Qt/labs + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Controls.2 $(TARGET_DIR)/usr/qml/QtQuick + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Templates.2 $(TARGET_DIR)/usr/qml/QtQuick + $(QT5QUICKCONTROLS2_INSTALL_TARGET_EXAMPLES) +endef +else define QT5QUICKCONTROLS2_INSTALL_TARGET_CMDS cp -dpf $(STAGING_DIR)/usr/lib/libQt5LabsTemplates.so.* $(TARGET_DIR)/usr/lib cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/controls $(TARGET_DIR)/usr/qml/Qt/labs cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/calendar $(TARGET_DIR)/usr/qml/Qt/labs cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/templates $(TARGET_DIR)/usr/qml/Qt/labs + $(QT5QUICKCONTROLS2_INSTALL_TARGET_EXAMPLES) endef +endif $(eval $(generic-package)) diff --git a/bsp/buildroot/package/qt5/qt5script/Config.in b/bsp/buildroot/package/qt5/qt5script/Config.in index 0d15ef26..ad19727a 100644 --- a/bsp/buildroot/package/qt5/qt5script/Config.in +++ b/bsp/buildroot/package/qt5/qt5script/Config.in @@ -6,10 +6,11 @@ config BR2_PACKAGE_QT5SCRIPT Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5script module. + Qt Script provides support for making Qt applications + scriptable. Provided for Qt 4.x compatibility. This package has been tagged as deprecated since version 5.5.0 and should be replaced by Qt QML module in new design. - http://qt.io + http://doc.qt.io/qt-5/qtscript-index.html diff --git a/bsp/buildroot/package/qt5/qt5script/qt5script.hash b/bsp/buildroot/package/qt5/qt5script/qt5script.hash index 4b61d1bc..6e369d8e 100644 --- a/bsp/buildroot/package/qt5/qt5script/qt5script.hash +++ b/bsp/buildroot/package/qt5/qt5script/qt5script.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtscript-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 9d169f447395cef5209e1e33bf1020babc035740741145705298ba81488a36be qtscript-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtscript-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 e06ef6b271cae2187b57cd4ffdd6759428fd47f94a060e2ed2af024a8c14110e qtscript-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtscript-opensource-src-5.8.0.tar.xz +sha256 293ab91d2d189d889dc80609aa259190fb7de636d360e904784a5ce1a45e5ad3 qtscript-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5sensors/Config.in b/bsp/buildroot/package/qt5/qt5sensors/Config.in index 741ebba1..4846a3f9 100644 --- a/bsp/buildroot/package/qt5/qt5sensors/Config.in +++ b/bsp/buildroot/package/qt5/qt5sensors/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_QT5SENSORS Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5sensors module. + The Qt Sensors API provides access to sensor hardware + via QML and C++ interfaces. - http://qt.io + http://doc.qt.io/qt-5/qtsensors-index.html diff --git a/bsp/buildroot/package/qt5/qt5sensors/qt5sensors.hash b/bsp/buildroot/package/qt5/qt5sensors/qt5sensors.hash index 344cc38b..307ad6fb 100644 --- a/bsp/buildroot/package/qt5/qt5sensors/qt5sensors.hash +++ b/bsp/buildroot/package/qt5/qt5sensors/qt5sensors.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtsensors-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 99003fbe9304f1a135c454f28cc875f553a5f2c8c98153c516cfd8bf8ddb994d qtsensors-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtsensors-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 a7809081aab4f2f0d7a4f40c3abb02e1690bb390d1dd410d7c6c5019a5053427 qtsensors-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtsensors-opensource-src-5.8.0.tar.xz +sha256 3a5d0639ecf8cd30c8ca349c353a8f3c424889b53831e70b6d8c481fc45de796 qtsensors-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5sensors/qt5sensors.mk b/bsp/buildroot/package/qt5/qt5sensors/qt5sensors.mk index 0dd952a4..fb9ef32e 100644 --- a/bsp/buildroot/package/qt5/qt5sensors/qt5sensors.mk +++ b/bsp/buildroot/package/qt5/qt5sensors/qt5sensors.mk @@ -11,8 +11,13 @@ QT5SENSORS_DEPENDENCIES = qt5base QT5SENSORS_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5SENSORS_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5SENSORS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5SENSORS_LICENSE = GPLv2 or GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5SENSORS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5SENSORS_LICENSE = Commercial license QT5SENSORS_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5serialbus/Config.in b/bsp/buildroot/package/qt5/qt5serialbus/Config.in index f5b713db..2882d506 100644 --- a/bsp/buildroot/package/qt5/qt5serialbus/Config.in +++ b/bsp/buildroot/package/qt5/qt5serialbus/Config.in @@ -9,7 +9,10 @@ config BR2_PACKAGE_QT5SERIALBUS This package corresponds to the qt5serialbus module. - http://qt.io + This module was in tech preview in Qt 5.6, and promoted + to a core module in Qt 5.8.0. + + http://doc.qt.io/qt-5/qtserialbus-index.html comment "qt5serialbus needs headers >= 3.6" depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 diff --git a/bsp/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash b/bsp/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash index ff87c580..f15945c7 100644 --- a/bsp/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash +++ b/bsp/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtserialbus-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 05cb306d450a697cb8311db1e0edde76eaea0b20a681a74e28cbeda2c1792452 qtserialbus-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtserialbus-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 b39260091691532382935ed51de9ead8e66cfb5f7a6e5410c17cd0695ccaf826 qtserialbus-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtserialbus-opensource-src-5.8.0.tar.xz +sha256 58343dd9f2e339d4900a2d4b54ee25ed959cf62bacb012fe61e6b99d7958c10a qtserialbus-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5serialport/Config.in b/bsp/buildroot/package/qt5/qt5serialport/Config.in index c419d17d..3538c525 100644 --- a/bsp/buildroot/package/qt5/qt5serialport/Config.in +++ b/bsp/buildroot/package/qt5/qt5serialport/Config.in @@ -5,6 +5,8 @@ config BR2_PACKAGE_QT5SERIALPORT Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5serialport module. + Qt Serial Port provides the basic functionality, which + includes configuring, I/O operations, getting and setting + the control signals of the RS-232 pinouts. - http://qt.io + http://doc.qt.io/qt-5/qtserialport-index.html diff --git a/bsp/buildroot/package/qt5/qt5serialport/qt5serialport.hash b/bsp/buildroot/package/qt5/qt5serialport/qt5serialport.hash index 7903d421..18c590b6 100644 --- a/bsp/buildroot/package/qt5/qt5serialport/qt5serialport.hash +++ b/bsp/buildroot/package/qt5/qt5serialport/qt5serialport.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtserialport-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 a2b488fcdf076f539b601ec2c49446352d67bfe1d9fb4a57330ccc0edf5bac8c qtserialport-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtserialport-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 af76281bad2c2bd283189635316b46091f6712134b845ae1b9e3016eec94f376 qtserialport-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtserialport-opensource-src-5.8.0.tar.xz +sha256 52317fded73ad0beb0a2ecf93124a8e2dfdcf14270a762c1f4fd06fb075506ad qtserialport-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5serialport/qt5serialport.mk b/bsp/buildroot/package/qt5/qt5serialport/qt5serialport.mk index 04df021b..4fbca9ea 100644 --- a/bsp/buildroot/package/qt5/qt5serialport/qt5serialport.mk +++ b/bsp/buildroot/package/qt5/qt5serialport/qt5serialport.mk @@ -11,8 +11,13 @@ QT5SERIALPORT_DEPENDENCIES = qt5base QT5SERIALPORT_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5SERIALPORT_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5SERIALPORT_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5SERIALPORT_LICENSE = GPLv2 or GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5SERIALPORT_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5SERIALPORT_LICENSE = Commercial license QT5SERIALPORT_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5svg/Config.in b/bsp/buildroot/package/qt5/qt5svg/Config.in index e1acafbf..bc80b626 100644 --- a/bsp/buildroot/package/qt5/qt5svg/Config.in +++ b/bsp/buildroot/package/qt5/qt5svg/Config.in @@ -6,6 +6,7 @@ config BR2_PACKAGE_QT5SVG Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5svg module. + Qt SVG provides classes for rendering and displaying SVG + drawings in widgets and on other paint devices. - http://qt.io + http://doc.qt.io/qt-5/qtsvg-index.html diff --git a/bsp/buildroot/package/qt5/qt5svg/qt5svg.hash b/bsp/buildroot/package/qt5/qt5svg/qt5svg.hash index a9df0351..6855e85c 100644 --- a/bsp/buildroot/package/qt5/qt5svg/qt5svg.hash +++ b/bsp/buildroot/package/qt5/qt5svg/qt5svg.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtsvg-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 5c870352ecd9d0c11bfca1725999a5073c3a03e5685ba12b73aab5a81edc12f0 qtsvg-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtsvg-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 f7a361bf661b31ae7779513559dd0b774171911bc57f5cfb6bed6878ddc8bc4e qtsvg-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtsvg-opensource-src-5.8.0.tar.xz +sha256 9873191c211ab4da9c0bc47b1e3549f475db4d448bba3175e0f86b24eefadc89 qtsvg-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5svg/qt5svg.mk b/bsp/buildroot/package/qt5/qt5svg/qt5svg.mk index ebd5cba8..08821e48 100644 --- a/bsp/buildroot/package/qt5/qt5svg/qt5svg.mk +++ b/bsp/buildroot/package/qt5/qt5svg/qt5svg.mk @@ -11,8 +11,13 @@ QT5SVG_DEPENDENCIES = qt5base QT5SVG_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5SVG_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5SVG_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL +else QT5SVG_LICENSE = GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5SVG_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5SVG_LICENSE = Commercial license QT5SVG_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5tools/Config.in b/bsp/buildroot/package/qt5/qt5tools/Config.in index 453913b8..20f00f6b 100644 --- a/bsp/buildroot/package/qt5/qt5tools/Config.in +++ b/bsp/buildroot/package/qt5/qt5tools/Config.in @@ -4,9 +4,10 @@ config BR2_PACKAGE_QT5TOOLS Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5tools module. + Qt Tools provides tools facilitate the development + and design of applications. - http://qt.io + http://doc.qt.io/qt-5/qtmodules.html#qt-tools if BR2_PACKAGE_QT5TOOLS diff --git a/bsp/buildroot/package/qt5/qt5tools/qt5tools.hash b/bsp/buildroot/package/qt5/qt5tools/qt5tools.hash index 2b43fbd1..541d95be 100644 --- a/bsp/buildroot/package/qt5/qt5tools/qt5tools.hash +++ b/bsp/buildroot/package/qt5/qt5tools/qt5tools.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qttools-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 375a528bf7141eff38cdc00c322c6d4491c8f67203fd8ee6b9a7097504605141 qttools-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qttools-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 db2bb4318786257a47172c377d9c456d5d5ec760d5d69240a4693dc87989e1b7 qttools-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qttools-opensource-src-5.8.0.tar.xz +sha256 95ec8e76d393b6ba26ffff5041fce41946d2bf3aec1402c6533e24d9fc269d83 qttools-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5tools/qt5tools.mk b/bsp/buildroot/package/qt5/qt5tools/qt5tools.mk index 6befb8b2..0395f96b 100644 --- a/bsp/buildroot/package/qt5/qt5tools/qt5tools.mk +++ b/bsp/buildroot/package/qt5/qt5tools/qt5tools.mk @@ -20,8 +20,13 @@ QT5TOOLS_DEPENDENCIES += qt5declarative endif ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5TOOLS_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5TOOLS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL +else QT5TOOLS_LICENSE = GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5TOOLS_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5TOOLS_LICENSE = Commercial license QT5TOOLS_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5webchannel/Config.in b/bsp/buildroot/package/qt5/qt5webchannel/Config.in index 218629a7..e3d84058 100644 --- a/bsp/buildroot/package/qt5/qt5webchannel/Config.in +++ b/bsp/buildroot/package/qt5/qt5webchannel/Config.in @@ -6,6 +6,8 @@ config BR2_PACKAGE_QT5WEBCHANNEL Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5webchannel module. + Qt WebChannel enables peer-to-peer communication between + a server (QML/C++ application) and a client + (HTML/JavaScript or QML application). - http://qt.io + http://doc.qt.io/qt-5/qtwebchannel-index.html diff --git a/bsp/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash b/bsp/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash index bb9f0acf..7fd01efb 100644 --- a/bsp/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash +++ b/bsp/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtwebchannel-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 878ab614b30bbf04ef3775af68acd47de9765973650c1db403464e79efd07e82 qtwebchannel-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtwebchannel-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 700efdef5f51bdb77093f4db212afe275ad35a710ea08ba0e9e9cbc8f09f1a52 qtwebchannel-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtwebchannel-opensource-src-5.8.0.tar.xz +sha256 5bf5b15413baa235ee2cbfd136ea3b9303b32879b54f9f25bfb4dc96d37d0b4a qtwebchannel-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk b/bsp/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk index 9e94914b..9522a745 100644 --- a/bsp/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk +++ b/bsp/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk @@ -11,8 +11,16 @@ QT5WEBCHANNEL_DEPENDENCIES = qt5base qt5websockets QT5WEBCHANNEL_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5WEBCHANNEL_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5WEBCHANNEL_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5WEBCHANNEL_LICENSE = GPLv2 or GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5WEBCHANNEL_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5WEBCHANNEL_LICENSE := $(QT5WEBCHANNEL_LICENSE), BSD-3c (examples) +endif else QT5WEBCHANNEL_LICENSE = Commercial license QT5WEBCHANNEL_REDISTRIBUTE = NO @@ -62,6 +70,7 @@ define QT5WEBCHANNEL_INSTALL_TARGET_CMDS $(QT5WEBCHANNEL_INSTALL_TARGET_LIBS) $(QT5WEBCHANNEL_INSTALL_TARGET_QMLS) $(QT5WEBCHANNEL_INSTALL_TARGET_JAVASCRIPT) + $(QT5WEBCHANNEL_INSTALL_TARGET_EXAMPLES) endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/qt5/qt5webkit/Config.in b/bsp/buildroot/package/qt5/qt5webkit/Config.in index 48aaf945..25343604 100644 --- a/bsp/buildroot/package/qt5/qt5webkit/Config.in +++ b/bsp/buildroot/package/qt5/qt5webkit/Config.in @@ -9,20 +9,25 @@ config BR2_PACKAGE_QT5WEBKIT depends on !BR2_STATIC_LIBS depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE depends on !BR2_BINFMT_FLAT # icu + # assumes a FPU is available on MIPS + depends on !BR2_MIPS_SOFT_FLOAT help Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5webkit module. + The Qt WebKit module provides the WebView API, which + allows QML applications to render regions of dynamic + web content. This package has been removed from the official release packages since Qt5.6.0, but it is still available for users to build it from source. This is useful for platforms without GPU since the successor (QtWebEngine) requires OpenGL support. - http://qt.io + http://doc.qt.io/archives/qt-5.5/qtwebkit-index.html comment "qt5webkit needs a toolchain w/ dynamic library" depends on BR2_STATIC_LIBS depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE depends on !BR2_BINFMT_FLAT + depends on !BR2_MIPS_SOFT_FLOAT diff --git a/bsp/buildroot/package/qt5/qt5webkit/qt5webkit.hash b/bsp/buildroot/package/qt5/qt5webkit/qt5webkit.hash index 8122cabb..4431e2d1 100644 --- a/bsp/buildroot/package/qt5/qt5webkit/qt5webkit.hash +++ b/bsp/buildroot/package/qt5/qt5webkit/qt5webkit.hash @@ -1,2 +1,5 @@ -# locally computed -sha256 e4339ee069e2817fc5bf7c2c2d9fa680874da4ba56f34afdad2b4795803cbdf1 qt5webkit-b889f460280ad98c89ede179bd3b9ce9cb02002b.tar.gz +# Hash from: http://download.qt.io/snapshots/qt/5.6/5.6.2/latest_src/submodules/qtwebkit-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 528a6b8b1c5095367b26e8ce4f3a46bb739e2e9913ff4dfc6ef58a04fcd73966 qtwebkit-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtwebkit-opensource-src-5.8.0.tar.xz +sha256 79ae8660086bf92ffb0008b17566270e6477c8fa0daf9bb3ac29404fb5911bec qtwebkit-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5webkit/qt5webkit.mk b/bsp/buildroot/package/qt5/qt5webkit/qt5webkit.mk index a47a2352..980d2aff 100644 --- a/bsp/buildroot/package/qt5/qt5webkit/qt5webkit.mk +++ b/bsp/buildroot/package/qt5/qt5webkit/qt5webkit.mk @@ -4,10 +4,9 @@ # ################################################################################ -QT5WEBKIT_VERSION = b889f460280ad98c89ede179bd3b9ce9cb02002b -# Using GitHub since it supports downloading tarballs from random commits. -# The http://code.qt.io/cgit/qt/qtwebkit.git/ repo doesn't allow to do so. -QT5WEBKIT_SITE = $(call github,qtproject,qtwebkit,$(QT5WEBKIT_VERSION)) +QT5WEBKIT_VERSION = $(QT5_VERSION) +QT5WEBKIT_SITE = $(QT5_SNAPSHOTS_SITE) +QT5WEBKIT_SOURCE = qtwebkit-opensource-src-$(QT5WEBKIT_VERSION).tar.xz QT5WEBKIT_DEPENDENCIES = \ host-bison host-flex host-gperf host-python host-ruby \ qt5base sqlite @@ -36,21 +35,14 @@ endif # QtWebkit's build system uses python, but only supports python2. We work # around this by forcing python2 early in the PATH, via a python->python2 # symlink. -QT5WEBKIT_ENV = PATH=$(@D)/bin:$(BR_PATH) +QT5WEBKIT_ENV = PATH=$(@D)/host-bin:$(BR_PATH) define QT5WEBKIT_PYTHON2_SYMLINK - mkdir -p $(@D)/bin - ln -sf $(HOST_DIR)/usr/bin/python2 $(@D)/bin/python + mkdir -p $(@D)/host-bin + ln -sf $(HOST_DIR)/usr/bin/python2 $(@D)/host-bin/python endef QT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK -# Since we get the source from git, generated header files are not included. -# qmake detects that header file generation (using the syncqt tool) must be -# done based on the existence of a .git directory (cfr. the git_build config -# option which is set in qt_build_paths.prf). -# So, to make sure that qmake detects that header files must be generated, -# create an empty .git directory. define QT5WEBKIT_CONFIGURE_CMDS - mkdir -p $(@D)/.git (cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(HOST_DIR)/usr/bin/qmake) endef diff --git a/bsp/buildroot/package/qt5/qt5websockets/Config.in b/bsp/buildroot/package/qt5/qt5websockets/Config.in index 385a07c9..0cfde91c 100644 --- a/bsp/buildroot/package/qt5/qt5websockets/Config.in +++ b/bsp/buildroot/package/qt5/qt5websockets/Config.in @@ -6,6 +6,9 @@ config BR2_PACKAGE_QT5WEBSOCKETS Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5websockets module. + The Qt WebSockets module provides C++ and QML interfaces + that enable Qt applications to act as a server that can + process WebSocket requests, or a client that can + consume data received from the server, or both. - http://qt.io + http://doc.qt.io/qt-5/qtwebsockets-index.html diff --git a/bsp/buildroot/package/qt5/qt5websockets/qt5websockets.hash b/bsp/buildroot/package/qt5/qt5websockets/qt5websockets.hash index 05abfef8..a91e0842 100644 --- a/bsp/buildroot/package/qt5/qt5websockets/qt5websockets.hash +++ b/bsp/buildroot/package/qt5/qt5websockets/qt5websockets.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtwebsockets-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 34620ca34ca580802509b2fb3e9eb843d5ad11416d6a211400ac7f700aeae0bb qtwebsockets-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtwebsockets-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 3cd9d4bbff8e6be5e252f00fc9ecb9ac2d8a193020288c7d1e82583daeb5ba35 qtwebsockets-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtwebsockets-opensource-src-5.8.0.tar.xz +sha256 aa110af297d0d3239f346c3ee0cd43621adf463eb62a04941bbfe3fcccb845f5 qtwebsockets-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5websockets/qt5websockets.mk b/bsp/buildroot/package/qt5/qt5websockets/qt5websockets.mk index f1200c28..975ea643 100644 --- a/bsp/buildroot/package/qt5/qt5websockets/qt5websockets.mk +++ b/bsp/buildroot/package/qt5/qt5websockets/qt5websockets.mk @@ -11,8 +11,16 @@ QT5WEBSOCKETS_DEPENDENCIES = qt5base QT5WEBSOCKETS_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5WEBSOCKETS_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools) +QT5WEBSOCKETS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 +else QT5WEBSOCKETS_LICENSE = GPLv3 or LGPLv2.1 with exception or LGPLv3 QT5WEBSOCKETS_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5WEBSOCKETS_LICENSE := $(QT5WEBSOCKETS_LICENSE), BSD-3c (examples) +endif else QT5WEBSOCKETS_LICENSE = Commercial license QT5WEBSOCKETS_REDISTRIBUTE = NO @@ -56,6 +64,7 @@ endif define QT5WEBSOCKETS_INSTALL_TARGET_CMDS $(QT5WEBSOCKETS_INSTALL_TARGET_LIBS) $(QT5WEBSOCKETS_INSTALL_TARGET_QMLS) + $(QT5WEBSOCKETS_INSTALL_TARGET_EXAMPLES) endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/qt5/qt5x11extras/Config.in b/bsp/buildroot/package/qt5/qt5x11extras/Config.in index 6fc2c0ad..9c514cdd 100644 --- a/bsp/buildroot/package/qt5/qt5x11extras/Config.in +++ b/bsp/buildroot/package/qt5/qt5x11extras/Config.in @@ -6,6 +6,7 @@ config BR2_PACKAGE_QT5X11EXTRAS Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5x11extras module. + Qt X11 Extras enables the Qt programmer to write + applications for the Linux/X11 platform. - http://qt.io + http://doc.qt.io/qt-5/qtx11extras-index.html diff --git a/bsp/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash b/bsp/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash index bfec5139..eb0dc6c2 100644 --- a/bsp/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash +++ b/bsp/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtx11extras-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 be6cc815e9b33a20f5cd374fe77443b13ea5f1cd625616d75b3c4fdcc4f3457a qtx11extras-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtx11extras-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 71ffde1cfaeec310677b69ecd16cb5992e8885cf3e73b4cec7d6e7a115b40ced qtx11extras-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtx11extras-opensource-src-5.8.0.tar.xz +sha256 bed7f2b5123a9849ec94afa67db5f296e6f527c6330f47a680c83586d3a4280e qtx11extras-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk b/bsp/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk index a0e12098..996056b7 100644 --- a/bsp/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk +++ b/bsp/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk @@ -11,8 +11,13 @@ QT5X11EXTRAS_DEPENDENCIES = qt5base QT5X11EXTRAS_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5X11EXTRAS_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5X11EXTRAS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5X11EXTRAS_LICENSE = GPLv2 or GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5X11EXTRAS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif else QT5X11EXTRAS_LICENSE = Commercial license QT5X11EXTRAS_REDISTRIBUTE = NO diff --git a/bsp/buildroot/package/qt5/qt5xmlpatterns/Config.in b/bsp/buildroot/package/qt5/qt5xmlpatterns/Config.in index 8c82656c..dd8b54eb 100644 --- a/bsp/buildroot/package/qt5/qt5xmlpatterns/Config.in +++ b/bsp/buildroot/package/qt5/qt5xmlpatterns/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_QT5XMLPATTERNS Qt is a cross-platform application and UI framework for developers using C++. - This package corresponds to the qt5xmlpatterns module. + The Qt XML Patterns module provides support for XPath, + XQuery, XSLT, and XML Schema validation. - http://qt.io + http://doc.qt.io/qt-5/qtxmlpatterns-index.html diff --git a/bsp/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash b/bsp/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash index 68c859a2..c1bb6637 100644 --- a/bsp/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash +++ b/bsp/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash @@ -1,2 +1,5 @@ -# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.1-1/submodules/qtxmlpatterns-opensource-src-5.6.1-1.tar.xz.mirrorlist -sha256 e1dac17a8e6cb2b03da2d666ae2a99f31c2d9b73790c79ca2c85197766cec6a4 qtxmlpatterns-opensource-src-5.6.1-1.tar.xz +# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtxmlpatterns-opensource-src-5.6.2.tar.xz.mirrorlist +sha256 7c6df3eebf188d8ce6822a22cebbc63da5ac27047cf1bd7236d5b988244782cc qtxmlpatterns-opensource-src-5.6.2.tar.xz + +# Hash from: http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtxmlpatterns-opensource-src-5.8.0.tar.xz +sha256 7bffa65ea52e54fb1314b45222888612d55eaf51a936a6119b8756266439da04 qtxmlpatterns-opensource-src-5.8.0.tar.xz diff --git a/bsp/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk b/bsp/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk index 31477a7c..e5981af5 100644 --- a/bsp/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk +++ b/bsp/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk @@ -11,8 +11,16 @@ QT5XMLPATTERNS_DEPENDENCIES = qt5base QT5XMLPATTERNS_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5XMLPATTERNS_LICENSE = GPLv2+ or LGPLv3, GPLv3 with exception(tools), GFDLv1.3 (docs) +QT5XMLPATTERNS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else QT5XMLPATTERNS_LICENSE = GPLv3 or LGPLv2.1 with exception or LGPLv3, GFDLv1.3 (docs) QT5XMLPATTERNS_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5XMLPATTERNS_LICENSE := $(QT5XMLPATTERNS_LICENSE), BSD-3c (examples) +endif else QT5XMLPATTERNS_LICENSE = Commercial license QT5XMLPATTERNS_REDISTRIBUTE = NO @@ -32,9 +40,20 @@ define QT5XMLPATTERNS_INSTALL_STAGING_CMDS endef ifeq ($(BR2_STATIC_LIBS),) -define QT5XMLPATTERNS_INSTALL_TARGET_CMDS +define QT5XMLPATTERNS_INSTALL_TARGET_LIBS cp -dpf $(STAGING_DIR)/usr/lib/libQt5XmlPatterns*.so.* $(TARGET_DIR)/usr/lib endef endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5XMLPATTERNS_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/xmlpatterns $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +define QT5XMLPATTERNS_INSTALL_TARGET_CMDS + $(QT5XMLPATTERNS_INSTALL_TARGET_LIBS) + $(QT5XMLPATTERNS_INSTALL_TARGET_EXAMPLES) +endef + $(eval $(generic-package)) diff --git a/bsp/buildroot/package/qtuio/qtuio.mk b/bsp/buildroot/package/qtuio/qtuio.mk index 5fa10a76..6238b50f 100644 --- a/bsp/buildroot/package/qtuio/qtuio.mk +++ b/bsp/buildroot/package/qtuio/qtuio.mk @@ -32,7 +32,7 @@ endef ifeq ($(BR2_QTUIO_EXAMPLES),y) define QTUIO_BUILD_EXAMPLES for example in $(QTUIO_EXAMPLES) ; do \ - $(MAKE) -C $(@D)/examples/$${example} || exit 1; \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/examples/$${example} || exit 1; \ done endef endif diff --git a/bsp/buildroot/package/quagga/Config.in b/bsp/buildroot/package/quagga/Config.in index 56b8cad9..4eacaf04 100644 --- a/bsp/buildroot/package/quagga/Config.in +++ b/bsp/buildroot/package/quagga/Config.in @@ -25,9 +25,9 @@ config BR2_PACKAGE_QUAGGA_TCP_ZEBRA on different hosts. config BR2_PACKAGE_QUAGGA_BGPD - bool "BPGv4+ protocol" + bool "BGPv4+ protocol" help - Build bpgd daemon. + Build bgpd daemon. config BR2_PACKAGE_QUAGGA_BGP_ANNOUNCE bool "BGP route announcement" diff --git a/bsp/buildroot/package/quagga/quagga.hash b/bsp/buildroot/package/quagga/quagga.hash index 23a0a824..6da37cf8 100644 --- a/bsp/buildroot/package/quagga/quagga.hash +++ b/bsp/buildroot/package/quagga/quagga.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 d284af5dd875dbba90ab875d40db5d68fdc9ede17a76f2af525f85344be56767 quagga-1.0.20160315.tar.xz +sha256 b5a94e5bdad3062e04595a5692b8cc435f0a85102f75dfdca0a06d093b4ef63f quagga-1.1.1.tar.gz diff --git a/bsp/buildroot/package/quagga/quagga.mk b/bsp/buildroot/package/quagga/quagga.mk index ad2aff4e..c17ceaad 100644 --- a/bsp/buildroot/package/quagga/quagga.mk +++ b/bsp/buildroot/package/quagga/quagga.mk @@ -4,10 +4,9 @@ # ################################################################################ -QUAGGA_VERSION = 1.0.20160315 -QUAGGA_SOURCE = quagga-$(QUAGGA_VERSION).tar.xz +QUAGGA_VERSION = 1.1.1 QUAGGA_SITE = http://download.savannah.gnu.org/releases/quagga -QUAGGA_DEPENDENCIES = host-gawk +QUAGGA_DEPENDENCIES = host-gawk host-pkgconf QUAGGA_LICENSE = GPLv2+ QUAGGA_LICENSE_FILES = COPYING @@ -29,6 +28,13 @@ else QUAGGA_CONF_OPTS += --disable-capabilities endif +ifeq ($(BR2_PACKAGE_PROTOBUF_C),y) +QUAGGA_CONF_OPTS += --enable-protobuf +QUAGGA_DEPENDENCIES += protobuf-c +else +QUAGGA_CONF_OPTS += --disable-protobuf +endif + QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_ZEBRA),--enable-zebra,--disable-zebra) QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_BGPD),--enable-bgpd,--disable-bgpd) QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_RIPD),--enable-ripd,--disable-ripd) diff --git a/bsp/buildroot/package/quota/0003-remove-non-posix-types.patch b/bsp/buildroot/package/quota/0003-remove-non-posix-types.patch new file mode 100644 index 00000000..869c85f2 --- /dev/null +++ b/bsp/buildroot/package/quota/0003-remove-non-posix-types.patch @@ -0,0 +1,200 @@ +Use proper C99 integer types + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +[Thomas: borrowed from OpenEmbedded.] +Signed-off-by: Thomas Petazzoni + +Index: quota-tools/bylabel.c +=================================================================== +--- quota-tools.orig/bylabel.c ++++ quota-tools/bylabel.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + #include "bylabel.h" + #include "common.h" +@@ -37,32 +38,32 @@ static struct uuidCache_s { + + #define EXT2_SUPER_MAGIC 0xEF53 + struct ext2_super_block { +- u_char s_dummy1[56]; +- u_char s_magic[2]; +- u_char s_dummy2[46]; +- u_char s_uuid[16]; +- u_char s_volume_name[16]; ++ uint8_t s_dummy1[56]; ++ uint8_t s_magic[2]; ++ uint8_t s_dummy2[46]; ++ uint8_t s_uuid[16]; ++ uint8_t s_volume_name[16]; + }; + +-#define ext2magic(s) ((uint) s.s_magic[0] + (((uint) s.s_magic[1]) << 8)) ++#define ext2magic(s) ((uint32_t) s.s_magic[0] + (((uint32_t) s.s_magic[1]) << 8)) + + #define XFS_SUPER_MAGIC "XFSB" + #define XFS_SUPER_MAGIC2 "BSFX" + struct xfs_super_block { +- u_char s_magic[4]; +- u_char s_dummy[28]; +- u_char s_uuid[16]; +- u_char s_dummy2[60]; +- u_char s_fsname[12]; ++ uint8_t s_magic[4]; ++ uint8_t s_dummy[28]; ++ uint8_t s_uuid[16]; ++ uint8_t s_dummy2[60]; ++ uint8_t s_fsname[12]; + }; + + #define REISER_SUPER_MAGIC "ReIsEr2Fs" + struct reiserfs_super_block { +- u_char s_dummy1[52]; +- u_char s_magic[10]; +- u_char s_dummy2[22]; +- u_char s_uuid[16]; +- u_char s_volume_name[16]; ++ uint8_t s_dummy1[52]; ++ uint8_t s_magic[10]; ++ uint8_t s_dummy2[22]; ++ uint8_t s_uuid[16]; ++ uint8_t s_volume_name[16]; + }; + + static inline unsigned short swapped(unsigned short a) +@@ -222,7 +223,7 @@ static char *get_spec_by_x(int n, const + return NULL; + } + +-static u_char fromhex(char c) ++static uint8_t fromhex(char c) + { + if (isdigit(c)) + return (c - '0'); +@@ -234,7 +235,7 @@ static u_char fromhex(char c) + + static char *get_spec_by_uuid(const char *s) + { +- u_char uuid[16]; ++ uint8_t uuid[16]; + int i; + + if (strlen(s) != 36 || s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-') +Index: quota-tools/quot.c +=================================================================== +--- quota-tools.orig/quot.c ++++ quota-tools/quot.c +@@ -47,6 +47,7 @@ + #include + #include + #include ++#include + + #include "pot.h" + #include "quot.h" +@@ -56,8 +57,8 @@ + #include "quotasys.h" + + #define TSIZE 500 +-static __uint64_t sizes[TSIZE]; +-static __uint64_t overflow; ++static uint64_t sizes[TSIZE]; ++static uint64_t overflow; + + static int aflag; + static int cflag; +@@ -72,7 +73,7 @@ static time_t now; + char *progname; + + static void mounttable(void); +-static char *idname(__uint32_t, int); ++static char *idname(uint32_t, int); + static void report(const char *, const char *, int); + static void creport(const char *, const char *); + +@@ -173,7 +174,7 @@ static int qcmp(du_t * p1, du_t * p2) + static void creport(const char *file, const char *fsdir) + { + int i; +- __uint64_t t = 0; ++ uint64_t t = 0; + + printf(_("%s (%s):\n"), file, fsdir); + for (i = 0; i < TSIZE - 1; i++) +@@ -219,7 +220,7 @@ static void report(const char *file, con + } + } + +-static idcache_t *getnextent(int type, __uint32_t id, int byid) ++static idcache_t *getnextent(int type, uint32_t id, int byid) + { + struct passwd *pw; + struct group *gr; +@@ -240,7 +241,7 @@ static idcache_t *getnextent(int type, _ + return &idc; + } + +-static char *idname(__uint32_t id, int type) ++static char *idname(uint32_t id, int type) + { + idcache_t *ncp, *idp; + static idcache_t nc[2][NID]; +@@ -286,8 +287,8 @@ static void acctXFS(xfs_bstat_t *p) + { + register du_t *dp; + du_t **hp; +- __uint64_t size; +- __uint32_t i, id; ++ uint64_t size; ++ uint32_t i, id; + + if ((p->bs_mode & S_IFMT) == 0) + return; +Index: quota-tools/quot.h +=================================================================== +--- quota-tools.orig/quot.h ++++ quota-tools/quot.h +@@ -35,18 +35,18 @@ + #define SEC24HR (60*60*24) /* seconds per day */ + + typedef struct { +- __uint32_t id; ++ uint32_t id; + char name[UT_NAMESIZE + 1]; + } idcache_t; + + typedef struct du { + struct du *next; +- __uint64_t blocks; +- __uint64_t blocks30; +- __uint64_t blocks60; +- __uint64_t blocks90; +- __uint64_t nfiles; +- __uint32_t id; ++ uint64_t blocks; ++ uint64_t blocks30; ++ uint64_t blocks60; ++ uint64_t blocks90; ++ uint64_t nfiles; ++ uint32_t id; + } du_t; + + #define NDU 60000 +Index: quota-tools/rquota_server.c +=================================================================== +--- quota-tools.orig/rquota_server.c ++++ quota-tools/rquota_server.c +@@ -60,7 +60,7 @@ extern char nfs_pseudoroot[PATH_MAX]; + */ + extern struct authunix_parms *unix_cred; + +-int in_group(gid_t * gids, u_int len, gid_t gid) ++int in_group(gid_t * gids, uint32_t len, gid_t gid) + { + gid_t *gidsp = gids + len; + diff --git a/bsp/buildroot/package/quota/0004-import-sys-cdefs.patch b/bsp/buildroot/package/quota/0004-import-sys-cdefs.patch new file mode 100644 index 00000000..9acd1fe4 --- /dev/null +++ b/bsp/buildroot/package/quota/0004-import-sys-cdefs.patch @@ -0,0 +1,18 @@ +Add missing include + +quota.h uses the __P definition, so it must include . + +Signed-off-by: Thomas Petazzoni + +Index: b/quota.h +=================================================================== +--- a/quota.h ++++ b/quota.h +@@ -2,6 +2,7 @@ + #define GUARD_QUOTA_H + + #include ++#include + + typedef u_int32_t qid_t; /* Type in which we store ids in memory */ + typedef int64_t qsize_t; /* Type in which we store size limitations */ diff --git a/bsp/buildroot/package/quota/0005-include-fcntl.patch b/bsp/buildroot/package/quota/0005-include-fcntl.patch new file mode 100644 index 00000000..fe7ea988 --- /dev/null +++ b/bsp/buildroot/package/quota/0005-include-fcntl.patch @@ -0,0 +1,20 @@ +Include to get loff_t definition + +Fixes the following build issue with musl: + +dqblk_v2.h:32:2: error: unknown type name ‘loff_t’ + +Signed-off-by: Thomas Petazzoni + +Index: b/dqblk_v2.h +=================================================================== +--- a/dqblk_v2.h ++++ b/dqblk_v2.h +@@ -8,6 +8,7 @@ + #define GUARD_DQBLK_V2_H + + #include ++#include + #include "quota_tree.h" + + #define Q_V2_GETQUOTA 0x0D00 /* Get limits and usage */ diff --git a/bsp/buildroot/package/qwt/Config.in b/bsp/buildroot/package/qwt/Config.in index dabbda27..a678637b 100644 --- a/bsp/buildroot/package/qwt/Config.in +++ b/bsp/buildroot/package/qwt/Config.in @@ -30,6 +30,7 @@ config BR2_PACKAGE_QWT_OPENGL depends on (BR2_PACKAGE_HAS_LIBGLES && BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_QT) || \ (BR2_PACKAGE_QT5_GL_AVAILABLE && BR2_PACKAGE_QT5) select BR2_PACKAGE_QT_OPENGL if BR2_PACKAGE_QT + select BR2_PACKAGE_QT5BASE_OPENGL if BR2_PACKAGE_QT5 select BR2_PACKAGE_QT5BASE_OPENGL_LIB if BR2_PACKAGE_QT5 endif diff --git a/bsp/buildroot/package/qwt/qwt.mk b/bsp/buildroot/package/qwt/qwt.mk index da30dd24..d1bb5245 100644 --- a/bsp/buildroot/package/qwt/qwt.mk +++ b/bsp/buildroot/package/qwt/qwt.mk @@ -54,13 +54,13 @@ endef # that when building with qmake, -L$(STAGING_DIR)/usr/lib is used and # not -L/usr/lib. define QWT_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D) install INSTALL_ROOT=$(STAGING_DIR) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install INSTALL_ROOT=$(STAGING_DIR) $(SED) "s%QWT_INSTALL_PREFIX = .*%QWT_INSTALL_PREFIX = $(STAGING_DIR)/usr%" \ $(STAGING_DIR)/usr/mkspecs/features/qwtconfig.pri endef define QWT_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) install INSTALL_ROOT=$(TARGET_DIR) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install INSTALL_ROOT=$(TARGET_DIR) rm -Rf $(TARGET_DIR)/usr/mkspecs endef diff --git a/bsp/buildroot/package/rabbitmq-c/Config.in b/bsp/buildroot/package/rabbitmq-c/Config.in index 0d08233a..b330c904 100644 --- a/bsp/buildroot/package/rabbitmq-c/Config.in +++ b/bsp/buildroot/package/rabbitmq-c/Config.in @@ -1,9 +1,6 @@ config BR2_PACKAGE_RABBITMQ_C bool "rabbitmq-c" depends on BR2_TOOLCHAIN_HAS_THREADS - # too old uClibc, not providing posix_spawn functions - # http://autobuild.buildroot.net/results/a6c3e79c61c5a535970d03bf37b068349f766a7f/ - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX help This is a C-language AMQP client library for use with v2.0+ of the RabbitMQ broker. @@ -12,4 +9,3 @@ config BR2_PACKAGE_RABBITMQ_C comment "rabbitmq-c needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX diff --git a/bsp/buildroot/package/rabbitmq-server/Config.in b/bsp/buildroot/package/rabbitmq-server/Config.in new file mode 100644 index 00000000..6a323aff --- /dev/null +++ b/bsp/buildroot/package/rabbitmq-server/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_RABBITMQ_SERVER + bool "rabbitmq-server" + depends on BR2_PACKAGE_ERLANG + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_OPENSSL # Required to build Erlang's crypto and ssl + # applications + help + High-performance AMQP-compliant message broker written in Erlang. + + http://www.rabbitmq.com + +comment "rabbitmq-server needs erlang" + depends on !BR2_PACKAGE_ERLANG diff --git a/bsp/buildroot/package/rabbitmq-server/S50rabbitmq-server b/bsp/buildroot/package/rabbitmq-server/S50rabbitmq-server new file mode 100755 index 00000000..faf248de --- /dev/null +++ b/bsp/buildroot/package/rabbitmq-server/S50rabbitmq-server @@ -0,0 +1,28 @@ +#!/bin/sh +# +# Start/stop rabbitmq-server +# + +INSTALLUSER=rabbitmq +RUNDIR=/var/run/rabbitmq + +case "$1" in + start) + install -d -o "$INSTALLUSER" -g "$INSTALLUSER" "$RUNDIR" || exit 1 + printf "Starting rabbitmq-server: " + su -c "/usr/sbin/rabbitmq-server -detached" - "$INSTALLUSER" 2>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping rabbitmq-server: " + su -c "/usr/sbin/rabbitmqctl stop" - "$INSTALLUSER" + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + "$0" stop || true + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/bsp/buildroot/package/rabbitmq-server/rabbitmq-server.hash b/bsp/buildroot/package/rabbitmq-server/rabbitmq-server.hash new file mode 100644 index 00000000..3cd412dd --- /dev/null +++ b/bsp/buildroot/package/rabbitmq-server/rabbitmq-server.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 395689bcf57fd48aed452fcd43ff9a992de40067d3ea5c44e14680d69db7b78e rabbitmq-server-3.6.6.tar.xz diff --git a/bsp/buildroot/package/rabbitmq-server/rabbitmq-server.mk b/bsp/buildroot/package/rabbitmq-server/rabbitmq-server.mk new file mode 100644 index 00000000..d55a8cc4 --- /dev/null +++ b/bsp/buildroot/package/rabbitmq-server/rabbitmq-server.mk @@ -0,0 +1,55 @@ +############################################################# +# +# rabbitmq-server +# +############################################################# + +RABBITMQ_SERVER_VERSION = 3.6.6 +RABBITMQ_SERVER_SITE = http://www.rabbitmq.com/releases/rabbitmq-server/v$(RABBITMQ_SERVER_VERSION) +RABBITMQ_SERVER_SOURCE = rabbitmq-server-$(RABBITMQ_SERVER_VERSION).tar.xz +RABBITMQ_SERVER_LICENSE = MPLv1.1, Apache-2.0, BSD-2c, EPL, MIT, MPLv2.0 +RABBITMQ_SERVER_LICENSE_FILES = LICENSE-MPL-RabbitMQ \ + LICENSE LICENSE-APACHE2-ExplorerCanvas \ + LICENSE-APL2-Rebar LICENSE-APL2-Stomp-Websocket \ + LICENSE-BSD-base64js LICENSE-BSD-glMatrix \ + LICENSE-EPL-OTP LICENSE-MIT-EJS10 \ + LICENSE-MIT-Flot LICENSE-MIT-jQuery164 \ + LICENSE-MIT-Mochi LICENSE-MIT-Mochiweb \ + LICENSE-MIT-Sammy060 LICENSE-MIT-SockJS \ + LICENSE-MPL2 +RABBITMQ_SERVER_DEPENDENCIES = host-libxslt host-zip erlang libxslt +RABBITMQ_SERVER_TARGET_BINS = rabbitmq-plugins rabbitmq-server rabbitmqctl rabbitmq-env rabbitmq-defaults + +define RABBITMQ_SERVER_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define RABBITMQ_SERVER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install + + for bin in $(RABBITMQ_SERVER_TARGET_BINS); do \ + ln -sf ../lib/erlang/lib/rabbitmq_server-$(RABBITMQ_SERVER_VERSION)/sbin/$$bin \ + $(TARGET_DIR)/usr/sbin/$$bin; \ + done +endef + +define RABBITMQ_SERVER_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/rabbitmq-server/rabbitmq-server.service \ + $(TARGET_DIR)/usr/lib/systemd/system/rabbitmq-server.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/rabbitmq-server.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service +endef + +define RABBITMQ_SERVER_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/rabbitmq-server/S50rabbitmq-server \ + $(TARGET_DIR)/etc/init.d/S50rabbitmq-server +endef + +define RABBITMQ_SERVER_USERS + rabbitmq -1 rabbitmq -1 * /var/lib/rabbitmq /bin/sh - rabbitmq-server daemon +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/rabbitmq-server/rabbitmq-server.service b/bsp/buildroot/package/rabbitmq-server/rabbitmq-server.service new file mode 100644 index 00000000..268b4bdc --- /dev/null +++ b/bsp/buildroot/package/rabbitmq-server/rabbitmq-server.service @@ -0,0 +1,15 @@ +[Unit] +Description=RabbitMQ Messaging Server +After=syslog.target network.target + +[Service] +Type=simple +User=rabbitmq +Group=rabbitmq +Environment=HOME=/var/lib/rabbitmq +WorkingDirectory=/var/lib/rabbitmq +ExecStart=/usr/sbin/rabbitmq-server +ExecStop=/usr/sbin/rabbitmqctl stop + +[Install] +WantedBy=multi-user.target diff --git a/bsp/buildroot/package/rapidjson/rapidjson.hash b/bsp/buildroot/package/rapidjson/rapidjson.hash index baaced9a..bde8319c 100644 --- a/bsp/buildroot/package/rapidjson/rapidjson.hash +++ b/bsp/buildroot/package/rapidjson/rapidjson.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 c3711ed2b3c76a5565ee9f0128bb4ec6753dbcc23450b713842df8f236d08666 rapidjson-v1.0.2.tar.gz +sha256 bf7ced29704a1e696fbccf2a2b4ea068e7774fa37f6d7dd4039d0787f8bed98e rapidjson-v1.1.0.tar.gz diff --git a/bsp/buildroot/package/rapidjson/rapidjson.mk b/bsp/buildroot/package/rapidjson/rapidjson.mk index 5da407b7..d06f5296 100644 --- a/bsp/buildroot/package/rapidjson/rapidjson.mk +++ b/bsp/buildroot/package/rapidjson/rapidjson.mk @@ -4,7 +4,7 @@ # ################################################################################ -RAPIDJSON_VERSION = v1.0.2 +RAPIDJSON_VERSION = v1.1.0 RAPIDJSON_SITE = $(call github,miloyip,rapidjson,$(RAPIDJSON_VERSION)) RAPIDJSON_LICENSE = MIT RAPIDJSON_LICENSE_FILES = license.txt diff --git a/bsp/buildroot/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch b/bsp/buildroot/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch new file mode 100644 index 00000000..fcf1b3cc --- /dev/null +++ b/bsp/buildroot/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch @@ -0,0 +1,38 @@ +[PATCH] ensure internal print operations are declared before use + +Stock rapidxml-1.13 does not allow implementers of the +`rapidxml_print.hpp` header to build under GCC 4.7 (or newer) due to +compliation issues. This is a result of "Name lookup changes" introduced +in GCC 4.7 [1]. The following adds forward declarations required to +compile with GCC 4.7+. + +This issue has been mentioned upstream [2], but it has yet to be fixed +in official sources. + +[1]: https://gcc.gnu.org/gcc-4.7/porting_to.html +[2]: https://sourceforge.net/p/rapidxml/bugs/16/ + +Signed-off-by: James Knight + +Index: b/rapidxml_print.hpp +=================================================================== +--- a/rapidxml_print.hpp ++++ b/rapidxml_print.hpp +@@ -101,7 +101,16 @@ + + /////////////////////////////////////////////////////////////////////////// + // Internal printing operations +- ++ ++ template inline OutIt print_cdata_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_children(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_comment_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_data_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_declaration_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_doctype_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_element_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_pi_node(OutIt out, const xml_node *node, int flags, int indent); ++ + // Print node + template + inline OutIt print_node(OutIt out, const xml_node *node, int flags, int indent) diff --git a/bsp/buildroot/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch b/bsp/buildroot/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch new file mode 100644 index 00000000..cdab6070 --- /dev/null +++ b/bsp/buildroot/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch @@ -0,0 +1,28 @@ +From 5b015e67af27679f4ca8f7f5f2f71020ec054b0c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 2 Dec 2016 23:09:44 +0100 +Subject: [PATCH] Makefile: allow passing CFLAGS/LDFLAGS + +This might be needed to pass some custom CFLAGS/LDFLAGS when building +rpiboot. + +Submitted-upstream: https://github.com/raspberrypi/usbboot/pull/2 +Signed-off-by: Thomas Petazzoni +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 3e7d1e4..d9a7220 100755 +--- a/Makefile ++++ b/Makefile +@@ -1,5 +1,5 @@ + rpiboot: main.c +- $(CC) -g -o $@ $< -lusb-1.0 ++ $(CC) -g $(CFLAGS) -o $@ $< -lusb-1.0 $(LDFLAGS) + + install: rpiboot + cp rpiboot /usr/bin +-- +2.7.4 + diff --git a/bsp/buildroot/package/raspberrypi-usbboot/0002-Makefile-add-DESTDIR-support.patch b/bsp/buildroot/package/raspberrypi-usbboot/0002-Makefile-add-DESTDIR-support.patch new file mode 100644 index 00000000..c37d5a1e --- /dev/null +++ b/bsp/buildroot/package/raspberrypi-usbboot/0002-Makefile-add-DESTDIR-support.patch @@ -0,0 +1,49 @@ +From 905bc741b189d67160b27551b8ad01459c2707a0 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 2 Dec 2016 23:10:37 +0100 +Subject: [PATCH] Makefile: add DESTDIR support + +This allows installing rpiboot outside of /usr if needed. + +Submitted-upstream: https://github.com/raspberrypi/usbboot/pull/2 +Signed-off-by: Thomas Petazzoni +--- + Makefile | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/Makefile b/Makefile +index d9a7220..7835b7f 100755 +--- a/Makefile ++++ b/Makefile +@@ -2,18 +2,18 @@ rpiboot: main.c + $(CC) -g $(CFLAGS) -o $@ $< -lusb-1.0 $(LDFLAGS) + + install: rpiboot +- cp rpiboot /usr/bin +- mkdir -p /usr/share/rpiboot +- cp usbbootcode.bin /usr/share/rpiboot +- cp msd.elf /usr/share/rpiboot +- cp buildroot.elf /usr/share/rpiboot ++ cp rpiboot $(DESTDIR)/usr/bin ++ mkdir -p $(DESTDIR)//usr/share/rpiboot ++ cp usbbootcode.bin $(DESTDIR)/usr/share/rpiboot ++ cp msd.elf $(DESTDIR)/usr/share/rpiboot ++ cp buildroot.elf $(DESTDIR)/usr/share/rpiboot + + uninstall: +- rm -f /usr/bin/rpiboot +- rm -f /usr/share/rpiboot/usbbootcode.bin +- rm -f /usr/share/rpiboot/msd.elf +- rm -f /usr/share/rpiboot/buildroot.elf +- rmdir --ignore-fail-on-non-empty /usr/share/rpiboot/ ++ rm -f $(DESTDIR)/usr/bin/rpiboot ++ rm -f $(DESTDIR)/usr/share/rpiboot/usbbootcode.bin ++ rm -f $(DESTDIR)/usr/share/rpiboot/msd.elf ++ rm -f $(DESTDIR)/usr/share/rpiboot/buildroot.elf ++ rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/rpiboot/ + + clean: + rm rpiboot +-- +2.7.4 + diff --git a/bsp/buildroot/package/raspberrypi-usbboot/0003-main.c-rework-logic-to-find-def1-def2-and-def3-files.patch b/bsp/buildroot/package/raspberrypi-usbboot/0003-main.c-rework-logic-to-find-def1-def2-and-def3-files.patch new file mode 100644 index 00000000..30cde49f --- /dev/null +++ b/bsp/buildroot/package/raspberrypi-usbboot/0003-main.c-rework-logic-to-find-def1-def2-and-def3-files.patch @@ -0,0 +1,127 @@ +From 935894908dc24acda0acea7d211a9d80e55ecadb Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 2 Dec 2016 23:43:23 +0100 +Subject: [PATCH] main.c: rework logic to find def1, def2 and def3 files + +The current logic to find def1, def2 and def3 first tries to find them +in the local directory, and if they are not available, find them in +/usr/share. + +However, this doesn't work if rpiboot and its related files are +installed, but not in /usr. In order to address this use-case, this +commit reworks the logic to find the file path. + +A new function, getfilepath() is created. If the requested file is +available in the current directory, it is used. If not, then the path to +the file is inferred from the location of the currently running +program. I.e if we run /home/foo/sys/bin/rpiboot, then we will search +def1 in usbbootcode.bin in +/home/foo/sys/bin/../share/rpiboot/usbbootcode.bin. + +This continues to address the case of an installation in /usr, while +allowing installation in other locations as well. + +Submitted-upstream: https://github.com/raspberrypi/usbboot/pull/2 +Signed-off-by: Thomas Petazzoni +--- + main.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 48 insertions(+), 13 deletions(-) + +diff --git a/main.c b/main.c +index 1b4e042..7c571d6 100755 +--- a/main.c ++++ b/main.c +@@ -1,10 +1,12 @@ +-#include "libusb-1.0/libusb.h" ++#define _GNU_SOURCE + #include + #include + #include +- ++#include + #include + ++#include "libusb-1.0/libusb.h" ++ + int verbose = 0; + int out_ep = 1; + int in_ep = 2; +@@ -146,6 +148,37 @@ int ep_read(unsigned char *buf, int len, libusb_device_handle * usb_device) + return len; + } + ++char *getfilepath(char *filename) ++{ ++ char *progpath, *filepath, *progdir; ++ ssize_t len; ++ ++ /* If file is available locally, use it */ ++ if (access(filename, F_OK) != -1) ++ return filename; ++ ++ /* Otherwise, use the installed version */ ++ progpath = malloc(PATH_MAX); ++ len = readlink("/proc/self/exe", progpath, PATH_MAX - 1); ++ if (len == -1) ++ { ++ free(progpath); ++ return NULL; ++ } ++ ++ progpath[len] = '\0'; ++ progdir = dirname(progpath); ++ if (asprintf(&filepath, "%s/../share/rpiboot/%s", progdir, filename) < 0) ++ { ++ free(progpath); ++ return NULL; ++ } ++ ++ free(progpath); ++ ++ return filepath; ++} ++ + int main(int argc, char *argv[]) + { + int result; +@@ -157,13 +190,9 @@ int main(int argc, char *argv[]) + int last_serial = -1; + FILE *fp1, *fp2, *fp; + +- char def1_inst[] = "/usr/share/rpiboot/usbbootcode.bin"; +- char def2_inst[] = "/usr/share/rpiboot/msd.elf"; +- char def3_inst[] = "/usr/share/rpiboot/buildroot.elf"; +- +- char def1_loc[] = "./usbbootcode.bin"; +- char def2_loc[] = "./msd.elf"; +- char def3_loc[] = "./buildroot.elf"; ++ char def1_name[] = "usbbootcode.bin"; ++ char def2_name[] = "msd.elf"; ++ char def3_name[] = "buildroot.elf"; + + char *def1, *def2, *def3; + +@@ -171,10 +200,16 @@ int main(int argc, char *argv[]) + char *fatimage = NULL, *executable = NULL; + int loop = 0; + +-// if local file version exists use it else use installed +- if( access( def1_loc, F_OK ) != -1 ) { def1 = def1_loc; } else { def1 = def1_inst; } +- if( access( def2_loc, F_OK ) != -1 ) { def2 = def2_loc; } else { def2 = def2_inst; } +- if( access( def3_loc, F_OK ) != -1 ) { def3 = def3_loc; } else { def3 = def3_inst; } ++ def1 = getfilepath(def1_name); ++ def2 = getfilepath(def2_name); ++ def3 = getfilepath(def3_name); ++ ++ if (!def1 || !def2 || !def3) ++ { ++ fprintf(stderr, "One of %s, %s or %s cannot be found\n", ++ def1_name, def2_name, def3_name); ++ exit(1); ++ } + + stage1 = def1; + stage2 = def2; +-- +2.7.4 + diff --git a/bsp/buildroot/package/raspberrypi-usbboot/Config.in.host b/bsp/buildroot/package/raspberrypi-usbboot/Config.in.host new file mode 100644 index 00000000..dce2fccd --- /dev/null +++ b/bsp/buildroot/package/raspberrypi-usbboot/Config.in.host @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT + bool "host raspberrypi-usbboot" + depends on BR2_arm + help + This package builds and install the "rpiboot" tool for the + host machine. This tool allows to boot the Broadcom BCM + processor used in the RaspberryPi to boot over USB, and have + it expose a USB mass storage device in order to reflash the + built-in storage of the RaspberryPi (useful for the eMMC + built into the Compute module). + + https://github.com/raspberrypi/usbboot diff --git a/bsp/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.hash b/bsp/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.hash new file mode 100644 index 00000000..94860a9d --- /dev/null +++ b/bsp/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a8893f8a10522bd58866eb34e7f0d7731c43200d585f122681f428cdef76e676 raspberrypi-usbboot-f4e3f0f9a3c64d846ba53ec3367e33a4f9a7d051.tar.gz diff --git a/bsp/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.mk b/bsp/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.mk new file mode 100644 index 00000000..70186179 --- /dev/null +++ b/bsp/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# raspberrypi-usbboot +# +################################################################################ + +RASPBERRYPI_USBBOOT_VERSION = f4e3f0f9a3c64d846ba53ec3367e33a4f9a7d051 +RASPBERRYPI_USBBOOT_SITE = $(call github,raspberrypi,usbboot,$(RASPBERRYPI_USBBOOT_VERSION)) + +HOST_RASPBERRYPI_USBBOOT_DEPENDENCIES = host-libusb + +define HOST_RASPBERRYPI_USBBOOT_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) +endef + +define HOST_RASPBERRYPI_USBBOOT_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \ + DESTDIR=$(HOST_DIR) install +endef + +$(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/readline/0001-patchlevel-1.patch b/bsp/buildroot/package/readline/0001-patchlevel-1.patch deleted file mode 100644 index 8593073b..00000000 --- a/bsp/buildroot/package/readline/0001-patchlevel-1.patch +++ /dev/null @@ -1,47 +0,0 @@ -From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-001 - -Signed-off-by: Gustavo Zacarias - - READLINE PATCH REPORT - ===================== - -Readline-Release: 6.3 -Patch-ID: readline63-001 - -Bug-Reported-by: Daan van Rossum -Bug-Reference-ID: <20140307072523.GA14250@flash.uchicago.edu> -Bug-Reference-URL: - -Bug-Description: - -The `.' command in vi mode cannot undo multi-key commands beginning with -`c', `d', and `y' (command plus motion specifier). - -Patch (apply with `patch -p0'): - -*** a/readline-6.3/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- b/readline.c 2014-03-07 15:20:33.000000000 -0500 -*************** -*** 965,969 **** - if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && - key != ANYOTHERKEY && -! rl_key_sequence_length == 1 && /* XXX */ - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); ---- 965,969 ---- - if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && - key != ANYOTHERKEY && -! _rl_dispatching_keymap == vi_movement_keymap && - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); -*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500 ---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400 -*************** -*** 1,3 **** - # Do not edit -- exists only for use by patch - -! 5 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - -! 1 diff --git a/bsp/buildroot/package/readline/0002-patchlevel-2.patch b/bsp/buildroot/package/readline/0002-patchlevel-2.patch deleted file mode 100644 index a8a94e08..00000000 --- a/bsp/buildroot/package/readline/0002-patchlevel-2.patch +++ /dev/null @@ -1,48 +0,0 @@ -From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-002 - -Signed-off-by: Gustavo Zacarias - - READLINE PATCH REPORT - ===================== - -Readline-Release: 6.3 -Patch-ID: readline63-002 - -Bug-Reported-by: Anatol Pomozov -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html - -Bug-Description: - -When in callback mode, some readline commands can cause readline to seg -fault by passing invalid contexts to callback functions. - -Patch (apply with `patch -p0'): - -*** a/readline-6.3/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- b/readline.c 2014-03-10 14:15:02.000000000 -0400 -*************** -*** 745,749 **** - - RL_CHECK_SIGNALS (); -! if (r == 0) /* success! */ - { - _rl_keyseq_chain_dispose (); ---- 745,750 ---- - - RL_CHECK_SIGNALS (); -! /* We only treat values < 0 specially to simulate recursion. */ -! if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ - { - _rl_keyseq_chain_dispose (); -*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500 ---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400 -*************** -*** 1,3 **** - # Do not edit -- exists only for use by patch - -! 1 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - -! 2 diff --git a/bsp/buildroot/package/readline/0003-patchlevel-3.patch b/bsp/buildroot/package/readline/0003-patchlevel-3.patch deleted file mode 100644 index 195ed554..00000000 --- a/bsp/buildroot/package/readline/0003-patchlevel-3.patch +++ /dev/null @@ -1,51 +0,0 @@ -From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-003 - -Signed-off-by: Gustavo Zacarias - - READLINE PATCH REPORT - ===================== - -Readline-Release: 6.3 -Patch-ID: readline63-003 - -Bug-Reported-by: -Bug-Reference-ID: -Bug-Reference-URL: - -Bug-Description: - -There are debugging functions in the readline release that are theoretically -exploitable as security problems. They are not public functions, but have -global linkage. - -Patch (apply with `patch -p0'): - -*** a/readline-6.3/util.c 2013-09-02 13:36:12.000000000 -0400 ---- b/util.c 2014-03-20 10:25:53.000000000 -0400 -*************** -*** 477,480 **** ---- 479,483 ---- - } - -+ #if defined (DEBUG) - #if defined (USE_VARARGS) - static FILE *_rl_tracefp; -*************** -*** 539,542 **** ---- 542,546 ---- - } - #endif -+ #endif /* DEBUG */ - - -*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500 ---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400 -*************** -*** 1,3 **** - # Do not edit -- exists only for use by patch - -! 2 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - -! 3 diff --git a/bsp/buildroot/package/readline/0004-patchlevel-4.patch b/bsp/buildroot/package/readline/0004-patchlevel-4.patch deleted file mode 100644 index 86ab3d50..00000000 --- a/bsp/buildroot/package/readline/0004-patchlevel-4.patch +++ /dev/null @@ -1,49 +0,0 @@ -From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-004 - -Signed-off-by: Gustavo Zacarias - - READLINE PATCH REPORT - ===================== - -Readline-Release: 6.3 -Patch-ID: readline63-004 - -Bug-Reported-by: Egmont Koblinger -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html - -Bug-Description: - -The signal handling changes to bash and readline (to avoid running any code -in a signal handler context) cause the cursor to be placed on the wrong -line of a multi-line command after a ^C interrupts editing. - -Patch (apply with `patch -p0'): - -*** a/readline-6.3-patched/display.c 2013-12-27 13:10:56.000000000 -0500 ---- b/display.c 2014-03-27 11:52:45.000000000 -0400 -*************** -*** 2678,2682 **** - if (_rl_echoing_p) - { -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin = 0; - fflush (rl_outstream); ---- 2678,2683 ---- - if (_rl_echoing_p) - { -! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin = 0; - fflush (rl_outstream); -*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500 ---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400 -*************** -*** 1,3 **** - # Do not edit -- exists only for use by patch - -! 3 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - -! 4 diff --git a/bsp/buildroot/package/readline/0005-patchlevel-5.patch b/bsp/buildroot/package/readline/0005-patchlevel-5.patch deleted file mode 100644 index 6e73c7f2..00000000 --- a/bsp/buildroot/package/readline/0005-patchlevel-5.patch +++ /dev/null @@ -1,62 +0,0 @@ -From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-005 - -Signed-off-by: Gustavo Zacarias - - READLINE PATCH REPORT - ===================== - -Readline-Release: 6.3 -Patch-ID: readline63-005 - -Bug-Reported-by: Juergen Daubert -Bug-Reference-ID: <20140303180430.GA7346@jue.netz> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00002.html - -Bug-Description: - -There are still applications using the deprecated Function/VFunction/etc. -typedefs in rltypedefs.h. This patch restores the typedefs, but attempts -to mark them as deprecated using gcc/clang attributes. Thanks to Max Horn -for the suggestion. - -Patch (apply with `patch -p0'): - -*** a/readline-6.3-patched/rltypedefs.h 2011-03-26 14:53:31.000000000 -0400 ---- b/rltypedefs.h 2014-04-10 11:30:45.000000000 -0400 -*************** -*** 27,30 **** ---- 27,49 ---- - #endif - -+ /* Old-style, attempt to mark as deprecated in some way people will notice. */ -+ -+ #if !defined (_FUNCTION_DEF) -+ # define _FUNCTION_DEF -+ -+ #if defined(__GNUC__) || defined(__clang__) -+ typedef int Function () __attribute__ ((deprecated)); -+ typedef void VFunction () __attribute__ ((deprecated)); -+ typedef char *CPFunction () __attribute__ ((deprecated)); -+ typedef char **CPPFunction () __attribute__ ((deprecated)); -+ #else -+ typedef int Function (); -+ typedef void VFunction (); -+ typedef char *CPFunction (); -+ typedef char **CPPFunction (); -+ #endif -+ -+ #endif /* _FUNCTION_DEF */ -+ - /* New style. */ - -*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500 ---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400 -*************** -*** 1,3 **** - # Do not edit -- exists only for use by patch - -! 4 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - -! 5 diff --git a/bsp/buildroot/package/readline/0006-patchlevel-6.patch b/bsp/buildroot/package/readline/0006-patchlevel-6.patch deleted file mode 100644 index b28b53c7..00000000 --- a/bsp/buildroot/package/readline/0006-patchlevel-6.patch +++ /dev/null @@ -1,67 +0,0 @@ -From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-006 - -Signed-off-by: Gustavo Zacarias - - READLINE PATCH REPORT - ===================== - -Readline-Release: 6.3 -Patch-ID: readline63-006 - -Bug-Reported-by: -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html - -Bug-Description: - -Using reverse-i-search when horizontal scrolling is enabled does not redisplay -the entire line containing the successful search results. - -Patch (apply with `patch -p0'): - -*** a/readline-6.3-patched/display.c 2014-04-08 18:19:36.000000000 -0400 ---- b/display.c 2014-04-20 18:32:52.000000000 -0400 -*************** -*** 1638,1642 **** - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line == 0 && !_rl_horizontal_scroll_mode && - current_invis_chars != visible_wrap_offset) - { ---- 1638,1642 ---- - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */ - current_invis_chars != visible_wrap_offset) - { -*************** -*** 1826,1831 **** - _rl_last_c_pos += bytes_to_insert; - - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! goto clear_rest_of_line; - } - } ---- 1826,1836 ---- - _rl_last_c_pos += bytes_to_insert; - -+ /* XXX - we only want to do this if we are at the end of the line -+ so we move there with _rl_move_cursor_relative */ - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! { -! _rl_move_cursor_relative (ne-new, new); -! goto clear_rest_of_line; -! } - } - } -*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500 ---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400 -*************** -*** 1,3 **** - # Do not edit -- exists only for use by patch - -! 5 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - -! 6 diff --git a/bsp/buildroot/package/readline/0007-patchlevel-7.patch b/bsp/buildroot/package/readline/0007-patchlevel-7.patch deleted file mode 100644 index 4c6f59cd..00000000 --- a/bsp/buildroot/package/readline/0007-patchlevel-7.patch +++ /dev/null @@ -1,51 +0,0 @@ -From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-007 - -Signed-off-by: Gustavo Zacarias - - READLINE PATCH REPORT - ===================== - -Readline-Release: 6.3 -Patch-ID: readline63-007 - -Bug-Reported-by: John Lenton -Bug-Reference-ID: -Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476 - -Bug-Description: - -Readline should allow SIGALRM and SIGVTALRM (if available) to `interrupt' -rl_getc and cause the handler to run when not in a signal handling context. - -Patch (apply with `patch -p0'): - -*** a/readline-6.3-patched/input.c 2014-01-10 15:07:08.000000000 -0500 ---- b/input.c 2014-05-30 16:20:56.000000000 -0400 -*************** -*** 535,540 **** ---- 538,551 ---- - else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM) - return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); -+ /* keyboard-generated signals of interest */ - else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT) - RL_CHECK_SIGNALS (); -+ /* non-keyboard-generated signals of interest */ -+ else if (_rl_caught_signal == SIGALRM -+ #if defined (SIGVTALRM) -+ || _rl_caught_signal == SIGVTALRM -+ #endif -+ ) -+ RL_CHECK_SIGNALS (); - - if (rl_signal_event_hook) -*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500 ---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400 -*************** -*** 1,3 **** - # Do not edit -- exists only for use by patch - -! 6 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - -! 7 diff --git a/bsp/buildroot/package/readline/0008-patchlevel-8.patch b/bsp/buildroot/package/readline/0008-patchlevel-8.patch deleted file mode 100644 index 412ba352..00000000 --- a/bsp/buildroot/package/readline/0008-patchlevel-8.patch +++ /dev/null @@ -1,51 +0,0 @@ -From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-008 - -Signed-off-by: Gustavo Zacarias - - READLINE PATCH REPORT - ===================== - -Readline-Release: 6.3 -Patch-ID: readline63-008 - -Bug-Reported-by: Jared Yanovich -Bug-Reference-ID: <20140625225019.GJ17044@nightderanger.psc.edu> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html - -Bug-Description: - -When the readline `revert-all-at-newline' option is set, pressing newline -when the current line is one retrieved from history results in a double free -and a segmentation fault. - -Patch (apply with `patch -p0'): - -*** a/readline-6.3-patched/misc.c 2012-09-01 18:03:11.000000000 -0400 ---- b/misc.c 2014-06-30 13:41:19.000000000 -0400 -*************** -*** 462,465 **** ---- 462,466 ---- - /* Set up rl_line_buffer and other variables from history entry */ - rl_replace_from_history (entry, 0); /* entry->line is now current */ -+ entry->data = 0; /* entry->data is now current undo list */ - /* Undo all changes to this history entry */ - while (rl_undo_list) -*************** -*** 469,473 **** - FREE (entry->line); - entry->line = savestring (rl_line_buffer); -- entry->data = 0; - } - entry = previous_history (); ---- 470,473 ---- -*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500 ---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400 -*************** -*** 1,3 **** - # Do not edit -- exists only for use by patch - -! 7 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - -! 8 diff --git a/bsp/buildroot/package/readline/readline.hash b/bsp/buildroot/package/readline/readline.hash index d8833e91..43f8c64b 100644 --- a/bsp/buildroot/package/readline/readline.hash +++ b/bsp/buildroot/package/readline/readline.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43 readline-6.3.tar.gz +sha256 750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334 readline-7.0.tar.gz diff --git a/bsp/buildroot/package/readline/readline.mk b/bsp/buildroot/package/readline/readline.mk index 76319708..ed4e1442 100644 --- a/bsp/buildroot/package/readline/readline.mk +++ b/bsp/buildroot/package/readline/readline.mk @@ -4,7 +4,7 @@ # ################################################################################ -READLINE_VERSION = 6.3 +READLINE_VERSION = 7.0 READLINE_SITE = $(BR2_GNU_MIRROR)/readline READLINE_INSTALL_STAGING = YES READLINE_DEPENDENCIES = ncurses diff --git a/bsp/buildroot/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch b/bsp/buildroot/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch new file mode 100644 index 00000000..6ad81a49 --- /dev/null +++ b/bsp/buildroot/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch @@ -0,0 +1,29 @@ +From f79d1d1bf9e6f54b67e5482602084fbff7fd9cc9 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Fri, 28 Oct 2016 12:50:34 -0300 +Subject: [PATCH] redis.conf: adjust defauts for buildroot + +Based on Martin Bark's patch hence archlinux package. +We just need to specify a proper db directory. + +Signed-off-by: Gustavo Zacarias +--- + redis.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/redis.conf b/redis.conf +index 22e00bc..3bb0430 100644 +--- a/redis.conf ++++ b/redis.conf +@@ -244,7 +244,7 @@ dbfilename dump.rdb + # The Append Only File will also be created inside this directory. + # + # Note that you must specify a directory here, not a file name. +-dir ./ ++dir /var/lib/redis/ + + ################################# REPLICATION ################################# + +-- +2.7.3 + diff --git a/bsp/buildroot/package/redis/0003-redis.conf-sane-defaults.patch b/bsp/buildroot/package/redis/0003-redis.conf-sane-defaults.patch deleted file mode 100644 index 6ee3f210..00000000 --- a/bsp/buildroot/package/redis/0003-redis.conf-sane-defaults.patch +++ /dev/null @@ -1,37 +0,0 @@ -Taken from archlinux redis package -See https://projects.archlinux.org/svntogit/community.git/tree/trunk/redis.conf-sane-defaults.patch?h=packages/redis&id=5b2491ea61b746f289acebd12bc66e337d7e5b88 - -Signed-off-by: Martin Bark - -========================================================================= -diff --git a/redis.conf b/redis.conf -index 6efb6ac..344e021 100644 ---- a/redis.conf -+++ b/redis.conf -@@ -61,7 +61,7 @@ tcp-backlog 511 - # Examples: - # - # bind 192.168.1.100 10.0.0.1 --# bind 127.0.0.1 -+bind 127.0.0.1 - - # Specify the path for the Unix socket that will be used to listen for - # incoming connections. There is no default, so Redis will not listen -@@ -87,7 +87,7 @@ timeout 0 - # On other kernels the period depends on the kernel configuration. - # - # A reasonable value for this option is 60 seconds. --tcp-keepalive 0 -+tcp-keepalive 60 - - # Specify the server verbosity level. - # This can be one of: -@@ -184,7 +184,7 @@ dbfilename dump.rdb - # The Append Only File will also be created inside this directory. - # - # Note that you must specify a directory here, not a file name. --dir ./ -+dir /var/lib/redis/ - - ################################# REPLICATION ################################# - diff --git a/bsp/buildroot/package/redis/redis.hash b/bsp/buildroot/package/redis/redis.hash index 07783f54..3cd86470 100644 --- a/bsp/buildroot/package/redis/redis.hash +++ b/bsp/buildroot/package/redis/redis.hash @@ -1,4 +1,4 @@ # From https://github.com/antirez/redis-hashes/blob/master/README -sha1 e56b4b7e033ae8dbf311f9191cf6fdf3ae974d1c redis-3.0.7.tar.gz +sha1 6780d1abb66f33a97aad0edbe020403d0a15b67f redis-3.2.8.tar.gz # Calculated based on the hash above -sha256 b2a791c4ea3bb7268795c45c6321ea5abcc24457178373e6a6e3be6372737f23 redis-3.0.7.tar.gz +sha256 61b373c23d18e6cc752a69d5ab7f676c6216dc2853e46750a8c4ed791d68482c redis-3.2.8.tar.gz diff --git a/bsp/buildroot/package/redis/redis.mk b/bsp/buildroot/package/redis/redis.mk index a9df6e71..8ab6e726 100644 --- a/bsp/buildroot/package/redis/redis.mk +++ b/bsp/buildroot/package/redis/redis.mk @@ -4,7 +4,7 @@ # ################################################################################ -REDIS_VERSION = 3.0.7 +REDIS_VERSION = 3.2.8 REDIS_SITE = http://download.redis.io/releases REDIS_LICENSE = BSD-3c (core); MIT and BSD family licenses (Bundled components) REDIS_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/riemann-c-client/Config.in b/bsp/buildroot/package/riemann-c-client/Config.in new file mode 100644 index 00000000..e9982b2f --- /dev/null +++ b/bsp/buildroot/package/riemann-c-client/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_RIEMANN_C_CLIENT + bool "riemann-c-client" + depends on BR2_INSTALL_LIBSTDCPP # protobuf-c + depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf-c + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" # protobuf-c + select BR2_PACKAGE_PROTOBUF_C + help + Riemann-c-client is a C client library for the Riemann + monitoring system, providing a convenient and simple API, + high test coverage and a copyleft license, along with API + and ABI stability. + + https://github.com/algernon/riemann-c-client + +comment "riemann-c-client needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" diff --git a/bsp/buildroot/package/riemann-c-client/riemann-c-client.hash b/bsp/buildroot/package/riemann-c-client/riemann-c-client.hash new file mode 100644 index 00000000..09028815 --- /dev/null +++ b/bsp/buildroot/package/riemann-c-client/riemann-c-client.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4b18804f489834fa953f4af887290173c745b471a5993bb108a9142c867de457 riemann-c-client-1.9.1.tar.xz diff --git a/bsp/buildroot/package/riemann-c-client/riemann-c-client.mk b/bsp/buildroot/package/riemann-c-client/riemann-c-client.mk new file mode 100644 index 00000000..c8a411c3 --- /dev/null +++ b/bsp/buildroot/package/riemann-c-client/riemann-c-client.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# riemann-c-client +# +################################################################################ + +RIEMANN_C_CLIENT_VERSION = 1.9.1 +RIEMANN_C_CLIENT_SOURCE = riemann-c-client-$(RIEMANN_C_CLIENT_VERSION).tar.xz +RIEMANN_C_CLIENT_SITE = https://github.com/algernon/riemann-c-client/releases/download/riemann-c-client-$(RIEMANN_C_CLIENT_VERSION) +RIEMANN_C_CLIENT_LICENSE = LGPLv3+ +RIEMANN_C_CLIENT_LICENSE_FILES = LICENSE +RIEMANN_C_CLIENT_INSTALL_STAGING = YES +RIEMANN_C_CLIENT_MAKE = $(MAKE1) +RIEMANN_C_CLIENT_DEPENDENCIES = \ + host-pkgconf protobuf-c \ + $(if $(BR2_PACKAGE_GNUTLS),gnutls) \ + $(if $(BR2_PACKAGE_JSON_C),json-c) + +ifeq ($(BR2_bfin),y) +# ld symbol versioning not working on bfin +RIEMANN_C_CLIENT_CONF_ENV += ac_cv_prog_ld_version_script=no +endif + +$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/rng-tools/Config.in b/bsp/buildroot/package/rng-tools/Config.in index 0c538cc2..b00477d3 100644 --- a/bsp/buildroot/package/rng-tools/Config.in +++ b/bsp/buildroot/package/rng-tools/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_RNG_TOOLS bool "rng-tools" - depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS && (BR2_i386 || BR2_x86_64) # libgcrypt + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS || !(BR2_i386 || BR2_x86_64) # libgcrypt select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL # For rdrand ligcrypt is required and it's not obvious to users select BR2_PACKAGE_LIBGCRYPT if BR2_i386 || BR2_x86_64 diff --git a/bsp/buildroot/package/rp-pppoe/rp-pppoe.mk b/bsp/buildroot/package/rp-pppoe/rp-pppoe.mk index 43062549..99d231e5 100644 --- a/bsp/buildroot/package/rp-pppoe/rp-pppoe.mk +++ b/bsp/buildroot/package/rp-pppoe/rp-pppoe.mk @@ -15,8 +15,16 @@ RP_PPPOE_TARGET_SCRIPTS = pppoe-connect pppoe-init pppoe-setup pppoe-start \ pppoe-status pppoe-stop RP_PPPOE_MAKE_OPTS = PLUGIN_DIR=/usr/lib/pppd/$(PPPD_VERSION) RP_PPPOE_CONF_OPTS = --disable-debugging + +# The pppd, echo, setsid and id paths must be the ones on the +# target. Indeed, the result of these checks is used to replace +# variables in scripts that are installed in the target. RP_PPPOE_CONF_ENV = \ rpppoe_cv_pack_bitfields=normal \ + ac_cv_path_PPPD=/usr/sbin/pppd \ + ac_cv_path_ECHO=/bin/echo \ + ac_cv_path_SETSID=/usr/bin/setsid \ + ac_cv_path_ID=/usr/bin/id \ PPPD_H=$(PPPD_DIR)/pppd/pppd.h define RP_PPPOE_INSTALL_TARGET_CMDS diff --git a/bsp/buildroot/package/rpi-firmware/mkknlimg b/bsp/buildroot/package/rpi-firmware/mkknlimg deleted file mode 100644 index 33f81874..00000000 --- a/bsp/buildroot/package/rpi-firmware/mkknlimg +++ /dev/null @@ -1,299 +0,0 @@ -#!/usr/bin/env perl -# -# Originaly from: https://github.com/raspberrypi/tools/blob/master/mkimage/mkknlimg -# Original cset : f5642106425d430e1f82ee064121a5fd0e05a386 -# -# ---------------------------------------------------------------------- -# mkknlimg by Phil Elwell for Raspberry Pi -# based on extract-ikconfig by Dick Streefland -# -# (c) 2009,2010 Dick Streefland -# (c) 2014,2015 Raspberry Pi (Trading) Limited -# -# Licensed under the terms of the GNU General Public License. -# ---------------------------------------------------------------------- - -use strict; -use warnings; -use integer; - -use constant FLAG_PI => 1; -use constant FLAG_DTOK => 2; -use constant FLAG_DDTK => 4; -use constant FLAG_283X => 8; - -my $trailer_magic = 'RPTL'; - -my $tmpfile1 = "/tmp/mkknlimg_$$.1"; -my $tmpfile2 = "/tmp/mkknlimg_$$.2"; - -my $dtok = 0; -my $ddtk = 0; -my $is_283x = 0; - -while (@ARGV && ($ARGV[0] =~ /^-/)) -{ - my $arg = shift(@ARGV); - if ($arg eq '--dtok') - { - $dtok = 1; - } - elsif ($arg eq '--ddtk') - { - $ddtk = 1; - } - elsif ($arg eq '--283x') - { - $is_283x = 1; - } - else - { - print ("* Unknown option '$arg'\n"); - usage(); - } -} - -usage() if (@ARGV != 2); - -my $kernel_file = $ARGV[0]; -my $out_file = $ARGV[1]; - -if (! -r $kernel_file) -{ - print ("* File '$kernel_file' not found\n"); - usage(); -} - -my $wanted_configs = -{ - 'CONFIG_BCM2708_DT' => FLAG_PI | FLAG_DTOK, - 'CONFIG_ARCH_BCM2835' => FLAG_PI | FLAG_DTOK | FLAG_283X, -}; - -my $wanted_strings = -{ - 'bcm2708_fb' => FLAG_PI, - 'brcm,bcm2835-mmc' => FLAG_PI, - 'brcm,bcm2835-sdhost' => FLAG_PI, - 'brcm,bcm2708-pinctrl' => FLAG_PI | FLAG_DTOK, - 'brcm,bcm2835-gpio' => FLAG_PI | FLAG_DTOK, - 'brcm,bcm2835-pm-wdt' => FLAG_PI | FLAG_DTOK | FLAG_283X, - 'of_overlay_apply' => FLAG_DTOK | FLAG_DDTK, -}; - -my $res = try_extract($kernel_file, $tmpfile1); -$res ||= try_decompress('\037\213\010', 'xy', 'gunzip', 0, - $kernel_file, $tmpfile1, $tmpfile2); -$res ||= try_decompress('\3757zXZ\000', 'abcde', 'unxz --single-stream', -1, - $kernel_file, $tmpfile1, $tmpfile2); -$res ||= try_decompress('BZh', 'xy', 'bunzip2', 0, - $kernel_file, $tmpfile1, $tmpfile2); -$res ||= try_decompress('\135\0\0\0', 'xxx', 'unlzma', 0, - $kernel_file, $tmpfile1, $tmpfile2); -$res ||= try_decompress('\211\114\132', 'xy', 'lzop -d', 0, - $kernel_file, $tmpfile1, $tmpfile2); -$res ||= try_decompress('\002\041\114\030', 'xy', 'lz4 -d', 1, - $kernel_file, $tmpfile1, $tmpfile2); - -my $append_trailer; -my $trailer; -my $kver = '?'; - -$append_trailer = $dtok; - -if ($res) -{ - $kver = $res->{'kver'} || '?'; - my $flags = $res->{'flags'}; - print("Version: $kver\n"); - - if ($flags & FLAG_PI) - { - $append_trailer = 1; - $dtok ||= ($flags & FLAG_DTOK) != 0; - $is_283x ||= ($flags & FLAG_283X) != 0; - $ddtk ||= ($flags & FLAG_DDTK) != 0; - } - else - { - print ("* This doesn't look like a Raspberry Pi kernel. In pass-through mode.\n"); - } -} -elsif (!$dtok) -{ - print ("* Is this a valid kernel? In pass-through mode.\n"); -} - -if ($append_trailer) -{ - printf("DT: %s\n", $dtok ? "y" : "n"); - printf("DDT: %s\n", $ddtk ? "y" : "n"); - printf("283x: %s\n", $is_283x ? "y" : "n"); - - my @atoms; - - push @atoms, [ $trailer_magic, pack('V', 0) ]; - push @atoms, [ 'KVer', $kver ]; - push @atoms, [ 'DTOK', pack('V', $dtok) ]; - push @atoms, [ 'DDTK', pack('V', $ddtk) ]; - push @atoms, [ '283x', pack('V', $is_283x) ]; - - $trailer = pack_trailer(\@atoms); - $atoms[0]->[1] = pack('V', length($trailer)); - - $trailer = pack_trailer(\@atoms); -} - -my $ofh; -my $total_len = 0; - -if ($out_file eq $kernel_file) -{ - die "* Failed to open '$out_file' for append\n" - if (!open($ofh, '>>', $out_file)); - $total_len = tell($ofh); -} -else -{ - die "* Failed to open '$kernel_file'\n" - if (!open(my $ifh, '<', $kernel_file)); - die "* Failed to create '$out_file'\n" - if (!open($ofh, '>', $out_file)); - - my $copybuf; - while (1) - { - my $bytes = sysread($ifh, $copybuf, 64*1024); - last if (!$bytes); - syswrite($ofh, $copybuf, $bytes); - $total_len += $bytes; - } - close($ifh); -} - -if ($trailer) -{ - # Pad to word-alignment - syswrite($ofh, "\x000\x000\x000", (-$total_len & 0x3)); - syswrite($ofh, $trailer); -} - -close($ofh); - -exit($trailer ? 0 : 1); - -END { - unlink($tmpfile1) if ($tmpfile1); - unlink($tmpfile2) if ($tmpfile2); -} - - -sub usage -{ - print ("Usage: mkknlimg [--dtok] [--283x] \n"); - exit(1); -} - -sub try_extract -{ - my ($knl, $tmp) = @_; - - my $ver = `strings "$knl" | grep -a -E "^Linux version [1-9]"`; - - return undef if (!$ver); - - chomp($ver); - - my $res = { 'kver'=>$ver }; - $res->{'flags'} = strings_to_flags($knl, $wanted_strings) | - configs_to_flags($knl, $tmp, $wanted_configs); - - return $res; -} - - -sub try_decompress -{ - my ($magic, $subst, $zcat, $idx, $knl, $tmp1, $tmp2) = @_; - - my $pos = `tr "$magic\n$subst" "\n$subst=" < "$knl" | grep -abo "^$subst"`; - if ($pos) - { - chomp($pos); - $pos = (split(/[\r\n]+/, $pos))[$idx]; - return undef if (!defined($pos)); - $pos =~ s/:.*[\r\n]*$//s; - my $cmd = "tail -c+$pos \"$knl\" | $zcat > $tmp2 2> /dev/null"; - my $err = (system($cmd) >> 8); - return undef if (($err != 0) && ($err != 2)); - - return try_extract($tmp2, $tmp1); - } - - return undef; -} - - -sub strings_to_flags -{ - my ($knl, $strings) = @_; - my $string_pattern = '^('.join('|', keys(%$strings)).')$'; - my $flags = 0; - - my @matches = `strings \"$knl\" | grep -E \"$string_pattern\"`; - foreach my $match (@matches) - { - chomp($match); - $flags |= $strings->{$match}; - } - - return $flags; -} - -sub configs_to_flags -{ - my ($knl, $tmp, $configs) = @_; - my $config_pattern = '^('.join('|', keys(%$configs)).')=(.*)$'; - my $cf1 = 'IKCFG_ST\037\213\010'; - my $cf2 = '0123456789'; - my $flags = 0; - - my $pos = `tr "$cf1\n$cf2" "\n$cf2=" < "$knl" | grep -abo "^$cf2"`; - if ($pos) - { - $pos =~ s/:.*[\r\n]*$//s; - $pos += 8; - my $err = (system("tail -c+$pos \"$knl\" | zcat > $tmp 2> /dev/null") >> 8); - if (($err == 0) || ($err == 2)) - { - if (open(my $fh, '<', $tmp)) - { - while (my $line = <$fh>) - { - chomp($line); - if (($line =~ /$config_pattern/) && - (($2 eq 'y') || ($2 eq 'm'))) - { - $flags |= $configs->{$1}; - } - } - - close($fh); - } - } - } - - return $flags; -} - -sub pack_trailer -{ - my ($atoms) = @_; - my $trailer = pack('VV', 0, 0); - for (my $i = $#$atoms; $i>=0; $i--) - { - my $atom = $atoms->[$i]; - $trailer .= pack('a*x!4Va4', $atom->[1], length($atom->[1]), $atom->[0]); - } - return $trailer; -} diff --git a/bsp/buildroot/package/rpi-firmware/rpi-firmware.hash b/bsp/buildroot/package/rpi-firmware/rpi-firmware.hash index e2e31c9f..8161d7ae 100644 --- a/bsp/buildroot/package/rpi-firmware/rpi-firmware.hash +++ b/bsp/buildroot/package/rpi-firmware/rpi-firmware.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 b2ce949db3745354383ac0d66107cbbb8902ccbf5fc027be8824519c44d5a302 rpi-firmware-70143fe9d371cd6486a80d6765e93b5574212b64.tar.gz +sha256 144de63ee1999155fc1ff597630f1a13f798e597e7c4d144b8b625fa774c1f9b rpi-firmware-7f8ac8dac0b80291cbf5e56580139034a0a42070.tar.gz diff --git a/bsp/buildroot/package/rpi-firmware/rpi-firmware.mk b/bsp/buildroot/package/rpi-firmware/rpi-firmware.mk index 0587802b..d2cd4819 100644 --- a/bsp/buildroot/package/rpi-firmware/rpi-firmware.mk +++ b/bsp/buildroot/package/rpi-firmware/rpi-firmware.mk @@ -4,14 +4,12 @@ # ################################################################################ -RPI_FIRMWARE_VERSION = 70143fe9d371cd6486a80d6765e93b5574212b64 +RPI_FIRMWARE_VERSION = 7f8ac8dac0b80291cbf5e56580139034a0a42070 RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3c RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom RPI_FIRMWARE_INSTALL_IMAGES = YES -RPI_FIRMWARE_DEPENDENCIES += host-rpi-firmware - ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS),y) define RPI_FIRMWARE_INSTALL_DTB $(INSTALL) -D -m 0644 $(@D)/boot/bcm2708-rpi-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2708-rpi-b.dtb @@ -46,13 +44,4 @@ define RPI_FIRMWARE_INSTALL_IMAGES_CMDS $(RPI_FIRMWARE_INSTALL_DTB_OVERLAYS) endef -# We have no host sources to get, since we already -# bundle the script we want to install. -HOST_RPI_FIRMWARE_SOURCE = - -define HOST_RPI_FIRMWARE_INSTALL_CMDS - $(INSTALL) -D -m 0755 package/rpi-firmware/mkknlimg $(HOST_DIR)/usr/bin/mkknlimg -endef - $(eval $(generic-package)) -$(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch b/bsp/buildroot/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch index 352f95df..fb873371 100644 --- a/bsp/buildroot/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch +++ b/bsp/buildroot/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch @@ -1,14 +1,16 @@ -From 853d7486a98e38eb78d48b2dcb1dda36610575b4 Mon Sep 17 00:00:00 2001 +From 4824be8986c2b6ef0b0bd2b32bc99c4ba6406640 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Sat, 24 Jan 2015 19:44:14 +0100 -Subject: [PATCH] Add .pc files for the OpenGLESv2, EGL and bcm_host - libraries +Subject: [PATCH] Add .pc files for the OpenGLESv2, EGL and bcm_host libraries Those pkg-config files make it easier for Qt5 to find those libraries and the appropriate link flags. Signed-off-by: Thomas Petazzoni Signed-off-by: "Yann E. MORIN" + +[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163] +Signed-off-by: Peter Seiderer --- host_applications/linux/libs/bcm_host/CMakeLists.txt | 4 ++++ host_applications/linux/libs/bcm_host/bcm_host.pc.in | 10 ++++++++++ @@ -49,10 +51,10 @@ index 0000000..d40d350 +Libs: -L${libdir} -lbcm_host -lvcos -lvchiq_arm +Cflags: -I${includedir} -I${includedir}/interface/vmcs_host/linux -I${includedir}/interface/vcos/pthreads -DUSE_VCHIQ_ARM diff --git a/interface/khronos/CMakeLists.txt b/interface/khronos/CMakeLists.txt -index c437291..ec5a605 100644 +index 4231af4..2844ebd 100644 --- a/interface/khronos/CMakeLists.txt +++ b/interface/khronos/CMakeLists.txt -@@ -74,3 +74,11 @@ target_link_libraries(OpenVG EGL) +@@ -74,6 +74,14 @@ target_link_libraries(OpenVG EGL) install(TARGETS EGL GLESv2 OpenVG WFC khrn_client DESTINATION lib) install(TARGETS EGL_static GLESv2_static khrn_static DESTINATION lib) @@ -64,6 +66,9 @@ index c437291..ec5a605 100644 + "${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc" @ONLY) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc" + DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") + + # recommended names to use to avoid conflicts with mesa libs + add_library(brcmEGL ${SHARED} ${EGL_SOURCE}) diff --git a/interface/khronos/egl/egl.pc.in b/interface/khronos/egl/egl.pc.in new file mode 100644 index 0000000..5868706 @@ -98,5 +103,5 @@ index 0000000..2f58eed +Libs: -L${libdir} -lGLESv2 +Cflags: -I${includedir}/ -- -1.9.1 +2.8.1 diff --git a/bsp/buildroot/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch b/bsp/buildroot/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch new file mode 100644 index 00000000..0e9dede5 --- /dev/null +++ b/bsp/buildroot/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch @@ -0,0 +1,35 @@ +From a126ee5a3235792abb58daffd9d4b3e1012f675b Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 24 Jan 2015 22:07:19 +0100 +Subject: [PATCH] interface: remove faulty assert() to make weston happy at + runtime + +This was removed after a discussion on IRC with the weston guys +('daniels' on irc.freenode.net/#wayland). + +Upstream status: no, will be pushed by weston guys later. +If not, I'll do it. + +Signed-off-by: "Yann E. MORIN" + +[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163] +Signed-off-by: Peter Seiderer +--- + interface/vmcs_host/vc_vchi_dispmanx.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c +index 133e86d..0c7873c 100755 +--- a/interface/vmcs_host/vc_vchi_dispmanx.c ++++ b/interface/vmcs_host/vc_vchi_dispmanx.c +@@ -1306,7 +1306,6 @@ static void *dispmanx_notify_func( void *arg ) { + // Decrement the use count - the corresponding "use" is in vc_dispmanx_update_submit. + vchi_service_release(dispmanx_client.notify_handle[0]); + if (dispmanx_client.update_callback ) { +- vcos_assert( dispmanx_client.pending_update_handle == handle); + dispmanx_client.update_callback(handle, dispmanx_client.update_callback_param); + } + } else { +-- +2.8.1 + diff --git a/bsp/buildroot/package/rpi-userland/0003-Disable-Werror-everywhere.patch b/bsp/buildroot/package/rpi-userland/0003-Disable-Werror-everywhere.patch new file mode 100644 index 00000000..64ae8ed2 --- /dev/null +++ b/bsp/buildroot/package/rpi-userland/0003-Disable-Werror-everywhere.patch @@ -0,0 +1,171 @@ +From 67924a43d52862a7b4c9076d49071449313fea85 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 22 Sep 2016 22:59:11 +0200 +Subject: [PATCH] Disable Werror everywhere + +With gcc-5.1, some constructs that were previously accepted (but wrong) +are now considered warnings, and thus -Werror makes them errors. + +Ditch -Werror altoghether. + +Signed-off-by: "Yann E. MORIN" + +[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163] +Signed-off-by: Peter Seiderer +--- + host_applications/android/apps/vidtex/CMakeLists.txt | 2 +- + host_applications/linux/apps/gencmd/CMakeLists.txt | 2 +- + host_applications/linux/apps/raspicam/CMakeLists.txt | 2 +- + host_applications/linux/apps/smem/CMakeLists.txt | 2 +- + host_applications/linux/libs/bcm_host/CMakeLists.txt | 2 +- + host_applications/linux/libs/sm/CMakeLists.txt | 2 +- + interface/mmal/CMakeLists.txt | 2 +- + interface/vcos/CMakeLists.txt | 2 +- + interface/vcos/pthreads/CMakeLists.txt | 2 +- + interface/vmcs_host/CMakeLists.txt | 2 +- + interface/vmcs_host/linux/vcfiled/CMakeLists.txt | 2 +- + 11 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/host_applications/android/apps/vidtex/CMakeLists.txt b/host_applications/android/apps/vidtex/CMakeLists.txt +index 1f705ef..37d037d 100644 +--- a/host_applications/android/apps/vidtex/CMakeLists.txt ++++ b/host_applications/android/apps/vidtex/CMakeLists.txt +@@ -1,6 +1,6 @@ + cmake_minimum_required(VERSION 2.8) + +-SET(COMPILE_DEFINITIONS -Werror -Wall) ++SET(COMPILE_DEFINITIONS -Wall) + include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/libs/bcm_host/include) + + set (VIDTEX_SOURCES +diff --git a/host_applications/linux/apps/gencmd/CMakeLists.txt b/host_applications/linux/apps/gencmd/CMakeLists.txt +index f95d1a1..034bf20 100644 +--- a/host_applications/linux/apps/gencmd/CMakeLists.txt ++++ b/host_applications/linux/apps/gencmd/CMakeLists.txt +@@ -4,7 +4,7 @@ if (WIN32) + set(VCOS_PLATFORM win32) + else () + set(VCOS_PLATFORM pthreads) +- add_definitions(-Wall -Werror) ++ add_definitions(-Wall ) + endif () + + include_directories( ../../../.. +diff --git a/host_applications/linux/apps/raspicam/CMakeLists.txt b/host_applications/linux/apps/raspicam/CMakeLists.txt +index 2afc145..04e446f 100644 +--- a/host_applications/linux/apps/raspicam/CMakeLists.txt ++++ b/host_applications/linux/apps/raspicam/CMakeLists.txt +@@ -1,7 +1,7 @@ + + # raspistill/raspivid/raspiyuv + +-SET(COMPILE_DEFINITIONS -Werror) ++SET(COMPILE_DEFINITIONS ) + + include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/libs/bcm_host/include) + include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/apps/raspicam/) +diff --git a/host_applications/linux/apps/smem/CMakeLists.txt b/host_applications/linux/apps/smem/CMakeLists.txt +index 0fa8328..f0d1e77 100644 +--- a/host_applications/linux/apps/smem/CMakeLists.txt ++++ b/host_applications/linux/apps/smem/CMakeLists.txt +@@ -4,7 +4,7 @@ get_filename_component (VIDEOCORE_ROOT ../../../.. ABSOLUTE) + include (${VIDEOCORE_ROOT}/makefiles/cmake/global_settings.cmake) + + if (NOT WIN32) +- add_definitions(-Wall -Werror) ++ add_definitions(-Wall ) + endif () + + include_directories ( +diff --git a/host_applications/linux/libs/bcm_host/CMakeLists.txt b/host_applications/linux/libs/bcm_host/CMakeLists.txt +index 1f29ead..fb78cea 100644 +--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt ++++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt +@@ -3,7 +3,7 @@ if (WIN32) + set(VCOS_PLATFORM win32) + else () + set(VCOS_PLATFORM pthreads) +- add_definitions(-Wall -Werror) ++ add_definitions(-Wall ) + endif () + + include_directories( ../../../.. +diff --git a/host_applications/linux/libs/sm/CMakeLists.txt b/host_applications/linux/libs/sm/CMakeLists.txt +index c6bf764..4bca0b0 100644 +--- a/host_applications/linux/libs/sm/CMakeLists.txt ++++ b/host_applications/linux/libs/sm/CMakeLists.txt +@@ -3,7 +3,7 @@ if (WIN32) + set(VCOS_PLATFORM win32) + else () + set(VCOS_PLATFORM pthreads) +- add_definitions(-Wall -Werror) ++ add_definitions(-Wall ) + endif () + + include_directories( ../../../.. +diff --git a/interface/mmal/CMakeLists.txt b/interface/mmal/CMakeLists.txt +index 37ae757..78b24a9 100644 +--- a/interface/mmal/CMakeLists.txt ++++ b/interface/mmal/CMakeLists.txt +@@ -3,7 +3,7 @@ if (NOT DEFINED LIBRARY_TYPE) + set(LIBRARY_TYPE SHARED) + endif (NOT DEFINED LIBRARY_TYPE) + +-add_definitions(-Wall -Werror) ++add_definitions(-Wall ) + + add_library(mmal SHARED util/mmal_util.c) + +diff --git a/interface/vcos/CMakeLists.txt b/interface/vcos/CMakeLists.txt +index 23a8d72..988b104 100644 +--- a/interface/vcos/CMakeLists.txt ++++ b/interface/vcos/CMakeLists.txt +@@ -43,7 +43,7 @@ foreach (header ${HEADERS}) + endforeach () + + if (CMAKE_COMPILER_IS_GNUCC) +- add_definitions (-ggdb -Werror -Wall) ++ add_definitions (-ggdb -Wall) + endif () + + if (CMAKE_COMPILER_2005) +diff --git a/interface/vcos/pthreads/CMakeLists.txt b/interface/vcos/pthreads/CMakeLists.txt +index 1d81ca3..b35cd8e 100644 +--- a/interface/vcos/pthreads/CMakeLists.txt ++++ b/interface/vcos/pthreads/CMakeLists.txt +@@ -1,7 +1,7 @@ + # MSVC5 does not fully support C99, enabling declaration-after-statement + # warnings allows a common MSVC5 build error to be detected in Linux builds. + if (CMAKE_COMPILER_IS_GNUCC) +- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wdeclaration-after-statement") ++ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wdeclaration-after-statement") + add_definitions (-D_GNU_SOURCE) + endif () + +diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt +index 0b3adc9..c5156d8 100755 +--- a/interface/vmcs_host/CMakeLists.txt ++++ b/interface/vmcs_host/CMakeLists.txt +@@ -2,7 +2,7 @@ + # interface/vmcs_host + + # not working in release build +-# add_definitions(-Werror) ++# add_definitions() + + # vc_vchi_gencmd.c has a type-punning problem in vc_gencmd_read_response + add_definitions(-fno-strict-aliasing) +diff --git a/interface/vmcs_host/linux/vcfiled/CMakeLists.txt b/interface/vmcs_host/linux/vcfiled/CMakeLists.txt +index aed0e83..d834b3f 100644 +--- a/interface/vmcs_host/linux/vcfiled/CMakeLists.txt ++++ b/interface/vmcs_host/linux/vcfiled/CMakeLists.txt +@@ -1,5 +1,5 @@ + +-add_definitions(-Werror) ++add_definitions() + + # vcfiled - serves files to videocore. used for media handlers from + # OpenMAX/IL and loading VLLs. +-- +2.8.1 + diff --git a/bsp/buildroot/package/rpi-userland/0003-interface-remove-faulty-assert-to-make-weston-happy-.patch b/bsp/buildroot/package/rpi-userland/0003-interface-remove-faulty-assert-to-make-weston-happy-.patch deleted file mode 100644 index 16a5f52b..00000000 --- a/bsp/buildroot/package/rpi-userland/0003-interface-remove-faulty-assert-to-make-weston-happy-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From e0df1a4f1d9737935165f420d0d0f685efc63f49 Mon Sep 17 00:00:00 2001 -From: "Yann E. MORIN" -Date: Sat, 24 Jan 2015 22:07:19 +0100 -Subject: [PATCH] interface: remove faulty assert() to make weston happy at - runtime - -This was removed after a discussion on IRC with the weston guys -('daniels' on irc.freenode.net/#wayland). - -Signed-off-by: "Yann E. MORIN" - ---- -Upstream status: no, will be pushed by weston guys later. -If not, I'll do it. ---- - interface/vmcs_host/vc_vchi_dispmanx.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c -index 85b373c..59a01f8 100755 ---- a/interface/vmcs_host/vc_vchi_dispmanx.c -+++ b/interface/vmcs_host/vc_vchi_dispmanx.c -@@ -1296,7 +1296,6 @@ static void *dispmanx_notify_func( void *arg ) { - // Decrement the use count - the corresponding "use" is in vc_dispmanx_update_submit. - vchi_service_release(dispmanx_client.notify_handle[0]); - if (dispmanx_client.update_callback ) { -- vcos_assert( dispmanx_client.pending_update_handle == handle); - dispmanx_client.update_callback(handle, dispmanx_client.update_callback_param); - } - } else { --- -1.9.1 - diff --git a/bsp/buildroot/package/rpi-userland/0005-disable-missing-all-apps.patch b/bsp/buildroot/package/rpi-userland/0004-host-applications-disable-missing-applications.patch similarity index 61% rename from bsp/buildroot/package/rpi-userland/0005-disable-missing-all-apps.patch rename to bsp/buildroot/package/rpi-userland/0004-host-applications-disable-missing-applications.patch index 520c7be3..08039123 100644 --- a/bsp/buildroot/package/rpi-userland/0005-disable-missing-all-apps.patch +++ b/bsp/buildroot/package/rpi-userland/0004-host-applications-disable-missing-applications.patch @@ -1,4 +1,4 @@ -From 249f6c8b44581083dfb16ebf66bfe94f7c9fb163 Mon Sep 17 00:00:00 2001 +From c8d2c332da2a03ed80d62628bbf54187a66f49b6 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Fri, 24 Jul 2015 20:20:33 +0200 Subject: [PATCH] host-applications: disable missing applications @@ -7,24 +7,28 @@ Those applications are missing from the public rpi-firmware package, so do not even try to build them. Signed-off-by: "Yann E. MORIN" + +[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163] +Signed-off-by: Peter Seiderer --- - host_applications/linux/CMakeLists.txt | 2 -- - 1 file changed, 2 deletions(-) + host_applications/linux/CMakeLists.txt | 3 --- + 1 file changed, 3 deletions(-) diff --git a/host_applications/linux/CMakeLists.txt b/host_applications/linux/CMakeLists.txt -index ea4e016..4a87862 100644 +index 5a648e7..83bb66e 100644 --- a/host_applications/linux/CMakeLists.txt +++ b/host_applications/linux/CMakeLists.txt -@@ -10,9 +10,7 @@ add_subdirectory(apps/smem) - add_subdirectory(libs/debug_sym) +@@ -12,10 +12,7 @@ add_subdirectory(apps/dtoverlay) + add_subdirectory(apps/dtmerge) if(ALL_APPS) - add_subdirectory(apps/vcdbg) +- add_subdirectory(libs/elftoolchain) # add_subdirectory(apps/smct) - add_subdirectory(apps/edid_parser) add_subdirectory(apps/hello_pi) endif() -- -1.9.1 +2.8.1 diff --git a/bsp/buildroot/package/rpi-userland/0004-no-Werror.patch b/bsp/buildroot/package/rpi-userland/0004-no-Werror.patch deleted file mode 100644 index 18a23b30..00000000 --- a/bsp/buildroot/package/rpi-userland/0004-no-Werror.patch +++ /dev/null @@ -1,138 +0,0 @@ -Disable Werror everywhere - -With gcc-5.1, some constructs that were previously accepted (but wrong) -are now considered warnings, and thus -Werror makes them errors. - -Ditch -Werror altoghether. - -Signed-off-by: "Yann E. MORIN" - -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/android/apps/vidtex/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/android/apps/vidtex/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/android/apps/vidtex/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/android/apps/vidtex/CMakeLists.txt 2015-07-12 16:53:29.528491231 +0200 -@@ -1,6 +1,6 @@ - cmake_minimum_required(VERSION 2.8) - --SET(COMPILE_DEFINITIONS -Werror -Wall) -+SET(COMPILE_DEFINITIONS -Wall) - include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/libs/bcm_host/include) - - set (VIDTEX_SOURCES -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/apps/gencmd/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/apps/gencmd/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/apps/gencmd/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/apps/gencmd/CMakeLists.txt 2015-07-12 16:53:29.512491038 +0200 -@@ -4,7 +4,7 @@ - set(VCOS_PLATFORM win32) - else () - set(VCOS_PLATFORM pthreads) -- add_definitions(-Wall -Werror) -+ add_definitions(-Wall ) - endif () - - include_directories( ../../../.. -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/apps/raspicam/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/apps/raspicam/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/apps/raspicam/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/apps/raspicam/CMakeLists.txt 2015-07-12 16:50:54.422624640 +0200 -@@ -1,7 +1,7 @@ - - # raspistill/raspivid/raspiyuv - --SET(COMPILE_DEFINITIONS -Werror) -+SET(COMPILE_DEFINITIONS ) - - include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/libs/bcm_host/include) - include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/apps/raspicam/) -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/apps/smem/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/apps/smem/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/apps/smem/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/apps/smem/CMakeLists.txt 2015-07-12 16:53:29.516491086 +0200 -@@ -4,7 +4,7 @@ - include (${VIDEOCORE_ROOT}/makefiles/cmake/global_settings.cmake) - - if (NOT WIN32) -- add_definitions(-Wall -Werror) -+ add_definitions(-Wall ) - endif () - - include_directories ( -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/libs/bcm_host/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/libs/bcm_host/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/libs/bcm_host/CMakeLists.txt 2015-07-12 16:48:03.768570937 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/libs/bcm_host/CMakeLists.txt 2015-07-12 16:53:29.520491135 +0200 -@@ -3,7 +3,7 @@ - set(VCOS_PLATFORM win32) - else () - set(VCOS_PLATFORM pthreads) -- add_definitions(-Wall -Werror) -+ add_definitions(-Wall ) - endif () - - include_directories( ../../../.. -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/libs/sm/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/libs/sm/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/host_applications/linux/libs/sm/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/host_applications/linux/libs/sm/CMakeLists.txt 2015-07-12 16:53:29.524491183 +0200 -@@ -3,7 +3,7 @@ - set(VCOS_PLATFORM win32) - else () - set(VCOS_PLATFORM pthreads) -- add_definitions(-Wall -Werror) -+ add_definitions(-Wall ) - endif () - - include_directories( ../../../.. -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/mmal/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/mmal/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/mmal/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/mmal/CMakeLists.txt 2015-07-12 16:53:29.536491327 +0200 -@@ -3,7 +3,7 @@ - set(LIBRARY_TYPE SHARED) - endif (NOT DEFINED LIBRARY_TYPE) - --add_definitions(-Wall -Werror) -+add_definitions(-Wall ) - - add_library(mmal SHARED util/mmal_util.c) - -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/vcos/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/vcos/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/vcos/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/vcos/CMakeLists.txt 2015-07-12 16:53:29.540491375 +0200 -@@ -43,7 +43,7 @@ - endforeach () - - if (CMAKE_COMPILER_IS_GNUCC) -- add_definitions (-ggdb -Werror -Wall) -+ add_definitions (-ggdb -Wall) - endif () - - if (CMAKE_COMPILER_2005) -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/vcos/pthreads/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/vcos/pthreads/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/vcos/pthreads/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/vcos/pthreads/CMakeLists.txt 2015-07-12 16:53:29.540491375 +0200 -@@ -1,7 +1,7 @@ - # MSVC5 does not fully support C99, enabling declaration-after-statement - # warnings allows a common MSVC5 build error to be detected in Linux builds. - if (CMAKE_COMPILER_IS_GNUCC) -- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wdeclaration-after-statement") -+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wdeclaration-after-statement") - add_definitions (-D_GNU_SOURCE) - endif () - -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/vmcs_host/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/vmcs_host/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/vmcs_host/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/vmcs_host/CMakeLists.txt 2015-07-12 16:53:29.528491231 +0200 -@@ -2,7 +2,7 @@ - # interface/vmcs_host - - # not working in release build --# add_definitions(-Werror) -+# add_definitions() - - # vc_vchi_gencmd.c has a type-punning problem in vc_gencmd_read_response - add_definitions(-fno-strict-aliasing) -diff -durN rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/vmcs_host/linux/vcfiled/CMakeLists.txt rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/vmcs_host/linux/vcfiled/CMakeLists.txt ---- rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990.orig/interface/vmcs_host/linux/vcfiled/CMakeLists.txt 2015-05-30 15:53:53.000000000 +0200 -+++ rpi-userland-b834074d0c0d9d7e64c133ab14ed691999cee990/interface/vmcs_host/linux/vcfiled/CMakeLists.txt 2015-07-12 16:53:29.532491279 +0200 -@@ -1,5 +1,5 @@ - --add_definitions(-Werror) -+add_definitions() - - # vcfiled - serves files to videocore. used for media handlers from - # OpenMAX/IL and loading VLLs. diff --git a/bsp/buildroot/package/rpi-userland/0006-dtmerge-add-missing-include-for-va_list.patch b/bsp/buildroot/package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch similarity index 100% rename from bsp/buildroot/package/rpi-userland/0006-dtmerge-add-missing-include-for-va_list.patch rename to bsp/buildroot/package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch diff --git a/bsp/buildroot/package/rpi-userland/rpi-userland.hash b/bsp/buildroot/package/rpi-userland/rpi-userland.hash index 0c6f4fdd..24b6584b 100644 --- a/bsp/buildroot/package/rpi-userland/rpi-userland.hash +++ b/bsp/buildroot/package/rpi-userland/rpi-userland.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 b83878c487814d7736de83dc3ede1c39fa1c84bc2da2bea00312544eff64f1dc rpi-userland-7c026fa7a4ded2c525916cc853a32731c072ed1e.tar.gz +sha256 f229c29ceae611101bf4716b112251b2f2a33cfbb6636d736deda4e1314bb9d9 rpi-userland-c139376e9bc6fbd93f777c7fc3c7d7cf2cc35122.tar.gz diff --git a/bsp/buildroot/package/rpi-userland/rpi-userland.mk b/bsp/buildroot/package/rpi-userland/rpi-userland.mk index 2ebd95bd..4e3b4ec4 100644 --- a/bsp/buildroot/package/rpi-userland/rpi-userland.mk +++ b/bsp/buildroot/package/rpi-userland/rpi-userland.mk @@ -4,13 +4,14 @@ # ################################################################################ -RPI_USERLAND_VERSION = 7c026fa7a4ded2c525916cc853a32731c072ed1e +RPI_USERLAND_VERSION = c139376e9bc6fbd93f777c7fc3c7d7cf2cc35122 RPI_USERLAND_SITE = $(call github,raspberrypi,userland,$(RPI_USERLAND_VERSION)) RPI_USERLAND_LICENSE = BSD-3c RPI_USERLAND_LICENSE_FILES = LICENCE RPI_USERLAND_INSTALL_STAGING = YES RPI_USERLAND_CONF_OPTS = -DVMCS_INSTALL_PREFIX=/usr \ - -DCMAKE_C_FLAGS="-DVCFILED_LOCKFILE=\\\"/var/run/vcfiled.pid\\\"" + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) \ + -DVCFILED_LOCKFILE=\\\"/var/run/vcfiled.pid\\\"" RPI_USERLAND_PROVIDES = libegl libgles libopenmax libopenvg diff --git a/bsp/buildroot/package/rpm/0001-Detect-bfd.h-to-enable-disable-sepdebugcrcfix-buildi.patch b/bsp/buildroot/package/rpm/0001-Detect-bfd.h-to-enable-disable-sepdebugcrcfix-buildi.patch new file mode 100644 index 00000000..e1fd0697 --- /dev/null +++ b/bsp/buildroot/package/rpm/0001-Detect-bfd.h-to-enable-disable-sepdebugcrcfix-buildi.patch @@ -0,0 +1,55 @@ +From edadcf67980764c104c25c7c1a0ba91257b89698 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 8 Dec 2016 23:33:30 +0100 +Subject: [PATCH 1/2] Detect bfd.h to enable/disable sepdebugcrcfix building + +tools/sepdebugcrcfix includes , but this header from binutils +is not checked in the configure script. Due to this, sepdebugcrcfix is +attempted to be built even when is not available. This commit +addresses that by adding the appropriate configure check. + +This fixes the following build error: + +tools/sepdebugcrcfix.c:31:17: fatal error: bfd.h: No such file or directory +compilation terminated. +make[3]: *** [tools/sepdebugcrcfix.o] Error 1 + +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 2 ++ + configure.ac | 3 +++ + 2 files changed, 5 insertions(+) + +diff --git a/Makefile.am b/Makefile.am +index 863138c..d8a68f0 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -168,9 +168,11 @@ elfdeps_SOURCES = tools/elfdeps.c + elfdeps_LDADD = rpmio/librpmio.la + elfdeps_LDADD += @WITH_LIBELF_LIB@ @WITH_POPT_LIB@ + ++if HAS_BFD_H + rpmlibexec_PROGRAMS += sepdebugcrcfix + sepdebugcrcfix_SOURCES = tools/sepdebugcrcfix.c + sepdebugcrcfix_LDADD = @WITH_LIBELF_LIB@ ++endif # HAS_BFD_H + endif + endif + +diff --git a/configure.ac b/configure.ac +index c5ae701..b99ecb8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -242,6 +242,9 @@ AC_CHECK_HEADERS([dwarf.h], [ + ]) + AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes]) + ++AC_CHECK_HEADERS([bfd.h]) ++AM_CONDITIONAL(HAS_BFD_H, [test "${ac_cv_header_bfd_h}" = "yes"]) ++ + #================= + # Check for beecrypt library if requested. + AC_ARG_WITH(beecrypt, [ --with-beecrypt build with beecrypt support ],,[with_beecrypt=no]) +-- +2.7.4 + diff --git a/bsp/buildroot/package/rpm/0002-depends-fix.patch b/bsp/buildroot/package/rpm/0002-depends-fix.patch deleted file mode 100644 index 4a927757..00000000 --- a/bsp/buildroot/package/rpm/0002-depends-fix.patch +++ /dev/null @@ -1,19 +0,0 @@ -Bugfix included upstream - -diff -u --new-file --recursive rpm-5.2.0_vanilla/lib/depends.c rpm-5.2.0_depends-fix/lib/depends.c ---- rpm-5.2.0_vanilla/lib/depends.c 2009-05-23 01:23:46.000000000 +0000 -+++ rpm-5.2.0_depends-fix/lib/depends.c 2009-09-22 06:33:37.950783501 +0000 -@@ -2371,11 +2371,11 @@ - - memset(selected, 0, sizeof(*selected) * ts->orderCount); - -- if ((requires = rpmteDS(p, RPMTAG_REQUIRENAME)) != NULL) { -- - /* Avoid narcisstic relations. */ - selected[rpmtsiOc(pi)] = 1; - -+ if ((requires = rpmteDS(p, RPMTAG_REQUIRENAME)) != NULL) { -+ - /* T2. Next "q <- p" relation. */ - - /* First, do pre-requisites. */ diff --git a/bsp/buildroot/package/rpm/0002-tools-sepdebugcrcfix.c-fix-build-with-recent-binutil.patch b/bsp/buildroot/package/rpm/0002-tools-sepdebugcrcfix.c-fix-build-with-recent-binutil.patch new file mode 100644 index 00000000..bebe9451 --- /dev/null +++ b/bsp/buildroot/package/rpm/0002-tools-sepdebugcrcfix.c-fix-build-with-recent-binutil.patch @@ -0,0 +1,43 @@ +From 65afab91444d4996a8e61d1e2d27d52e18417ef5 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 8 Dec 2016 23:45:55 +0100 +Subject: [PATCH 2/2] tools/sepdebugcrcfix.c: fix build with recent binutils + +Moderately recent binutils versions install a header that +checks if config.h is included. While this makes sense in binutils +itself, it does not outside. So the binutils developers have added a +check: if PACKAGE or PACKAGE_VERSION are defined, they assume you're +re-using bfd.h outside of binutils, and therefore including it without +including config.h is legit. + +So we take the same approch as numerous users of bfd.h: fake a PACKAGE +definition. See for example tools/perf/util/srcline.c in the Linux +kernel source tree. + +This fixes the following build error: + +In file included from tools/sepdebugcrcfix.c:31:0: +/home/test/autobuild/run/instance-0/output/host/usr/arc-buildroot-linux-uclibc/sysroot/usr/include/bfd.h:35:2: error: #error config.h must be included before this header + #error config.h must be included before this header + +Signed-off-by: Thomas Petazzoni +--- + tools/sepdebugcrcfix.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tools/sepdebugcrcfix.c b/tools/sepdebugcrcfix.c +index cd7fa02..e7b480f 100644 +--- a/tools/sepdebugcrcfix.c ++++ b/tools/sepdebugcrcfix.c +@@ -28,6 +28,8 @@ + #include + #include + #include ++/* Needed to please */ ++#define PACKAGE "rpm" + #include + + #define _(x) x +-- +2.7.4 + diff --git a/bsp/buildroot/package/rpm/0003-exclude-some-tools.patch b/bsp/buildroot/package/rpm/0003-exclude-some-tools.patch deleted file mode 100644 index 2cbc7cbf..00000000 --- a/bsp/buildroot/package/rpm/0003-exclude-some-tools.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff -ru rpm-5.2.0_vanilla/tools/Makefile.am rpm-5.2.0_exclude-some-tools/tools/Makefile.am ---- rpm-5.2.0_vanilla/tools/Makefile.am 2009-06-03 01:24:42.000000000 +0000 -+++ rpm-5.2.0_exclude-some-tools/tools/Makefile.am 2009-12-20 07:47:13.000000000 +0000 -@@ -45,9 +45,7 @@ - bin_PROGRAMS = rpm2cpio - - pkgbindir = @USRLIBRPM@/bin --pkgbin_PROGRAMS = \ -- rpmcache rpmdigest grep mtree rpmrepo rpmspecdump wget \ -- rpmcmp rpmdeps @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@ -+pkgbin_PROGRAMS = - dist_man_MANS = rpmgrep.1 - - debugedit_SOURCES = debugedit.c hashtab.c -diff -ru rpm-5.2.0_vanilla/tools/Makefile.in rpm-5.2.0_exclude-some-tools/tools/Makefile.in ---- rpm-5.2.0_vanilla/tools/Makefile.in 2009-07-07 21:14:06.000000000 +0000 -+++ rpm-5.2.0_exclude-some-tools/tools/Makefile.in 2009-12-20 07:47:37.000000000 +0000 -@@ -39,11 +39,7 @@ - target_triplet = @target@ - EXTRA_PROGRAMS = rpmkey$(EXEEXT) debugedit$(EXEEXT) - bin_PROGRAMS = rpm2cpio$(EXEEXT) --pkgbin_PROGRAMS = rpmcache$(EXEEXT) rpmdigest$(EXEEXT) grep$(EXEEXT) \ -- mtree$(EXEEXT) rpmrepo$(EXEEXT) rpmspecdump$(EXEEXT) \ -- wget$(EXEEXT) rpmcmp$(EXEEXT) rpmdeps$(EXEEXT) \ -- @WITH_KEYUTILS_RPMKEY@ @WITH_LIBELF_DEBUGEDIT@ $(am__EXEEXT_1) \ -- $(am__EXEEXT_2) -+pkgbin_PROGRAMS = - @WITH_XAR_TRUE@am__append_1 = txar - @WITH_DB_INTERNAL_TRUE@@WITH_DB_TOOLS_INTEGRATED_TRUE@am__append_2 = db_tool - @WITH_DB_INTERNAL_TRUE@@WITH_DB_RPC_TRUE@@WITH_DB_TOOLS_INTEGRATED_TRUE@am__append_3 = \ diff --git a/bsp/buildroot/package/rpm/0004-ignore-shared-mutexes.patch b/bsp/buildroot/package/rpm/0004-ignore-shared-mutexes.patch deleted file mode 100644 index f19d6b6f..00000000 --- a/bsp/buildroot/package/rpm/0004-ignore-shared-mutexes.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ru rpm-5.2.0_vanilla/db/env/env_open.c rpm-5.2.0_test/db/env/env_open.c ---- rpm-5.2.0_vanilla/db/env/env_open.c 2008-05-28 01:23:27.000000000 +0000 -+++ rpm-5.2.0_test/db/env/env_open.c 2009-12-24 14:54:55.000000000 +0000 -@@ -124,7 +124,7 @@ - } - } - --#ifdef HAVE_MUTEX_THREAD_ONLY -+#ifdef NK_HAVE_MUTEX_THREAD_ONLY - /* - * Currently we support one kind of mutex that is intra-process only, - * POSIX 1003.1 pthreads, because a variety of systems don't support diff --git a/bsp/buildroot/package/rpm/0005-no-parentdirs.patch b/bsp/buildroot/package/rpm/0005-no-parentdirs.patch deleted file mode 100644 index d05c99ad..00000000 --- a/bsp/buildroot/package/rpm/0005-no-parentdirs.patch +++ /dev/null @@ -1,14 +0,0 @@ -Reduce parentdirs we use, parentdirs are used for ordering -Included upstream -diff -u --new-file --recursive rpm-5.1.9_vanilla/lib/depends.c rpm-5.1.9_no-parentdirs/lib/depends.c ---- rpm-5.1.9_vanilla/lib/depends.c 2009-04-12 19:46:17.000000000 +0000 -+++ rpm-5.1.9_no-parentdirs/lib/depends.c 2009-06-13 15:21:43.504999639 +0000 -@@ -2257,7 +2257,7 @@ - #define isAuto(_x) ((_x) & _autobits) - - /*@unchecked@*/ --static int slashDepth = 100; /* #slashes pemitted in parentdir deps. */ -+static int slashDepth = 2; /* #slashes pemitted in parentdir deps. */ - - static int countSlashes(const char * dn) - /*@*/ diff --git a/bsp/buildroot/package/rpm/0006-ordering-fix.patch b/bsp/buildroot/package/rpm/0006-ordering-fix.patch deleted file mode 100644 index a618e1f2..00000000 --- a/bsp/buildroot/package/rpm/0006-ordering-fix.patch +++ /dev/null @@ -1,45 +0,0 @@ -Included upstream ---- x/lib/depends.c 2009/05/15 13:40:58 1.445 -+++ y/lib/depends.c 2009/08/22 22:12:02 1.446 -@@ -2216,9 +2216,6 @@ - { - rpmte q, qprev; - -- /* Mark the package as queued. */ -- rpmteTSI(p)->tsi_queued = 1; -- - if ((*rp) == NULL) { /* 1st element */ - /*@-dependenttrans@*/ /* FIX: double indirection */ - (*rp) = (*qp) = p; -@@ -2238,6 +2235,12 @@ - /* XXX Insure removed after added. */ - if (rpmteType(p) == TR_REMOVED && rpmteType(p) != rpmteType(q)) - continue; -+ -+ /* XXX Follow all previous generations in the queue. */ -+ if (rpmteTSI(p)->tsi_queued > rpmteTSI(q)->tsi_queued) -+ continue; -+ -+ /* XXX Within a generation, queue behind more "important". */ - if (rpmteTSI(q)->tsi_qcnt <= rpmteTSI(p)->tsi_qcnt) - break; - } -@@ -2521,6 +2524,9 @@ - - if (rpmteTSI(p)->tsi_count != 0) - continue; -+ -+ /* Mark the package as queued. */ -+ rpmteTSI(p)->tsi_queued = orderingCount + 1; - rpmteTSI(p)->tsi_suc = NULL; - addQ(p, &q, &r, prefcolor); - qlen++; -@@ -2584,6 +2590,8 @@ - (void) rpmteSetParent(p, q); - (void) rpmteSetDegree(q, rpmteDegree(q)+1); - -+ /* Mark the package as queued. */ -+ rpmteTSI(p)->tsi_queued = orderingCount + 1; - /* XXX TODO: add control bit. */ - rpmteTSI(p)->tsi_suc = NULL; - /*@-nullstate@*/ /* XXX FIX: rpmteTSI(q)->tsi_suc can be NULL. */ diff --git a/bsp/buildroot/package/rpm/0007-parentdir-vs-requires.patch b/bsp/buildroot/package/rpm/0007-parentdir-vs-requires.patch deleted file mode 100644 index 309ab254..00000000 --- a/bsp/buildroot/package/rpm/0007-parentdir-vs-requires.patch +++ /dev/null @@ -1,37 +0,0 @@ -Avoid looking up files or directories that this package provides -Included upstream -diff -u --new-file --recursive rpm-5.2.0_vanilla/lib/depends.c rpm-5.2.0_parentdir-vs-requires/lib/depends.c ---- rpm-5.2.0_vanilla/lib/depends.c 2009-05-23 01:23:46.000000000 +0000 -+++ rpm-5.2.0_parentdir-vs-requires/lib/depends.c 2009-09-22 17:00:24.880956271 +0000 -@@ -2095,6 +2095,7 @@ - rpmtsi qi; rpmte q; - tsortInfo tsi; - nsType NSType = rpmdsNSType(requires); -+ const char * N = rpmdsN(requires); - fnpyKey key; - int teType = rpmteType(p); - alKey pkgKey; -@@ -2128,6 +2129,23 @@ - break; - } - -+ /* Avoid looking up files/directories that are "owned" by _THIS_ package. */ -+ if (*N == '/') { -+ rpmfi fi = rpmteFI(p, RPMTAG_BASENAMES); -+ int bingo = 0; -+ -+ fi = rpmfiInit(fi, 0); -+ while (rpmfiNext(fi) >= 0) { -+ const char * fn = rpmfiFN(fi); -+ if (strcmp(N, fn)) -+ continue; -+ bingo = 1; -+ break; -+ } -+ if (bingo) -+ return 0; -+ } -+ - pkgKey = RPMAL_NOMATCH; - key = rpmalSatisfiesDepend(al, requires, &pkgKey); - diff --git a/bsp/buildroot/package/rpm/0008-short-circuit-c99.patch b/bsp/buildroot/package/rpm/0008-short-circuit-c99.patch deleted file mode 100644 index 5d7b53a2..00000000 --- a/bsp/buildroot/package/rpm/0008-short-circuit-c99.patch +++ /dev/null @@ -1,235 +0,0 @@ -Buildroot specific -diff -ru rpm-5.1.9_vanilla/xz/configure rpm-5.1.9_short-circuit-c99/xz/configure ---- rpm-5.1.9_vanilla/xz/configure 2009-04-18 16:47:23.000000000 +0000 -+++ rpm-5.1.9_short-circuit-c99/xz/configure 2009-08-04 08:25:59.000000000 +0000 -@@ -4970,214 +4970,7 @@ - am__fastdepCC_FALSE= - fi - -- -- { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5 --$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } --if test "${ac_cv_prog_cc_c99+set}" = set; then -- $as_echo_n "(cached) " >&6 --else -- ac_cv_prog_cc_c99=no --ac_save_CC=$CC --cat >conftest.$ac_ext <<_ACEOF --/* confdefs.h. */ --_ACEOF --cat confdefs.h >>conftest.$ac_ext --cat >>conftest.$ac_ext <<_ACEOF --/* end confdefs.h. */ --#include --#include --#include --#include --#include -- --// Check varargs macros. These examples are taken from C99 6.10.3.5. --#define debug(...) fprintf (stderr, __VA_ARGS__) --#define showlist(...) puts (#__VA_ARGS__) --#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) --static void --test_varargs_macros (void) --{ -- int x = 1234; -- int y = 5678; -- debug ("Flag"); -- debug ("X = %d\n", x); -- showlist (The first, second, and third items.); -- report (x>y, "x is %d but y is %d", x, y); --} -- --// Check long long types. --#define BIG64 18446744073709551615ull --#define BIG32 4294967295ul --#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) --#if !BIG_OK -- your preprocessor is broken; --#endif --#if BIG_OK --#else -- your preprocessor is broken; --#endif --static long long int bignum = -9223372036854775807LL; --static unsigned long long int ubignum = BIG64; -- --struct incomplete_array --{ -- int datasize; -- double data[]; --}; -- --struct named_init { -- int number; -- const wchar_t *name; -- double average; --}; -- --typedef const char *ccp; -- --static inline int --test_restrict (ccp restrict text) --{ -- // See if C++-style comments work. -- // Iterate through items via the restricted pointer. -- // Also check for declarations in for loops. -- for (unsigned int i = 0; *(text+i) != '\0'; ++i) -- continue; -- return 0; --} -- --// Check varargs and va_copy. --static void --test_varargs (const char *format, ...) --{ -- va_list args; -- va_start (args, format); -- va_list args_copy; -- va_copy (args_copy, args); -- -- const char *str; -- int number; -- float fnumber; -- -- while (*format) -- { -- switch (*format++) -- { -- case 's': // string -- str = va_arg (args_copy, const char *); -- break; -- case 'd': // int -- number = va_arg (args_copy, int); -- break; -- case 'f': // float -- fnumber = va_arg (args_copy, double); -- break; -- default: -- break; -- } -- } -- va_end (args_copy); -- va_end (args); --} -- --int --main () --{ -- -- // Check bool. -- _Bool success = false; -- -- // Check restrict. -- if (test_restrict ("String literal") == 0) -- success = true; -- char *restrict newvar = "Another string"; -- -- // Check varargs. -- test_varargs ("s, d' f .", "string", 65, 34.234); -- test_varargs_macros (); -- -- // Check flexible array members. -- struct incomplete_array *ia = -- malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); -- ia->datasize = 10; -- for (int i = 0; i < ia->datasize; ++i) -- ia->data[i] = i * 1.234; -- -- // Check named initializers. -- struct named_init ni = { -- .number = 34, -- .name = L"Test wide string", -- .average = 543.34343, -- }; -- -- ni.number = 58; -- -- int dynamic_array[ni.number]; -- dynamic_array[ni.number - 1] = 543; -- -- // work around unused variable warnings -- return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' -- || dynamic_array[ni.number - 1] != 543); -- -- ; -- return 0; --} --_ACEOF --for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 --do -- CC="$ac_save_CC $ac_arg" -- rm -f conftest.$ac_objext --if { (ac_try="$ac_compile" --case "(($ac_try" in -- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -- *) ac_try_echo=$ac_try;; --esac --eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" --$as_echo "$ac_try_echo") >&5 -- (eval "$ac_compile") 2>conftest.er1 -- ac_status=$? -- grep -v '^ *+' conftest.er1 >conftest.err -- rm -f conftest.er1 -- cat conftest.err >&5 -- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 -- (exit $ac_status); } && { -- test -z "$ac_c_werror_flag" || -- test ! -s conftest.err -- } && test -s conftest.$ac_objext; then -- ac_cv_prog_cc_c99=$ac_arg --else -- $as_echo "$as_me: failed program was:" >&5 --sed 's/^/| /' conftest.$ac_ext >&5 -- -- --fi -- --rm -f core conftest.err conftest.$ac_objext -- test "x$ac_cv_prog_cc_c99" != "xno" && break --done --rm -f conftest.$ac_ext --CC=$ac_save_CC -- --fi --# AC_CACHE_VAL --case "x$ac_cv_prog_cc_c99" in -- x) -- { $as_echo "$as_me:$LINENO: result: none needed" >&5 --$as_echo "none needed" >&6; } ;; -- xno) -- { $as_echo "$as_me:$LINENO: result: unsupported" >&5 --$as_echo "unsupported" >&6; } ;; -- *) -- CC="$CC $ac_cv_prog_cc_c99" -- { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5 --$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; --esac -- -- -- --if test x$ac_cv_prog_cc_c99 = xno ; then -- { { $as_echo "$as_me:$LINENO: error: No C99 compiler was found." >&5 --$as_echo "$as_me: error: No C99 compiler was found." >&2;} -- { (exit 1); exit 1; }; } --fi -+CC="$CC -std=c99" - - if test "x$CC" != xcc; then - { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 -diff -ru rpm-5.1.9_vanilla/xz/configure.ac rpm-5.1.9_short-circuit-c99/xz/configure.ac ---- rpm-5.1.9_vanilla/xz/configure.ac 2009-02-16 17:07:46.000000000 +0000 -+++ rpm-5.1.9_short-circuit-c99/xz/configure.ac 2009-08-04 08:25:28.000000000 +0000 -@@ -402,10 +402,7 @@ - AM_INIT_AUTOMAKE([1.10 foreign tar-v7 filename-length-max=99]) - AC_PROG_LN_S - --AC_PROG_CC_C99 --if test x$ac_cv_prog_cc_c99 = xno ; then -- AC_MSG_ERROR([No C99 compiler was found.]) --fi -+CC="$CC -std=c99" - - AM_PROG_CC_C_O - AM_PROG_AS diff --git a/bsp/buildroot/package/rpm/Config.in b/bsp/buildroot/package/rpm/Config.in index 2be646a1..9b4c8a7e 100644 --- a/bsp/buildroot/package/rpm/Config.in +++ b/bsp/buildroot/package/rpm/Config.in @@ -1,28 +1,21 @@ -comment "rpm needs a toolchain w/ threads" - depends on !BR2_TOOLCHAIN_HAS_THREADS - depends on BR2_USE_MMU # fork() +comment "rpm needs a toolchain w/ dynamic library and threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS - -comment "rpm needs a toolchain w/ gcc >= 5" - depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 && BR2_sh + depends on BR2_USE_MMU config BR2_PACKAGE_RPM bool "rpm" - # triggers internal compiler error - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 || !BR2_sh + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS depends on BR2_TOOLCHAIN_HAS_THREADS # beecrypt depends on BR2_USE_MMU # fork() - depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS - select BR2_PACKAGE_BEECRYPT + select BR2_PACKAGE_BEECRYPT if !BR2_PACKAGE_LIBNSS + select BR2_PACKAGE_BERKELEYDB + select BR2_PACKAGE_FILE select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE - select BR2_PACKAGE_NEON - select BR2_PACKAGE_NEON_SSL - select BR2_PACKAGE_NEON_XML - select BR2_PACKAGE_NEON_ZLIB - select BR2_PACKAGE_OPENSSL select BR2_PACKAGE_POPT select BR2_PACKAGE_ZLIB help - The RPM package management system. + The RPM Package Manager (RPM). - http://rpm5.org + http://www.rpm.org/ diff --git a/bsp/buildroot/package/rpm/rpm.hash b/bsp/buildroot/package/rpm/rpm.hash index 06657464..c9c4d659 100644 --- a/bsp/buildroot/package/rpm/rpm.hash +++ b/bsp/buildroot/package/rpm/rpm.hash @@ -1,2 +1,5 @@ -# Locally calculated -sha256 34a959c0ed670cadcdc52c6025e822fac6f5d1015e3b75123f53ebe53b923e98 rpm-5.2.0.tar.gz +# From http://rpm.org/wiki/Releases/4.13.0 +sha1 c6ce4f879ca6a75340921093105e5ef9d33381d3 rpm-4.13.0.tar.bz2 +# Locally computed +sha256 a3e5568d721737a24141737e6036bb39ba9dfbeaa03fa4a51cc7881a243e0c5d b5f1895aae096836d6e8e155ee289e1b10fcabcb.patch +sha256 7ab0e08e143bb2d43d5b0553ee22ea34da15a611c597860a6110745467d20fa8 c810a0aca3f1148d2072d44b91b8cc9caeb4cf19.patch diff --git a/bsp/buildroot/package/rpm/rpm.mk b/bsp/buildroot/package/rpm/rpm.mk index 7f346b21..2e829d75 100644 --- a/bsp/buildroot/package/rpm/rpm.mk +++ b/bsp/buildroot/package/rpm/rpm.mk @@ -4,61 +4,86 @@ # ################################################################################ -RPM_VERSION_MAJOR = 5.2 -RPM_VERSION = $(RPM_VERSION_MAJOR).0 -RPM_SITE = http://rpm5.org/files/rpm/rpm-$(RPM_VERSION_MAJOR) -RPM_DEPENDENCIES = host-pkgconf zlib beecrypt neon popt openssl -RPM_LICENSE = LGPLv2.1 -RPM_LICENSE_FILES = COPYING.LIB +RPM_VERSION = 4.13.0 +RPM_SOURCE = rpm-$(RPM_VERSION).tar.bz2 +RPM_SITE = https://github.com/rpm-software-management/rpm/releases/download/rpm-$(RPM_VERSION)-release +RPM_DEPENDENCIES = host-pkgconf berkeleydb file popt zlib +RPM_LICENSE = GPLv2 or LGPLv2 (library only) +RPM_LICENSE_FILES = COPYING +RPM_PATCH = \ + https://github.com/rpm-software-management/rpm/commit/b5f1895aae096836d6e8e155ee289e1b10fcabcb.patch \ + https://github.com/rpm-software-management/rpm/commit/c810a0aca3f1148d2072d44b91b8cc9caeb4cf19.patch -RPM_CONF_ENV = \ - CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/beecrypt -I$(STAGING_DIR)/usr/include/neon -DHAVE_MUTEX_THREAD_ONLY" \ - ac_cv_va_copy=yes +# b5f1895aae096836d6e8e155ee289e1b10fcabcb.patch +# c810a0aca3f1148d2072d44b91b8cc9caeb4cf19.patch +RPM_AUTORECONF = YES RPM_CONF_OPTS = \ - --disable-build-versionscript \ + --disable-python \ --disable-rpath \ - --without-selinux \ - --without-python \ - --without-perl \ - --with-openssl=external \ - --with-zlib=external \ - --with-libbeecrypt=$(STAGING_DIR) \ - --with-popt=external + --with-external-db \ + --with-gnu-ld \ + --without-cap \ + --without-hackingdocs \ + --without-lua + +ifeq ($(BR2_PACKAGE_ACL),y) +RPM_DEPENDENCIES += acl +RPM_CONF_OPTS += --with-acl +else +RPM_CONF_OPTS += --without-acl +endif + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +RPM_DEPENDENCIES += libnss +RPM_CONF_OPTS += --without-beecrypt +RPM_CFLAGS += -I$(STAGING_DIR)/usr/include/nss -I$(STAGING_DIR)/usr/include/nspr +else +RPM_DEPENDENCIES += beecrypt +RPM_CONF_OPTS += --with-beecrypt +RPM_CFLAGS += -I$(STAGING_DIR)/usr/include/beecrypt +endif ifeq ($(BR2_NEEDS_GETTEXT_IF_LOCALE),y) RPM_DEPENDENCIES += gettext -endif - -ifeq ($(BR2_PACKAGE_PCRE),y) -RPM_DEPENDENCIES += pcre -RPM_CONF_OPTS += --with-pcre=external +RPM_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr else -RPM_CONF_OPTS += --with-pcre=none +RPM_CONF_OPTS += --without-libintl-prefix endif -ifeq ($(BR2_PACKAGE_FILE),y) -RPM_DEPENDENCIES += file -RPM_CONF_OPTS += --with-file=external +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +RPM_DEPENDENCIES += libarchive +RPM_CONF_OPTS += --with-archive else -RPM_CONF_OPTS += --with-file=none +RPM_CONF_OPTS += --without-archive endif -# xz payload support needs a toolchain w/ C++ -ifeq ($(BR2_PACKAGE_XZ)$(BR2_INSTALL_LIBSTDCPP),yy) -RPM_DEPENDENCIES += xz -RPM_CONF_OPTS += --with-xz=external +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +RPM_DEPENDENCIES += libselinux +RPM_CONF_OPTS += --with-selinux else -RPM_CONF_OPTS += --with-xz=none +RPM_CONF_OPTS += --without-selinux endif -ifeq ($(BR2_PACKAGE_BZIP2),y) -RPM_CONF_OPTS += --with-bzip2 -RPM_DEPENDENCIES += bzip2 +# For the elfutils and binutils dependencies, there are no +# configuration options to explicitly enable/disable them. +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +RPM_DEPENDENCIES += elfutils endif -RPM_MAKE = $(MAKE1) +ifeq ($(BR2_PACKAGE_BINUTILS),y) +RPM_DEPENDENCIES += binutils +endif -RPM_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) program_transform_name= install +# RPM, when using NLS, requires GNU gettext's _nl_msg_cat_cntr, which is not +# provided in musl. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +RPM_CONF_OPTS += --disable-nls +endif + +# ac_cv_prog_cc_c99: RPM uses non-standard GCC extensions (ex. `asm`). +RPM_CONF_ENV = \ + ac_cv_prog_cc_c99='-std=gnu99' \ + CFLAGS="$(TARGET_CFLAGS) $(RPM_CFLAGS)" $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/rs485conf/rs485conf.mk b/bsp/buildroot/package/rs485conf/rs485conf.mk index 7fda39cc..8749268f 100644 --- a/bsp/buildroot/package/rs485conf/rs485conf.mk +++ b/bsp/buildroot/package/rs485conf/rs485conf.mk @@ -10,11 +10,11 @@ RS485CONF_LICENSE = BSD-3c RS485CONF_LICENSE_FILES = LICENSE define RS485CONF_BUILD_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) endef define RS485CONF_INSTALL_TARGET_CMDS - $(MAKE) PREFIX="$(TARGET_DIR)/usr" -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="$(TARGET_DIR)/usr" -C $(@D) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/rsyslog/Config.in b/bsp/buildroot/package/rsyslog/Config.in index b3c146dc..c4dc97af 100644 --- a/bsp/buildroot/package/rsyslog/Config.in +++ b/bsp/buildroot/package/rsyslog/Config.in @@ -7,6 +7,7 @@ config BR2_PACKAGE_RSYSLOG depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_USE_MMU # fork() depends on !BR2_STATIC_LIBS # modules + depends on !BR2_TOOLCHAIN_USES_MUSL # GLOB_BRACE # Propagate the exact same dependency from libfastjson, # even though rsyslog already depends on threads for itself: depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_THREADS @@ -16,8 +17,9 @@ config BR2_PACKAGE_RSYSLOG http://www.rsyslog.com -comment "rsyslog needs a toolchain w/ threads, dynamic library" +comment "rsyslog needs a uClibc or glibc toolchain w/ threads, dynamic library" depends on BR2_USE_MMU depends on BR2_TOOLCHAIN_HAS_SYNC_4 - depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/bsp/buildroot/package/rsyslog/rsyslog.hash b/bsp/buildroot/package/rsyslog/rsyslog.hash index 7dc341ad..4fe6a0e2 100644 --- a/bsp/buildroot/package/rsyslog/rsyslog.hash +++ b/bsp/buildroot/package/rsyslog/rsyslog.hash @@ -1,2 +1,2 @@ # From http://www.rsyslog.com/downloads/download-v8-stable/ -sha256 3379b30f2e6ef05a0f1c7327c73923fa5877a80b984506cdf48ed068c94a575e rsyslog-8.19.0.tar.gz +sha256 06e2884181333dccecceaca82827ae24ca7a258b4fbf7b1e07a80d4caae640ca rsyslog-8.22.0.tar.gz diff --git a/bsp/buildroot/package/rsyslog/rsyslog.mk b/bsp/buildroot/package/rsyslog/rsyslog.mk index 18a57372..3254d999 100644 --- a/bsp/buildroot/package/rsyslog/rsyslog.mk +++ b/bsp/buildroot/package/rsyslog/rsyslog.mk @@ -4,7 +4,7 @@ # ################################################################################ -RSYSLOG_VERSION = 8.19.0 +RSYSLOG_VERSION = 8.22.0 RSYSLOG_SITE = http://rsyslog.com/files/download/rsyslog RSYSLOG_LICENSE = GPLv3, LGPLv3, Apache-2.0 RSYSLOG_LICENSE_FILES = COPYING COPYING.LESSER COPYING.ASL20 @@ -66,11 +66,14 @@ endif ifeq ($(BR2_INIT_SYSTEMD),y) RSYSLOG_CONF_OPTS += \ - --enable-systemd \ + --enable-imjournal \ + --enable-omjournal \ --with-systemdsystemunitdir=/usr/lib/systemd/system RSYSLOG_DEPENDENCIES += systemd else -RSYSLOG_CONF_OPTS += --disable-systemd +RSYSLOG_CONF_OPTS += \ + --disable-imjournal \ + --disable-omjournal endif define RSYSLOG_INSTALL_INIT_SYSV diff --git a/bsp/buildroot/package/rt-tests/rt-tests.mk b/bsp/buildroot/package/rt-tests/rt-tests.mk index 19f1021a..addc15e6 100644 --- a/bsp/buildroot/package/rt-tests/rt-tests.mk +++ b/bsp/buildroot/package/rt-tests/rt-tests.mk @@ -15,14 +15,14 @@ RT_TESTS_DEPENDENCIES = python endif define RT_TESTS_BUILD_CMDS - $(MAKE) -C $(@D) \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ CC="$(TARGET_CC)" \ CFLAGS="$(TARGET_CFLAGS)" \ prefix=/usr endef define RT_TESTS_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ DESTDIR="$(TARGET_DIR)" \ prefix=/usr \ $(if $(BR2_PACKAGE_PYTHON),PYLIB=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/,PYLIB="") \ diff --git a/bsp/buildroot/package/rtl8188eu/rtl8188eu.mk b/bsp/buildroot/package/rtl8188eu/rtl8188eu.mk index 5da6bf35..8560be29 100644 --- a/bsp/buildroot/package/rtl8188eu/rtl8188eu.mk +++ b/bsp/buildroot/package/rtl8188eu/rtl8188eu.mk @@ -10,12 +10,11 @@ RTL8188EU_LICENSE = GPLv2, proprietary (rtl8188eufw.bin firmware blob) RTL8188EU_LICENSE_FILES = COPYING RTL8188EU_MODULE_MAKE_OPTS = CONFIG_RTL8188EU=m -$(eval $(kernel-module)) - define RTL8188EU_INSTALL_FIRMWARE $(INSTALL) -D -m 644 $(@D)/rtl8188eufw.bin \ $(TARGET_DIR)/lib/firmware/rtlwifi/rtl8188eufw.bin endef RTL8188EU_POST_INSTALL_TARGET_HOOKS += RTL8188EU_INSTALL_FIRMWARE +$(eval $(kernel-module)) $(eval $(generic-package)) diff --git a/bsp/buildroot/package/rtl8723bs/0001-rtl8723bs-add-debug-level-modparam.patch b/bsp/buildroot/package/rtl8723bs/0001-rtl8723bs-add-debug-level-modparam.patch new file mode 100644 index 00000000..0443c1f9 --- /dev/null +++ b/bsp/buildroot/package/rtl8723bs/0001-rtl8723bs-add-debug-level-modparam.patch @@ -0,0 +1,41 @@ +From 9f70428f506ac9d5af325004c01c59c62669d7eb Mon Sep 17 00:00:00 2001 +From: Jason Abele +Date: Sat, 15 Aug 2015 18:20:54 -0700 +Subject: [PATCH] rtl8723bs: add debug level modparam + +For ease of controlling debug printk verbosity, add a module parameter +which sets debug level at module load. + +Signed-off-by: Jason Abele +[Fixed to apply on current version] +Signed-off-by: Ariel D'Alessandro +--- + os_dep/os_intfs.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/os_dep/os_intfs.c b/os_dep/os_intfs.c +index b30c2a0..eeb8946 100644 +--- a/os_dep/os_intfs.c ++++ b/os_dep/os_intfs.c +@@ -231,6 +231,10 @@ module_param(rtw_decrypt_phy_file, int, 0644); + MODULE_PARM_DESC(rtw_decrypt_phy_file,"Enable Decrypt PHY File"); + #endif + ++int rtw_debug_level = _drv_err_; ++module_param(rtw_debug_level, int, 0644); ++MODULE_PARM_DESC(rtw_debug_level,"Set Driver Debug Verbosity"); ++ + int _netdev_open(struct net_device *pnetdev); + int netdev_open (struct net_device *pnetdev); + static int netdev_close (struct net_device *pnetdev); +@@ -347,6 +351,7 @@ static uint loadparam(struct adapter *padapter, _nic_hdl pnetdev) + registry_par->qos_opt_enable = (u8)rtw_qos_opt_enable; + + registry_par->hiq_filter = (u8)rtw_hiq_filter; ++ GlobalDebugLevel = rtw_debug_level; + return status; + } + +-- +2.8.3 + diff --git a/bsp/buildroot/package/rtl8723bs/Config.in b/bsp/buildroot/package/rtl8723bs/Config.in new file mode 100644 index 00000000..3d5dea40 --- /dev/null +++ b/bsp/buildroot/package/rtl8723bs/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_RTL8723BS + bool "rtl8723bs" + depends on BR2_LINUX_KERNEL + help + rtl8723bs wifi driver + + https://github.com/hadess/rtl8723bs + +comment "rtl8723bs needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/bsp/buildroot/package/rtl8723bs/rtl8723bs.mk b/bsp/buildroot/package/rtl8723bs/rtl8723bs.mk new file mode 100644 index 00000000..f5bc1acd --- /dev/null +++ b/bsp/buildroot/package/rtl8723bs/rtl8723bs.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# rtl8723bs +# +################################################################################ + +RTL8723BS_VERSION = 11ab92d8ccd71c80f0102828366b14ef6b676fb2 +RTL8723BS_SITE = $(call github,hadess,rtl8723bs,$(RTL8723BS_VERSION)) +RTL8723BS_LICENSE = GPLv2, proprietary (*.bin firmware blobs) + +RTL8723BS_MODULE_MAKE_OPTS = \ + CONFIG_RTL8723BS=m \ + KVER=$(LINUX_VERSION_PROBED) \ + KSRC=$(LINUX_DIR) + +RTL8723BS_BINS = rtl8723bs_ap_wowlan.bin rtl8723bs_wowlan.bin \ + rtl8723bs_bt.bin rtl8723bs_nic.bin + +define RTL8723BS_INSTALL_FIRMWARE + $(foreach bin, $(RTL8723BS_BINS), \ + $(INSTALL) -D -m 644 $(@D)/$(bin) $(TARGET_DIR)/lib/firmware/rtlwifi/$(bin) + ) +endef +RTL8723BS_POST_INSTALL_TARGET_HOOKS += RTL8723BS_INSTALL_FIRMWARE + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/rtmpdump/rtmpdump.mk b/bsp/buildroot/package/rtmpdump/rtmpdump.mk index ad4308c5..2e3428f1 100644 --- a/bsp/buildroot/package/rtmpdump/rtmpdump.mk +++ b/bsp/buildroot/package/rtmpdump/rtmpdump.mk @@ -38,7 +38,7 @@ RTMPDUMP_MAKE_FLAGS = \ $(RTMPDUMP_SHARED) define RTMPDUMP_BUILD_CMDS - $(MAKE) $(RTMPDUMP_MAKE_FLAGS) \ + $(TARGET_MAKE_ENV) $(MAKE) $(RTMPDUMP_MAKE_FLAGS) \ XCFLAGS="$(RTMPDUMP_CFLAGS)" \ XLDFLAGS="$(TARGET_LDFLAGS)" \ CROSS_COMPILE="$(TARGET_CROSS)" \ @@ -46,11 +46,11 @@ define RTMPDUMP_BUILD_CMDS endef define RTMPDUMP_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D)/librtmp install DESTDIR=$(STAGING_DIR) $(RTMPDUMP_MAKE_FLAGS) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/librtmp install DESTDIR=$(STAGING_DIR) $(RTMPDUMP_MAKE_FLAGS) endef define RTMPDUMP_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D)/librtmp install DESTDIR=$(TARGET_DIR) $(RTMPDUMP_MAKE_FLAGS) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/librtmp install DESTDIR=$(TARGET_DIR) $(RTMPDUMP_MAKE_FLAGS) endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/ruby/0001-process.c-fix-rb_spawn_process-for-nommu.patch b/bsp/buildroot/package/ruby/0001-process.c-fix-rb_spawn_process-for-nommu.patch deleted file mode 100644 index 701c1059..00000000 --- a/bsp/buildroot/package/ruby/0001-process.c-fix-rb_spawn_process-for-nommu.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 24e6d5bcf791a5c3f46191e544731420ff8b1312 Mon Sep 17 00:00:00 2001 -From: Gustavo Zacarias -Date: Thu, 19 May 2016 11:10:02 -0300 -Subject: [PATCH] process.c: fix rb_spawn_process() for nommu - -rb_spawn_process() in process.c tries different solutions for when fork -and/or spawnv are/aren't available. -The last resort when both aren't is to use the system() call which -stores the value in the status variable, which isn't declared. - -Signed-off-by: Gustavo Zacarias ---- -Patch status: reported https://bugs.ruby-lang.org/issues/12398 - - process.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/process.c b/process.c -index e196639..40967f7 100644 ---- a/process.c -+++ b/process.c -@@ -3897,6 +3897,9 @@ rb_spawn_process(struct rb_execarg *eargp, char *errmsg, size_t errmsg_buflen) - VALUE prog; - struct rb_execarg sarg; - #endif -+#if !defined HAVE_WORKING_FORK || !USE_SPAWNV -+ int status; -+#endif - - #if defined HAVE_WORKING_FORK && !USE_SPAWNV - pid = rb_fork_async_signal_safe(NULL, rb_exec_atfork, eargp, eargp->redirect_fds, errmsg, errmsg_buflen); --- -2.7.3 - diff --git a/bsp/buildroot/package/ruby/ruby.hash b/bsp/buildroot/package/ruby/ruby.hash index 7e627441..19722a3c 100644 --- a/bsp/buildroot/package/ruby/ruby.hash +++ b/bsp/buildroot/package/ruby/ruby.hash @@ -1,2 +1,2 @@ -# From https://www.ruby-lang.org/en/news/2016/04/26/ruby-2-3-1-released/ -sha256 6725b5534d5a3a21ec4f14d6d7b9921a0d00d08acb88fd04cd50b47b70496338 ruby-2.3.1.tar.xz +# From https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/ +sha256 3a87fef45cba48b9322236be60c455c13fd4220184ce7287600361319bb63690 ruby-2.4.0.tar.xz diff --git a/bsp/buildroot/package/ruby/ruby.mk b/bsp/buildroot/package/ruby/ruby.mk index 3b8310c1..f0dc63b4 100644 --- a/bsp/buildroot/package/ruby/ruby.mk +++ b/bsp/buildroot/package/ruby/ruby.mk @@ -4,9 +4,9 @@ # ################################################################################ -RUBY_VERSION_MAJOR = 2.3 -RUBY_VERSION = $(RUBY_VERSION_MAJOR).1 -RUBY_VERSION_EXT = 2.3.0 +RUBY_VERSION_MAJOR = 2.4 +RUBY_VERSION = $(RUBY_VERSION_MAJOR).0 +RUBY_VERSION_EXT = 2.4.0 RUBY_SITE = http://cache.ruby-lang.org/pub/ruby/$(RUBY_VERSION_MAJOR) RUBY_SOURCE = ruby-$(RUBY_VERSION).tar.xz RUBY_DEPENDENCIES = host-pkgconf host-ruby @@ -24,11 +24,22 @@ RUBY_CFLAGS = $(TARGET_CFLAGS) # With some SuperH toolchains (like Sourcery CodeBench 2012.09), ruby fails to # build with 'pcrel too far'. This seems to be caused by the -Os option we pass # by default. To fix the problem, use standard -O2 optimization instead. -ifeq ($(BR2_sh)$(BR2_sh64),y) +ifeq ($(BR2_sh),y) RUBY_CFLAGS += -O2 endif RUBY_CONF_ENV = CFLAGS="$(RUBY_CFLAGS)" +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# On uClibc, finite, isinf and isnan are not directly implemented as +# functions. Instead math.h #define's these to __finite, __isinf and +# __isnan, confusing the Ruby configure script. Tell it that they +# really are available. +RUBY_CONF_ENV += \ + ac_cv_func_finite=yes \ + ac_cv_func_isinf=yes \ + ac_cv_func_isnan=yes +endif + ifeq ($(BR2_bfin),y) RUBY_CONF_ENV += ac_cv_func_dl_iterate_phdr=no # Blackfin doesn't have FFI closure support, needed by the fiddle diff --git a/bsp/buildroot/package/runc/runc.hash b/bsp/buildroot/package/runc/runc.hash index c409a664..0b6a24ff 100644 --- a/bsp/buildroot/package/runc/runc.hash +++ b/bsp/buildroot/package/runc/runc.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 196b78c6caf1a4c6257314b393381baffa7c82bb2690ac02a7b3d6cd6cfe7776 runc-cc29e3dded8e27ba8f65738f40d251c885030a28.tar.gz +sha256 374822cc2895ed3899b7a3a03b566413ea782fccec1307231f27894e9c6d5bea runc-50a19c6ff828c58e5dab13830bd3dacde268afe5.tar.gz diff --git a/bsp/buildroot/package/runc/runc.mk b/bsp/buildroot/package/runc/runc.mk index e2ab5edf..95afcaaf 100644 --- a/bsp/buildroot/package/runc/runc.mk +++ b/bsp/buildroot/package/runc/runc.mk @@ -4,7 +4,7 @@ # ################################################################################ -RUNC_VERSION = cc29e3dded8e27ba8f65738f40d251c885030a28 +RUNC_VERSION = 50a19c6ff828c58e5dab13830bd3dacde268afe5 RUNC_SITE = $(call github,opencontainers,runc,$(RUNC_VERSION)) RUNC_LICENSE = Apache-2.0 RUNC_LICENSE_FILES = LICENSE @@ -22,7 +22,7 @@ RUNC_GLDFLAGS = \ -X main.gitCommit=$(RUNC_VERSION) ifeq ($(BR2_STATIC_LIBS),y) -FLANNEL_GLDFLAGS += -extldflags '-static' +RUNC_GLDFLAGS += -extldflags '-static' endif RUNC_GOTAGS = cgo static_build diff --git a/bsp/buildroot/package/sam-ba/sam-ba.mk b/bsp/buildroot/package/sam-ba/sam-ba.mk index aede615a..7fc65c01 100644 --- a/bsp/buildroot/package/sam-ba/sam-ba.mk +++ b/bsp/buildroot/package/sam-ba/sam-ba.mk @@ -7,8 +7,10 @@ SAM_BA_SITE = http://www.atmel.com/dyn/resources/prod_documents SAM_BA_VERSION = 2.16 SAM_BA_SOURCE = sam-ba_$(SAM_BA_VERSION)_linux.zip -SAM_BA_LICENSE = BSD-like (partly binary-only) -SAM_BA_LICENSE_FILES = doc/readme.txt +SAM_BA_LICENSE = SAM-BA license (sam-ba executable), \ + BSD-2c like, BSD-4c (TCL and applets code) +SAM_BA_LICENSE_FILES = doc/license.txt tcl_lib/boards.tcl \ + applets/sam4c/libraries/libchip_sam4c/include/sam4c/sam4c32e-1.h define HOST_SAM_BA_EXTRACT_CMDS $(UNZIP) -d $(BUILD_DIR) $(DL_DIR)/$(SAM_BA_SOURCE) diff --git a/bsp/buildroot/package/samba4/0001-disable-libbsd.patch b/bsp/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch similarity index 56% rename from bsp/buildroot/package/samba4/0001-disable-libbsd.patch rename to bsp/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch index 67f79d00..4d0c770a 100644 --- a/bsp/buildroot/package/samba4/0001-disable-libbsd.patch +++ b/bsp/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch @@ -1,16 +1,25 @@ +From fc0304ba92ec7ae9a2f75fbc31d97fee39d19665 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Wed, 7 Sep 2016 23:03:43 -0300 +Subject: [PATCH] libreplace: disable libbsd support + Disable libbsd support, samba4 uses a global config.h for its own codebase and that of heimdal (when building with builtin). -This causes redefinition conflicts for link(2) when both standard unistd.h -and bsd/unistd.h get included. +This causes redefinition conflicts for link(2) when both standard +unistd.h and bsd/unistd.h get included. Signed-off-by: Gustavo Zacarias +--- + lib/replace/wscript | 12 ------------ + 1 file changed, 12 deletions(-) -diff -Nura samba-4.2.0rc1.orig/lib/replace/wscript samba-4.2.0rc1/lib/replace/wscript ---- samba-4.2.0rc1.orig/lib/replace/wscript 2014-10-01 06:17:32.000000000 -0300 -+++ samba-4.2.0rc1/lib/replace/wscript 2014-10-01 07:21:13.559498987 -0300 -@@ -282,15 +282,6 @@ - conf.CHECK_FUNCS('strtouq strtoll __strtoll strtoq memalign posix_memalign') - conf.CHECK_FUNCS('prctl') +diff --git a/lib/replace/wscript b/lib/replace/wscript +index 1dfd902..456be9b 100644 +--- a/lib/replace/wscript ++++ b/lib/replace/wscript +@@ -248,18 +248,6 @@ def configure(conf): + + conf.CHECK_FUNCS('prctl dirname basename') - # libbsd on some platforms provides strlcpy and strlcat - if not conf.CHECK_FUNCS('strlcpy strlcat'): @@ -20,7 +29,13 @@ diff -Nura samba-4.2.0rc1.orig/lib/replace/wscript samba-4.2.0rc1/lib/replace/ws - conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h') - if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'): - conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h') +- +- if not conf.CHECK_FUNCS('closefrom'): +- conf.CHECK_FUNCS_IN('closefrom', 'bsd', headers='bsd/unistd.h') - conf.CHECK_CODE(''' struct ucred cred; socklen_t cred_len; +-- +2.7.3 + diff --git a/bsp/buildroot/package/samba4/Config.in b/bsp/buildroot/package/samba4/Config.in index 5ae2c366..44741856 100644 --- a/bsp/buildroot/package/samba4/Config.in +++ b/bsp/buildroot/package/samba4/Config.in @@ -1,15 +1,15 @@ -comment "samba4 needs a toolchain w/ RPC, wchar, dynamic library, threads" +comment "samba4 needs a toolchain w/ RPC, wchar, dynamic library, NPTL" depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_NATIVE_RPC \ - || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL depends on BR2_USE_MMU config BR2_PACKAGE_SAMBA4 bool "samba4" depends on BR2_USE_MMU # fork() - depends on BR2_USE_WCHAR # e2fsprogs + depends on BR2_USE_WCHAR # python depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC - depends on BR2_TOOLCHAIN_HAS_THREADS # python -> libffi + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # python -> libffi depends on !BR2_STATIC_LIBS # python depends on !BR2_nios2 # binary too large, relocations don't fit depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/bsp/buildroot/package/samba4/samba4-cache.txt b/bsp/buildroot/package/samba4/samba4-cache.txt index c9e34b63..3ba8a75e 100644 --- a/bsp/buildroot/package/samba4/samba4-cache.txt +++ b/bsp/buildroot/package/samba4/samba4-cache.txt @@ -23,6 +23,7 @@ Checking whether setreuid is available: OK Checking whether setresuid is available: OK Checking whether seteuid is available: OK Checking whether fcntl locking is available: OK +Checking whether fcntl lock supports open file description locks: OK Checking for the maximum value of the 'time_t' type: OK Checking whether the realpath function allows a NULL argument: OK Checking whether POSIX capabilities are available: OK diff --git a/bsp/buildroot/package/samba4/samba4.hash b/bsp/buildroot/package/samba4/samba4.hash index 5d2ac09f..4fec55dd 100644 --- a/bsp/buildroot/package/samba4/samba4.hash +++ b/bsp/buildroot/package/samba4/samba4.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 b876ef2e63f66265490e80a122e66ef2d7616112b839df68f56ac2e1ce17a7bd samba-4.4.5.tar.gz +sha256 bff02762b3e4ee030f02266c6e24a0b888248b387246219b7fbe3e1758ef2184 samba-4.5.5.tar.gz diff --git a/bsp/buildroot/package/samba4/samba4.mk b/bsp/buildroot/package/samba4/samba4.mk index facaca62..f64b684b 100644 --- a/bsp/buildroot/package/samba4/samba4.mk +++ b/bsp/buildroot/package/samba4/samba4.mk @@ -4,8 +4,8 @@ # ################################################################################ -SAMBA4_VERSION = 4.4.5 -SAMBA4_SITE = http://ftp.samba.org/pub/samba/stable +SAMBA4_VERSION = 4.5.5 +SAMBA4_SITE = https://download.samba.org/pub/samba/stable SAMBA4_SOURCE = samba-$(SAMBA4_VERSION).tar.gz SAMBA4_INSTALL_STAGING = YES SAMBA4_LICENSE = GPLv3+ @@ -14,7 +14,6 @@ SAMBA4_DEPENDENCIES = \ host-e2fsprogs host-heimdal host-python \ e2fsprogs popt python zlib \ $(if $(BR2_PACKAGE_LIBAIO),libaio) \ - $(if $(BR2_PACKAGE_LIBBSD),libbsd) \ $(if $(BR2_PACKAGE_LIBCAP),libcap) \ $(if $(BR2_PACKAGE_READLINE),readline) @@ -60,7 +59,7 @@ else SAMBA4_CONF_OPTS += --disable-gnutls endif -ifeq ($(BR2_PACKAGE_NCURSES_TARGET_FORM)$(BR2_PACKAGE_NCURSES_TARGET_MENU)$(BR2_PACKAGE_NCURSES_TARGET_PANEL),yyy) +ifeq ($(BR2_PACKAGE_NCURSES),y) SAMBA4_CONF_ENV += NCURSES_CONFIG="$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)" SAMBA4_DEPENDENCIES += ncurses else diff --git a/bsp/buildroot/package/sane-backends/0003-sane_backend-add-missing-config.h.patch b/bsp/buildroot/package/sane-backends/0003-sane_backend-add-missing-config.h.patch new file mode 100644 index 00000000..8e56b028 --- /dev/null +++ b/bsp/buildroot/package/sane-backends/0003-sane_backend-add-missing-config.h.patch @@ -0,0 +1,49 @@ +From 13aadf79659dd238b618c8be7c1de44960bd5d50 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 11 Nov 2016 22:20:03 +0100 +Subject: [PATCH] sane_backend: add missing config.h + +We should include config.h from sanei_backend.h in order to use the +correct if/else HAVE_FOO. + +For some reason with Glibc or uClibc there is no problem but with musl +we have the following weird issue: + +In file included from epsonds.h:41:0, + from epsonds-jpeg.c:18: +../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int' + # define sigset_t int + ^ +../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration + +That's because HAVE_SIGPROCMASK is not defined although it's correctly +detected by the configure script. + +$ grep config.log +config.log:#define HAVE_SIGPROCMASK 1 + +So, include config.h to avoid to redefine sigset_t. + +Fixes: +http://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf + +Signed-off-by: Romain Naour +--- + include/sane/sanei_backend.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/sane/sanei_backend.h b/include/sane/sanei_backend.h +index 1b5afe2..2a96532 100644 +--- a/include/sane/sanei_backend.h ++++ b/include/sane/sanei_backend.h +@@ -8,6 +8,7 @@ + * @sa sanei.h sanei_thread.h + */ + ++#include "../include/sane/config.h" + + /* + * Compiler related options +-- +2.5.5 + diff --git a/bsp/buildroot/package/sane-backends/Config.in b/bsp/buildroot/package/sane-backends/Config.in index 8156e858..3e5a27ff 100644 --- a/bsp/buildroot/package/sane-backends/Config.in +++ b/bsp/buildroot/package/sane-backends/Config.in @@ -1,6 +1,7 @@ config BR2_PACKAGE_SANE_BACKENDS bool "sane-backends" depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS help SANE - Scanner Access Now Easy @@ -9,3 +10,7 @@ config BR2_PACKAGE_SANE_BACKENDS Backends are included automatically based on the libraries that have been selected: libusb, jpeg, tiff, avahi (with dbus and libglib2), and netsnmp. + +comment "sane-backends needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/bsp/buildroot/package/screen/screen.hash b/bsp/buildroot/package/screen/screen.hash index ee5105ad..7ddc3370 100644 --- a/bsp/buildroot/package/screen/screen.hash +++ b/bsp/buildroot/package/screen/screen.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 ef722a54759a3bf23aad272bbf33c414c1078cad6bcd982fada93c0d7917218b screen-4.4.0.tar.gz +sha256 01c3a7c362185f35d6a95dff52d64337076496acd034d717de3c263500cfefb0 screen-4.5.0.tar.gz diff --git a/bsp/buildroot/package/screen/screen.mk b/bsp/buildroot/package/screen/screen.mk index 84c3d75d..519a02ab 100644 --- a/bsp/buildroot/package/screen/screen.mk +++ b/bsp/buildroot/package/screen/screen.mk @@ -4,13 +4,14 @@ # ################################################################################ -SCREEN_VERSION = 4.4.0 +SCREEN_VERSION = 4.5.0 SCREEN_SITE = $(BR2_GNU_MIRROR)/screen SCREEN_LICENSE = GPLv3+ SCREEN_LICENSE_FILES = COPYING SCREEN_DEPENDENCIES = ncurses SCREEN_AUTORECONF = YES SCREEN_CONF_ENV = CFLAGS="$(TARGET_CFLAGS)" +SCREEN_CONF_OPTS = --enable-colors256 SCREEN_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) SCREEN=screen install_bin define SCREEN_INSTALL_SCREENRC diff --git a/bsp/buildroot/package/sdl2/0001-ppc.patch b/bsp/buildroot/package/sdl2/0001-ppc.patch new file mode 100644 index 00000000..01611030 --- /dev/null +++ b/bsp/buildroot/package/sdl2/0001-ppc.patch @@ -0,0 +1,47 @@ +Fixed bug 3466 - Can't build 2.0.5 on ppc64 + +/home/fedora/SDL2-2.0.5/src/video/SDL_blit_N.c: In function 'calc_swizzle32': +/home/fedora/SDL2-2.0.5/src/video/SDL_blit_N.c:127:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] +const vector unsigned char plus = VECUINT8_LITERAL(0x00, 0x00, 0x00, 0x00, +^ + +Downloaded from upstream repo +https://hg.libsdl.org/SDL/rev/5184186d4366 + +Signed-off-by: Bernd Kuhls + +diff -r 71d4148e32de -r 5184186d4366 src/video/SDL_blit_N.c +--- a/src/video/SDL_blit_N.c Wed Oct 19 21:22:42 2016 -0700 ++++ b/src/video/SDL_blit_N.c Sat Oct 22 11:01:55 2016 -0700 +@@ -118,12 +118,6 @@ + 16, 8, 0, 24, + 0, NULL + }; +- if (!srcfmt) { +- srcfmt = &default_pixel_format; +- } +- if (!dstfmt) { +- dstfmt = &default_pixel_format; +- } + const vector unsigned char plus = VECUINT8_LITERAL(0x00, 0x00, 0x00, 0x00, + 0x04, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x08, 0x08, +@@ -136,6 +130,14 @@ + Uint32 gmask = RESHIFT(srcfmt->Gshift) << (dstfmt->Gshift); + Uint32 bmask = RESHIFT(srcfmt->Bshift) << (dstfmt->Bshift); + Uint32 amask; ++ ++ if (!srcfmt) { ++ srcfmt = &default_pixel_format; ++ } ++ if (!dstfmt) { ++ dstfmt = &default_pixel_format; ++ } ++ + /* Use zero for alpha if either surface doesn't have alpha */ + if (dstfmt->Amask) { + amask = + + + + diff --git a/bsp/buildroot/package/sdl2/0002-gcc6.patch b/bsp/buildroot/package/sdl2/0002-gcc6.patch new file mode 100644 index 00000000..6b5e901d --- /dev/null +++ b/bsp/buildroot/package/sdl2/0002-gcc6.patch @@ -0,0 +1,64 @@ + +# HG changeset patch +# User Sam Lantinga +# Date 1479201270 28800 +# Node ID ea44906e19b837f4d5b309525ca79ed9d00b1897 +# Parent 6b2307dbec54f0bf4d5d8abf86241e29f3a03562 +Fixed bug 3490 - Build failure with --enable-video-directfb + +felix + +Building SDL 2.0.5, or even the Mercurial snapshot (r10608) with GCC 6.2.1 and --enable-video-directfb generates a number of compiler diagnostics and fails. + +Downloaded from upstream repo +https://hg.libsdl.org/SDL/rev/ea44906e19b8 + +Signed-off-by: Bernd Kuhls + +diff -r 6b2307dbec54 -r ea44906e19b8 src/video/directfb/SDL_DirectFB_render.c +--- a/src/video/directfb/SDL_DirectFB_render.c Tue Nov 15 01:12:27 2016 -0800 ++++ b/src/video/directfb/SDL_DirectFB_render.c Tue Nov 15 01:14:30 2016 -0800 +@@ -1273,7 +1273,7 @@ + Uint32 format, void * pixels, int pitch) + { + Uint32 sdl_format; +- void * laypixels; ++ unsigned char* laypixels; + int laypitch; + DFBSurfacePixelFormat dfb_format; + DirectFB_RenderData *data = (DirectFB_RenderData *) renderer->driverdata; +@@ -1303,7 +1303,7 @@ + SDL_Window *window = renderer->window; + SDL_DFB_WINDOWDATA(window); + Uint32 sdl_format; +- void * laypixels; ++ unsigned char* laypixels; + int laypitch; + DFBSurfacePixelFormat dfb_format; + +diff -r 6b2307dbec54 -r ea44906e19b8 src/video/directfb/SDL_DirectFB_shape.c +--- a/src/video/directfb/SDL_DirectFB_shape.c Tue Nov 15 01:12:27 2016 -0800 ++++ b/src/video/directfb/SDL_DirectFB_shape.c Tue Nov 15 01:14:30 2016 -0800 +@@ -37,17 +37,19 @@ + SDL_WindowShaper* + DirectFB_CreateShaper(SDL_Window* window) { + SDL_WindowShaper* result = NULL; ++ SDL_ShapeData* data; ++ int resized_properly; + + result = malloc(sizeof(SDL_WindowShaper)); + result->window = window; + result->mode.mode = ShapeModeDefault; + result->mode.parameters.binarizationCutoff = 1; + result->userx = result->usery = 0; +- SDL_ShapeData* data = SDL_malloc(sizeof(SDL_ShapeData)); ++ data = SDL_malloc(sizeof(SDL_ShapeData)); + result->driverdata = data; + data->surface = NULL; + window->shaper = result; +- int resized_properly = DirectFB_ResizeWindowShape(window); ++ resized_properly = DirectFB_ResizeWindowShape(window); + SDL_assert(resized_properly == 0); + + return result; + diff --git a/bsp/buildroot/package/sdl2/Config.in b/bsp/buildroot/package/sdl2/Config.in index b73611db..8fc14ee7 100644 --- a/bsp/buildroot/package/sdl2/Config.in +++ b/bsp/buildroot/package/sdl2/Config.in @@ -21,11 +21,13 @@ comment "DirectFB video driver needs directfb" config BR2_PACKAGE_SDL2_X11 bool "X11 video driver" depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() select BR2_PACKAGE_XLIB_LIBX11 select BR2_PACKAGE_XLIB_LIBXEXT comment "X11 video driver needs X.org" depends on !BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU endif diff --git a/bsp/buildroot/package/sdl2/sdl2.hash b/bsp/buildroot/package/sdl2/sdl2.hash index 6e8533f6..d69d4381 100644 --- a/bsp/buildroot/package/sdl2/sdl2.hash +++ b/bsp/buildroot/package/sdl2/sdl2.hash @@ -1,2 +1,2 @@ -# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.0.3.tar.gz.sig -sha256 a5a69a6abf80bcce713fa873607735fe712f44276a7f048d60a61bb2f6b3c90c SDL2-2.0.3.tar.gz +# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.0.5.tar.gz.sig +sha256 442038cf55965969f2ff06d976031813de643af9c9edc9e331bd761c242e8785 SDL2-2.0.5.tar.gz diff --git a/bsp/buildroot/package/sdl2/sdl2.mk b/bsp/buildroot/package/sdl2/sdl2.mk index 814cc196..2ec12e63 100644 --- a/bsp/buildroot/package/sdl2/sdl2.mk +++ b/bsp/buildroot/package/sdl2/sdl2.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDL2_VERSION = 2.0.3 +SDL2_VERSION = 2.0.5 SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz SDL2_SITE = http://www.libsdl.org/release SDL2_LICENSE = zlib diff --git a/bsp/buildroot/package/sdl2_ttf/0001-fix-opengl-detection.patch b/bsp/buildroot/package/sdl2_ttf/0001-fix-opengl-detection.patch new file mode 100644 index 00000000..06e0abf8 --- /dev/null +++ b/bsp/buildroot/package/sdl2_ttf/0001-fix-opengl-detection.patch @@ -0,0 +1,37 @@ +# HG changeset patch +# User Sam Lantinga +# Date 1485568474 28800 +# Node ID 3b93536d291a34183592fd29ef1df9cf1416ac09 +# Parent 184c34c673d479477d34194e3c0b1abe7ca5d828 +Make sure we can link with OpenGL libraries in the OpenGL configure test + +[yann.morin.1998@free.fr: + - backported from upstream + - drop the configure hunk for autoreconf +] +Signed-off-by: "Yann E. MORIN" + +diff -r 184c34c673d4 -r 3b93536d291a configure.in +--- a/configure.in Sun Jan 01 18:46:38 2017 -0800 ++++ b/configure.in Fri Jan 27 17:54:34 2017 -0800 +@@ -164,14 +164,17 @@ + esac + AC_MSG_CHECKING(for OpenGL support) + have_opengl=no +-AC_TRY_COMPILE([ ++save_LIBS="$LIBS" ++LIBS="$LIBS $SYS_GL_LIBS" ++AC_TRY_LINK([ + #include "SDL_opengl.h" + ],[ +- GLuint texture; ++ glOrtho( -2.0, 2.0, -2.0, 2.0, -20.0, 20.0 ); + ],[ + have_opengl=yes + ]) + AC_MSG_RESULT($have_opengl) ++LIBS="$save_LIBS" + if test x$have_opengl = xyes; then + CFLAGS="$CFLAGS -DHAVE_OPENGL" + GL_LIBS="$SYS_GL_LIBS" + diff --git a/bsp/buildroot/package/sdl2_ttf/0002-fix-autoreconf.patch b/bsp/buildroot/package/sdl2_ttf/0002-fix-autoreconf.patch new file mode 100644 index 00000000..88543a94 --- /dev/null +++ b/bsp/buildroot/package/sdl2_ttf/0002-fix-autoreconf.patch @@ -0,0 +1,30 @@ +# HG changeset patch +# User "Yann E. MORIN" +# Date 1485597428 -3600 +# Node ID 26376ce4a3e6565885fd984b3fe5a39a6895dcdd +# Parent 3b93536d291a34183592fd29ef1df9cf1416ac09 +configure: fix autoreconf + +Signed-off-by: "Yann E. MORIN" + +diff --git a/configure.in b/configure.in +--- a/configure.in ++++ b/configure.in +@@ -1,5 +1,6 @@ + dnl Process this file with autoconf to produce a configure script. +-AC_INIT(README.txt) ++dnl The version string must be a literal ++AC_INIT([SDL2_ttf],[2.0.14]) + + dnl Set various version strings - taken gratefully from the GTk sources + +@@ -42,7 +42,7 @@ + AC_CANONICAL_HOST + + dnl Setup for automake +-AM_INIT_AUTOMAKE(SDL2_ttf, $VERSION) ++AM_INIT_AUTOMAKE([foreign]) + + dnl Check for tools + AC_PROG_LIBTOOL + diff --git a/bsp/buildroot/package/sdl2_ttf/sdl2_ttf.mk b/bsp/buildroot/package/sdl2_ttf/sdl2_ttf.mk index 6834d16c..86916c34 100644 --- a/bsp/buildroot/package/sdl2_ttf/sdl2_ttf.mk +++ b/bsp/buildroot/package/sdl2_ttf/sdl2_ttf.mk @@ -11,6 +11,10 @@ SDL2_TTF_LICENSE = zlib SDL2_TTF_LICENSE_FILES = COPYING.txt SDL2_TTF_INSTALL_STAGING = YES SDL2_TTF_DEPENDENCIES = sdl2 freetype host-pkgconf + +# Two patches touching configure.in +SDL2_TTF_AUTORECONF = YES + SDL2_TTF_CONF_ENV = \ FREETYPE_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config diff --git a/bsp/buildroot/package/sdl_mixer/0002-add-LDFLAGS-while-linking.patch b/bsp/buildroot/package/sdl_mixer/0002-add-LDFLAGS-while-linking.patch new file mode 100644 index 00000000..41446607 --- /dev/null +++ b/bsp/buildroot/package/sdl_mixer/0002-add-LDFLAGS-while-linking.patch @@ -0,0 +1,29 @@ +Pass LDFLAGS while creating binaries. + +Fixes following linking error with uClibc-ng: +br/output/host/usr/lib/gcc/powerpc-buildroot-linux-uclibc/5.4.0/libgcc.a(unwind-dw2-fde-dip.o): In function `_Unwind_Find_FDE': +br/output/build/host-gcc-final-5.4.0/build/powerpc-buildroot-linux-uclibc/libgcc/../../../libgcc/unwind-dw2-fde-dip.c:465: undefined reference to `dl_iterate_phdr' +collect2: error: ld returned 1 exit status + +Since uClibc-ng 1.0.18 a circular dependency between libc and libgcc +exist, when static linking is used. It can be resolved by the compiler +when -static is correctly passed in the linking step. + +Signed-off-by: Waldemar Brodkorb + +diff -Nur SDL_mixer-1.2.12.orig/Makefile.in SDL_mixer-1.2.12/Makefile.in +--- SDL_mixer-1.2.12.orig/Makefile.in 2012-01-15 23:01:04.000000000 +0100 ++++ SDL_mixer-1.2.12/Makefile.in 2016-12-07 08:29:22.479786596 +0100 +@@ -66,10 +66,10 @@ + $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) + + $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET) + + $(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET) + + install: all install-hdrs install-lib #install-bin + install-hdrs: diff --git a/bsp/buildroot/package/sepolgen/sepolgen.hash b/bsp/buildroot/package/sepolgen/sepolgen.hash index a377c66a..b338a701 100644 --- a/bsp/buildroot/package/sepolgen/sepolgen.hash +++ b/bsp/buildroot/package/sepolgen/sepolgen.hash @@ -1,2 +1,2 @@ # https://github.com/SELinuxProject/selinux/wiki/Releases -sha256 8a1c6d3a78c9b6ad3555c74def555f65a62950bf21c111c585bfc382fec3a645 sepolgen-1.1.9.tar.gz +sha256 6a327b1576d914e57ad796a541a7a9bcceefb14c445355559993de0fdb8e7a60 sepolgen-2.6.tar.gz diff --git a/bsp/buildroot/package/sepolgen/sepolgen.mk b/bsp/buildroot/package/sepolgen/sepolgen.mk index 7c958662..137eaed6 100644 --- a/bsp/buildroot/package/sepolgen/sepolgen.mk +++ b/bsp/buildroot/package/sepolgen/sepolgen.mk @@ -4,8 +4,8 @@ # ################################################################################ -SEPOLGEN_VERSION = 1.1.9 -SEPOLGEN_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20130423 +SEPOLGEN_VERSION = 2.6 +SEPOLGEN_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20161014 SEPOLGEN_LICENSE = GPLv2 SEPOLGEN_LICENSE_FILES = COPYING @@ -20,11 +20,11 @@ HOST_SEPOLGEN_MAKE_CMDS = $(HOST_CONFIGURE_OPTS) \ endif define HOST_SEPOLGEN_BUILD_CMDS - $(MAKE) -C $(@D) $(HOST_SEPOLGEN_MAKE_CMDS) DESTDIR=$(HOST_DIR) + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_SEPOLGEN_MAKE_CMDS) DESTDIR=$(HOST_DIR) endef define HOST_SEPOLGEN_INSTALL_CMDS - $(MAKE) -C $(@D) $(HOST_SEPOLGEN_MAKE_CMDS) DESTDIR=$(HOST_DIR) install + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_SEPOLGEN_MAKE_CMDS) DESTDIR=$(HOST_DIR) install endef $(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/ser2net/ser2net.hash b/bsp/buildroot/package/ser2net/ser2net.hash index a02a981a..ae45e9ce 100644 --- a/bsp/buildroot/package/ser2net/ser2net.hash +++ b/bsp/buildroot/package/ser2net/ser2net.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 cee4ad8fb3531281e8761751694dfab39d681022b2363b1edeba764d397c3c99 ser2net-2.10.1.tar.gz +sha256 3d1cef5f48df8291e57d4d7d4eac2fc809ae644a5524ffca4aebef0f4e4153dc ser2net-3.3.tar.gz diff --git a/bsp/buildroot/package/ser2net/ser2net.mk b/bsp/buildroot/package/ser2net/ser2net.mk index 85b23aea..a786b1a2 100644 --- a/bsp/buildroot/package/ser2net/ser2net.mk +++ b/bsp/buildroot/package/ser2net/ser2net.mk @@ -4,11 +4,17 @@ # ################################################################################ -SER2NET_VERSION = 2.10.1 +SER2NET_VERSION = 3.3 SER2NET_SITE = http://downloads.sourceforge.net/project/ser2net/ser2net SER2NET_LICENSE = GPLv2+ SER2NET_LICENSE_FILES = COPYING +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +SER2NET_CONF_OPTS += --with-pthreads +else +SER2NET_CONF_OPTS += --without-pthreads +endif + define SER2NET_INSTALL_INIT_SYSV $(INSTALL) -D -m 755 package/ser2net/S50ser2net \ $(TARGET_DIR)/etc/init.d/S50ser2net diff --git a/bsp/buildroot/package/shairport-sync/shairport-sync.hash b/bsp/buildroot/package/shairport-sync/shairport-sync.hash index 907a71e9..45bce101 100644 --- a/bsp/buildroot/package/shairport-sync/shairport-sync.hash +++ b/bsp/buildroot/package/shairport-sync/shairport-sync.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 80dd94c5f37b43e9b157dd5335f8edaf11109859d0144e0046c7b86fe88f6547 shairport-sync-2.8.4.tar.gz +sha256 2e73416ac8fdda1657034afaa143f1710852ebed06e0aa43dafc2b7dc5eb653d shairport-sync-2.8.6.tar.gz diff --git a/bsp/buildroot/package/shairport-sync/shairport-sync.mk b/bsp/buildroot/package/shairport-sync/shairport-sync.mk index 49c66042..00d6a695 100644 --- a/bsp/buildroot/package/shairport-sync/shairport-sync.mk +++ b/bsp/buildroot/package/shairport-sync/shairport-sync.mk @@ -4,7 +4,7 @@ # ################################################################################ -SHAIRPORT_SYNC_VERSION = 2.8.4 +SHAIRPORT_SYNC_VERSION = 2.8.6 SHAIRPORT_SYNC_SITE = $(call github,mikebrady,shairport-sync,$(SHAIRPORT_SYNC_VERSION)) SHAIRPORT_SYNC_LICENSE = MIT, BSD-3c diff --git a/bsp/buildroot/package/shapelib/Config.in b/bsp/buildroot/package/shapelib/Config.in new file mode 100644 index 00000000..aa2297b2 --- /dev/null +++ b/bsp/buildroot/package/shapelib/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SHAPELIB + bool "shapelib" + help + The Shapefile C Library provides the ability to write simple + C programs for reading, writing and updating (to a limited + extent) ESRI Shapefiles, and the associated attribute file + (.dbf). + + http://shapelib.maptools.org/ diff --git a/bsp/buildroot/package/shapelib/shapelib.hash b/bsp/buildroot/package/shapelib/shapelib.hash new file mode 100644 index 00000000..f3f812eb --- /dev/null +++ b/bsp/buildroot/package/shapelib/shapelib.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 23d474016158ab5077db2f599527631706ba5c0dc7c4178a6a1d685bb014f68f shapelib-1.3.0.tar.gz diff --git a/bsp/buildroot/package/shapelib/shapelib.mk b/bsp/buildroot/package/shapelib/shapelib.mk new file mode 100644 index 00000000..2e8fe6d7 --- /dev/null +++ b/bsp/buildroot/package/shapelib/shapelib.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# shapelib +# +################################################################################ + +SHAPELIB_VERSION = 1.3.0 +SHAPELIB_SITE = http://download.osgeo.org/shapelib +SHAPELIB_LICENSE = MIT or LGPLv2 +SHAPELIB_LICENSE_FILES = web/license.html LICENSE.LGPL +SHAPELIB_INSTALL_STAGING = YES + +define SHAPELIB_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define SHAPELIB_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=$(STAGING_DIR)/usr/ lib_install +endef + +define SHAPELIB_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=$(TARGET_DIR)/usr/ bin_install +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/shared-mime-info/Config.in b/bsp/buildroot/package/shared-mime-info/Config.in index 91a5a15a..514044be 100644 --- a/bsp/buildroot/package/shared-mime-info/Config.in +++ b/bsp/buildroot/package/shared-mime-info/Config.in @@ -10,7 +10,7 @@ config BR2_PACKAGE_SHARED_MIME_INFO database of common types and the update-mime-database command used to extend it. - http://freedesktop.org/wiki/Software/shared-mime-info + https://freedesktop.org/wiki/Software/shared-mime-info/ comment "shared-mime-info needs a toolchain w/ wchar, threads" depends on BR2_USE_MMU diff --git a/bsp/buildroot/package/shared-mime-info/shared-mime-info.hash b/bsp/buildroot/package/shared-mime-info/shared-mime-info.hash index 997751d9..cf6c8f3e 100644 --- a/bsp/buildroot/package/shared-mime-info/shared-mime-info.hash +++ b/bsp/buildroot/package/shared-mime-info/shared-mime-info.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 b2f8f85b6467933824180d0252bbcaee523f550a8fbc95cc4391bd43c03bc34c shared-mime-info-1.6.tar.xz +sha256 2af55ef1a0319805b74ab40d331a3962c905477d76c086f49e34dc96363589e9 shared-mime-info-1.8.tar.xz diff --git a/bsp/buildroot/package/shared-mime-info/shared-mime-info.mk b/bsp/buildroot/package/shared-mime-info/shared-mime-info.mk index a70bc9a1..64bb4d51 100644 --- a/bsp/buildroot/package/shared-mime-info/shared-mime-info.mk +++ b/bsp/buildroot/package/shared-mime-info/shared-mime-info.mk @@ -4,9 +4,9 @@ # ################################################################################ -SHARED_MIME_INFO_VERSION = 1.6 +SHARED_MIME_INFO_VERSION = 1.8 SHARED_MIME_INFO_SOURCE = shared-mime-info-$(SHARED_MIME_INFO_VERSION).tar.xz -SHARED_MIME_INFO_SITE = http://freedesktop.org/~hadess +SHARED_MIME_INFO_SITE = https://people.freedesktop.org/~hadess SHARED_MIME_INFO_INSTALL_STAGING = YES SHARED_MIME_INFO_CONF_ENV = XMLLINT=$(HOST_DIR)/usr/bin/xmllint SHARED_MIME_INFO_DEPENDENCIES = host-shared-mime-info libxml2 libglib2 diff --git a/bsp/buildroot/package/skalibs/0001-No-runtime-tests-for-endianness.patch b/bsp/buildroot/package/skalibs/0001-No-runtime-tests-for-endianness.patch new file mode 100644 index 00000000..4390d449 --- /dev/null +++ b/bsp/buildroot/package/skalibs/0001-No-runtime-tests-for-endianness.patch @@ -0,0 +1,95 @@ +From 1e6f0b094c6ce6454be572704b866d2ce0962e59 Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Sun, 4 Dec 2016 19:10:40 +0100 +Subject: [PATCH] No runtime tests for endianness + +Replace build and execution of runtime test programs for determining +the endianness of the target with compile time test programs. + +This improves support for cross-compilation. + +Signed-off-by: Eric Le Bihan +--- + configure | 15 +++++++++++---- + src/sysdeps/trybigendian.c | 16 ++++++++++++++++ + src/sysdeps/trylittleendian.c | 16 ++++++++++++++++ + 3 files changed, 43 insertions(+), 4 deletions(-) + create mode 100644 src/sysdeps/trybigendian.c + create mode 100644 src/sysdeps/trylittleendian.c + +diff --git a/configure b/configure +index 1579025..4da9c5e 100755 +--- a/configure ++++ b/configure +@@ -463,13 +463,20 @@ EOF + fi + exec 3>&- + +- echo "Checking system endianness..." +- $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO -o tryendianness src/sysdeps/tryendianness.c +- endianness=$(./tryendianness) || fail "$0: unable to determine endianness" ++ echo "Checking system endianness..." ++ if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO -o trybigendian src/sysdeps/trybigendian.c 2>/dev/null; then ++ endianness=big ++ else ++ if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO -o trylittleendian src/sysdeps/trylittleendian.c 2>/dev/null; then ++ endianness=little ++ else ++ fail "$0: unable to determine endianness" ++ fi ++ fi + echo "endianness: $endianness" >> $sysdeps/sysdeps + echo "#define ${package_macro_name}_ENDIANNESS \"$endianness\"" >> $sysdeps/sysdeps.h + echo " ... $endianness" +- rm -f tryendianness ++ rm -f trybigendian trylittleendian + + trytypesize ushort USHORT "unsigned short" + trytypesize uint UINT "unsigned int" +diff --git a/src/sysdeps/trybigendian.c b/src/sysdeps/trybigendian.c +new file mode 100644 +index 0000000..d857572 +--- /dev/null ++++ b/src/sysdeps/trybigendian.c +@@ -0,0 +1,16 @@ ++#if defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN) || \ ++ defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || \ ++ defined(__BIG_ENDIAN) || \ ++ defined(__ARMEB__) || \ ++ defined(__THUMBEB__) || \ ++ defined(__AARCH64EB__) || \ ++ defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) ++#define YEAH ++#else ++#error "not big endian" ++#endif ++ ++int main(void) ++{ ++ return 0; ++} +diff --git a/src/sysdeps/trylittleendian.c b/src/sysdeps/trylittleendian.c +new file mode 100644 +index 0000000..eba065a +--- /dev/null ++++ b/src/sysdeps/trylittleendian.c +@@ -0,0 +1,16 @@ ++#if defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN) || \ ++ defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || \ ++ defined(__LITTLE_ENDIAN) || \ ++ defined(__ARMEL__) || \ ++ defined(__THUMBEL__) || \ ++ defined(__AARCH64EL__) || \ ++ defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) ++#define YEAH ++#else ++#error "not little endian" ++#endif ++ ++int main(void) ++{ ++ return 0; ++} +-- +2.5.5 + diff --git a/bsp/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch b/bsp/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch new file mode 100644 index 00000000..3f16171e --- /dev/null +++ b/bsp/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch @@ -0,0 +1,54 @@ +From d868600a3f437750bc44a783d677a25a48100096 Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Sun, 4 Dec 2016 19:11:25 +0100 +Subject: [PATCH] No runtime tests for type sizes + +Replace build and execution of runtime test programs for determining +some type sizes of the target with compile time test programs. + +This improves support for cross-compilation. + +Signed-off-by: Eric Le Bihan +--- + configure | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +diff --git a/configure b/configure +index 4da9c5e..b5926ca 100755 +--- a/configure ++++ b/configure +@@ -157,10 +157,28 @@ choose () { + + trytypesize () { + echo "Checking size of $3..." +- $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o trysizeof$1 src/sysdeps/trysizeof$1.c +- type_size=$(./trysizeof$1) || fail "$0: unable to determine size of $3" ++ r=false ++ type_size=0 ++ while true; do ++ cat<trysizeof$1.c ++#include ++ ++int main(void) ++{ ++ static int v = 1 / !!((sizeof($3) == $type_size)); ++ return 0; ++} ++EOF ++ if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o trysizeof$1 trysizeof$1.c 2>/dev/null; then ++ r=true ++ break ++ fi ++ type_size=$(expr $type_size + 1) ++ test $type_size -le 16 || break ++ done ++ test $r = true || fail "$0: unable to determine size of $3" + type_bits=$(expr 8 \* $type_size) +- rm -f trysizeof$1 ++ rm -f trysizeof$1 trysizeof$1.c + echo "sizeof$1: $type_size" >> $sysdeps/sysdeps + echo "#define ${package_macro_name}_SIZEOF$2 $type_size" >> $sysdeps/sysdeps.h + echo "#define ${package_macro_name}_$2_BITS $type_bits" >> $sysdeps/sysdeps.h +-- +2.5.5 + diff --git a/bsp/buildroot/package/skalibs/0003-Make-linker-use-dummy-file-when-testing-libs.patch b/bsp/buildroot/package/skalibs/0003-Make-linker-use-dummy-file-when-testing-libs.patch new file mode 100644 index 00000000..ef0e173b --- /dev/null +++ b/bsp/buildroot/package/skalibs/0003-Make-linker-use-dummy-file-when-testing-libs.patch @@ -0,0 +1,44 @@ +From da293110f429e1206728c1551cf0f6b462b3d8c0 Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Thu, 29 Dec 2016 19:36:24 +0100 +Subject: [PATCH] Make linker use dummy file when testing libs + +For some architectures, like Xtensa or HPPA, ld from binutils requires +the output file to be a regular file, as mentioned in a bug report on +the mailing list [1]. + +So, use a dummy file as output file for ld in trylibs(), instead of +/dev/null. + +[1] https://sourceware.org/bugzilla/show_bug.cgi?id=19526 + +Signed-off-by: Eric Le Bihan +--- + configure | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 1579025..12980fb 100755 +--- a/configure ++++ b/configure +@@ -173,7 +173,7 @@ trylibs () { + echo "Checking whether system has $2..." >&3 + shift 2 + if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO -c -o try$name.o src/sysdeps/try$name.c 2>/dev/null ; then +- until $CC_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o /dev/null try$name.o $args 2>/dev/null ; do ++ until $CC_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o try$name try$name.o $args 2>/dev/null ; do + if test -z "$*" ; then + rm -f try$name.o + echo +@@ -189,7 +189,7 @@ trylibs () { + else + echo " ... yes, with$args" >&3 + fi +- rm -f try$name.o ++ rm -f try$name.o try$name + return 0 + else + echo +-- +2.4.11 + diff --git a/bsp/buildroot/package/skalibs/Config.in b/bsp/buildroot/package/skalibs/Config.in new file mode 100644 index 00000000..7802ae30 --- /dev/null +++ b/bsp/buildroot/package/skalibs/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SKALIBS + bool "skalibs" + depends on BR2_USE_MMU # fork() + help + skalibs is a package centralizing the FOSS C development + files used for building all software at skarnet.org: + it contains essentially general-purpose libraries. + + http://skarnet.org/software/skalibs/ diff --git a/bsp/buildroot/package/skalibs/skalibs.hash b/bsp/buildroot/package/skalibs/skalibs.hash new file mode 100644 index 00000000..195ac479 --- /dev/null +++ b/bsp/buildroot/package/skalibs/skalibs.hash @@ -0,0 +1,2 @@ +# Locally generated +sha256 0708172bc2ec9825f8a4f312d35f8dcd94da5f291425a598c33c873b3de77df8 skalibs-2.4.0.2.tar.gz diff --git a/bsp/buildroot/package/skalibs/skalibs.mk b/bsp/buildroot/package/skalibs/skalibs.mk new file mode 100644 index 00000000..55b8a293 --- /dev/null +++ b/bsp/buildroot/package/skalibs/skalibs.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# skalibs +# +################################################################################ + +SKALIBS_VERSION = 2.4.0.2 +SKALIBS_SITE = http://skarnet.org/software/skalibs +SKALIBS_LICENSE = ISC +SKALIBS_LICENSE_FILES = COPYING +SKALIBS_INSTALL_STAGING = YES + +SKALIBS_CONF_OPTS = \ + --prefix=/usr \ + --with-default-path=/sbin:/usr/sbin:/bin:/usr/bin \ + $(SHARED_STATIC_LIBS_OPTS) + +define SKALIBS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(SKALIBS_CONF_OPTS)) +endef + +define SKALIBS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define SKALIBS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + rm -rf $(TARGET_DIR)/usr/lib/skalibs +endef + +define SKALIBS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +HOST_SKALIBS_CONF_OPTS = \ + --prefix=$(HOST_DIR)/usr \ + --disable-static \ + --enable-shared \ + --disable-allstatic + +define HOST_SKALIBS_CONFIGURE_CMDS + (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_SKALIBS_CONF_OPTS)) +endef + +define HOST_SKALIBS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_SKALIBS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/slirp/slirp.mk b/bsp/buildroot/package/slirp/slirp.mk index 7a5f5153..be3e72d9 100644 --- a/bsp/buildroot/package/slirp/slirp.mk +++ b/bsp/buildroot/package/slirp/slirp.mk @@ -9,7 +9,7 @@ # of today) SLIRP_VERSION = 8c2da74c1385242f20799fec8c04f8378edc6550 SLIRP_SITE = git://anongit.freedesktop.org/spice/slirp -SLIRP_LICENSE = BSD-4c BSD-2c +SLIRP_LICENSE = BSD-4c, BSD-2c # Note: The license file 'COPYRIGHT' is missing from the sources, # although some files refer to it. SLIRP_INSTALL_STAGING = YES diff --git a/bsp/buildroot/package/smcroute/smcroute.hash b/bsp/buildroot/package/smcroute/smcroute.hash index b24228f6..e1483ec1 100644 --- a/bsp/buildroot/package/smcroute/smcroute.hash +++ b/bsp/buildroot/package/smcroute/smcroute.hash @@ -1,4 +1,4 @@ # Locally generated -sha256 66fd32dc66b5d32670918205a94c4f2ac8c56741486326922e4d1a92f628db48 smcroute-2.0.0.tar.xz -# From https://github.com/troglobit/smcroute/releases/download/2.0.0/smcroute-2.0.0.tar.xz.md5 -md5 cbf478e52ab9ae411adca41b9d22f68a smcroute-2.0.0.tar.xz +sha256 cf344922b4298b94e53fa2db8f2b064bece60f75926966f330437dfcbd76d425 smcroute-2.1.1.tar.xz +# From https://github.com/troglobit/smcroute/releases/download/2.1.1/smcroute-2.1.1.tar.xz.md5 +md5 cd9256577fe06beaf8da2eba1a02f953 smcroute-2.1.1.tar.xz diff --git a/bsp/buildroot/package/smcroute/smcroute.mk b/bsp/buildroot/package/smcroute/smcroute.mk index 77e7e631..a3d4bc4f 100755 --- a/bsp/buildroot/package/smcroute/smcroute.mk +++ b/bsp/buildroot/package/smcroute/smcroute.mk @@ -4,7 +4,7 @@ # ################################################################################ -SMCROUTE_VERSION = 2.0.0 +SMCROUTE_VERSION = 2.1.1 SMCROUTE_SOURCE = smcroute-$(SMCROUTE_VERSION).tar.xz SMCROUTE_SITE = https://github.com/troglobit/smcroute/releases/download/$(SMCROUTE_VERSION) SMCROUTE_LICENSE = GPLv2+ diff --git a/bsp/buildroot/package/smstools3/smstools3.mk b/bsp/buildroot/package/smstools3/smstools3.mk index a1684de8..52f9b319 100644 --- a/bsp/buildroot/package/smstools3/smstools3.mk +++ b/bsp/buildroot/package/smstools3/smstools3.mk @@ -14,7 +14,7 @@ SMSTOOLS3_CFLAGS += -D NUMBER_OF_MODEMS=$(BR2_PACKAGE_SMSTOOLS3_NB_MODEMS) SMSTOOLS3_CFLAGS += -D NOSTATS define SMSTOOLS3_BUILD_CMDS - $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(SMSTOOLS3_CFLAGS)" -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(SMSTOOLS3_CFLAGS)" -C $(@D) endef define SMSTOOLS3_INSTALL_INIT_SYSV diff --git a/bsp/buildroot/package/snappy/snappy.hash b/bsp/buildroot/package/snappy/snappy.hash index fc979ae8..bb7f104c 100644 --- a/bsp/buildroot/package/snappy/snappy.hash +++ b/bsp/buildroot/package/snappy/snappy.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 d64e434e2ddfe9ae942708747003d489e27f2bfddaa5e9e070da98cb00f660f2 snappy-1ff9be9b8fafc8528ca9e055646f5932aa5db9c4.tar.gz +sha256 f50719c6dc7103d65df66882a3b4569d598eda251266463eca716928187dc12b snappy-32d6d7d8a2ef328a2ee1dd40f072e21f4983ebda.tar.gz diff --git a/bsp/buildroot/package/snappy/snappy.mk b/bsp/buildroot/package/snappy/snappy.mk index b00dddf6..fcbcd136 100644 --- a/bsp/buildroot/package/snappy/snappy.mk +++ b/bsp/buildroot/package/snappy/snappy.mk @@ -4,7 +4,7 @@ # ################################################################################ -SNAPPY_VERSION = 1ff9be9b8fafc8528ca9e055646f5932aa5db9c4 +SNAPPY_VERSION = 32d6d7d8a2ef328a2ee1dd40f072e21f4983ebda SNAPPY_SITE = $(call github,google,snappy,$(SNAPPY_VERSION)) SNAPPY_LICENSE = BSD-3c SNAPPY_LICENSE_FILES = COPYING @@ -16,4 +16,13 @@ SNAPPY_INSTALL_STAGING = YES # Disable tests SNAPPY_CONF_OPTS = --disable-gtest +# libsnappy links with libstdc++. Some libstdc++/arch variants use +# pthread symbols for internal locking if built with thead +# support. libstdc++ does not have a .pc file, and its .la file does +# not mention -pthread. So, static linkig to libstdc++ will fail if +# -pthread is not explicity linked to. Only do that for static builds. +ifeq ($(BR2_STATIC_LIBS)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +SNAPPY_CONF_OPTS += LIBS=-pthread +endif + $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/sngrep/Config.in b/bsp/buildroot/package/sngrep/Config.in new file mode 100644 index 00000000..4d0d80c1 --- /dev/null +++ b/bsp/buildroot/package/sngrep/Config.in @@ -0,0 +1,14 @@ +comment "sngrep needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_SNGREP + bool "sngrep" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBPCAP + help + sngrep is a tool for displaying SIP calls message flows from + terminal. It supports live capture to display realtime SIP + packets and can also be used as PCAP viewer. + + https://github.com/irontec/sngrep diff --git a/bsp/buildroot/package/sngrep/sngrep.hash b/bsp/buildroot/package/sngrep/sngrep.hash new file mode 100644 index 00000000..dd75f895 --- /dev/null +++ b/bsp/buildroot/package/sngrep/sngrep.hash @@ -0,0 +1 @@ +sha256 30fbfb4f90ed8805194b39683a8a2ed465776ffd60df4482bd029d63b316b3f1 sngrep-v1.4.2.tar.gz diff --git a/bsp/buildroot/package/sngrep/sngrep.mk b/bsp/buildroot/package/sngrep/sngrep.mk new file mode 100644 index 00000000..b82d8cef --- /dev/null +++ b/bsp/buildroot/package/sngrep/sngrep.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# sngrep +# +################################################################################ + +SNGREP_VERSION = v1.4.2 +SNGREP_SITE = $(call github,irontec,sngrep,$(SNGREP_VERSION)) +SNGREP_LICENSE = GPLv3+ +SNGREP_LICENSE_FILES = LICENSE +SNGREP_AUTORECONF = YES +SNGREP_DEPENDENCIES = libpcap ncurses + +SNGREP_CONF_ENV += \ + $(if $(BR2_STATIC_LIBS),LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --libs`") + +# our ncurses wchar support is not properly detected +SNGREP_CONF_OPTS += --disable-unicode + +# openssl and gnutls can't be enabled at the same time. +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SNGREP_DEPENDENCIES += openssl +SNGREP_CONF_OPTS += --with-openssl --without-gnutls +# gnutls support also requires libgcrypt +else ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy) +SNGREP_DEPENDENCIES += gnutls +SNGREP_CONF_OPTS += --with-gnutls --without-openssl +else +SNGREP_CONF_OPTS += --without-gnutls --without-openssl +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +SNGREP_DEPENDENCIES += pcre +SNGREP_CONF_OPTS += --with-pcre +else +SNGREP_CONF_OPTS += --without-pcre +endif + +$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/snmppp/0001-Add-missing-includes.patch b/bsp/buildroot/package/snmppp/0001-Add-missing-includes.patch deleted file mode 100644 index c3fa4915..00000000 --- a/bsp/buildroot/package/snmppp/0001-Add-missing-includes.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 6433c6e8d81313ec7ef6c8d3abf96fffa537e23e Mon Sep 17 00:00:00 2001 -From: Luca Ceresoli -Date: Tue, 1 Apr 2014 14:35:25 +0200 -Subject: [PATCH] Add missing includes - -Signed-off-by: Luca Ceresoli ---- - include/snmp_pp/config_snmp_pp.h.in | 4 ++++ - include/snmp_pp/smival.h | 1 + - 2 files changed, 5 insertions(+) - -diff --git a/include/snmp_pp/config_snmp_pp.h.in b/include/snmp_pp/config_snmp_pp.h.in -index 89a5b0d..3100713 100644 ---- a/include/snmp_pp/config_snmp_pp.h.in -+++ b/include/snmp_pp/config_snmp_pp.h.in -@@ -28,6 +28,10 @@ - #ifndef _CONFIG_SNMP_PP_H_ - #define _CONFIG_SNMP_PP_H_ - -+#ifdef __linux__ -+#include -+#endif -+ - #define SNMP_PP_VERSION_STRING "@VERSION@" - #define SNMP_PP_VERSION @SNMP_PP_MAJOR_VERSION@ - #define SNMP_PP_RELEASE @SNMP_PP_MINOR_VERSION@ -diff --git a/include/snmp_pp/smival.h b/include/snmp_pp/smival.h -index 7a36fab..7522087 100644 ---- a/include/snmp_pp/smival.h -+++ b/include/snmp_pp/smival.h -@@ -59,6 +59,7 @@ - #define _SMIVALUE - - //----[ includes ]----------------------------------------------------- -+#include - #include "snmp_pp/smi.h" - - #ifdef SNMP_PP_NAMESPACE --- -1.8.3.2 - diff --git a/bsp/buildroot/package/snmppp/snmppp.hash b/bsp/buildroot/package/snmppp/snmppp.hash index a278ebfb..75ecddad 100644 --- a/bsp/buildroot/package/snmppp/snmppp.hash +++ b/bsp/buildroot/package/snmppp/snmppp.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 65d8bef3fb0e28892b7768e4027c2873b5556fc89c5440008508bf8ec91764cd snmp++-3.3.5.tar.gz +sha256 2ef0cb20658c1eb9e053f8a7a9d5c8f5ebf2f734d37b692fdbf7163ea17dde6f snmp++-3.3.9.tar.gz diff --git a/bsp/buildroot/package/snmppp/snmppp.mk b/bsp/buildroot/package/snmppp/snmppp.mk index 026fe6ec..67410d9e 100644 --- a/bsp/buildroot/package/snmppp/snmppp.mk +++ b/bsp/buildroot/package/snmppp/snmppp.mk @@ -4,7 +4,7 @@ # ################################################################################ -SNMPPP_VERSION = 3.3.5 +SNMPPP_VERSION = 3.3.9 SNMPPP_SOURCE = snmp++-$(SNMPPP_VERSION).tar.gz SNMPPP_SITE = http://www.agentpp.com/download SNMPPP_DEPENDENCIES = host-pkgconf diff --git a/bsp/buildroot/package/snowball-hdmiservice/Config.in b/bsp/buildroot/package/snowball-hdmiservice/Config.in deleted file mode 100644 index 21a4f3c3..00000000 --- a/bsp/buildroot/package/snowball-hdmiservice/Config.in +++ /dev/null @@ -1,14 +0,0 @@ -config BR2_PACKAGE_SNOWBALL_HDMISERVICE - bool "snowball-hdmiservice" - depends on BR2_TOOLCHAIN_HAS_THREADS - depends on !BR2_STATIC_LIBS - help - HDMI userspace control daemon - - This package contains the HDMI userspace control daemon for the - snowball board - - http://www.igloocommunity.org - -comment "snowball-hdmiservice needs a toolchain w/ threads, dynamic library" - depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/bsp/buildroot/package/snowball-hdmiservice/snowball-hdmiservice.hash b/bsp/buildroot/package/snowball-hdmiservice/snowball-hdmiservice.hash deleted file mode 100644 index e9fffd75..00000000 --- a/bsp/buildroot/package/snowball-hdmiservice/snowball-hdmiservice.hash +++ /dev/null @@ -1,2 +0,0 @@ -# locally computed -sha256 dd2d8362a66178be082affa7cc238aebf3d671be184356bc23d13789db638b9d snowball-hdmiservice-f75c99d1c52707240a78b4ba78e41d20d3aa3b08.tar.gz diff --git a/bsp/buildroot/package/snowball-hdmiservice/snowball-hdmiservice.mk b/bsp/buildroot/package/snowball-hdmiservice/snowball-hdmiservice.mk deleted file mode 100644 index 267b5ad9..00000000 --- a/bsp/buildroot/package/snowball-hdmiservice/snowball-hdmiservice.mk +++ /dev/null @@ -1,25 +0,0 @@ -################################################################################ -# -# snowball-hdmiservice -# -################################################################################ - -SNOWBALL_HDMISERVICE_VERSION = f75c99d1c52707240a78b4ba78e41d20d3aa3b08 -SNOWBALL_HDMISERVICE_SITE = $(call github,igloocommunity,hdmiservice,$(SNOWBALL_HDMISERVICE_VERSION)) -SNOWBALL_HDMISERVICE_LICENSE = MIT -SNOWBALL_HDMISERVICE_LICENSE_FILES = debian/copyright -SNOWBALL_HDMISERVICE_INSTALL_STAGING = YES - -define SNOWBALL_HDMISERVICE_BUILD_CMDS - $(MAKE) -C $(@D) CC="$(TARGET_CC) $(TARGET_CFLAGS)" -endef - -define SNOWBALL_HDMISERVICE_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D) CC="$(TARGET_CC) $(TARGET_CFLAGS)" DESTDIR=$(STAGING_DIR) install -endef - -define SNOWBALL_HDMISERVICE_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) CC="$(TARGET_CC) $(TARGET_CFLAGS)" DESTDIR=$(TARGET_DIR) install -endef - -$(eval $(generic-package)) diff --git a/bsp/buildroot/package/snowball-init/Config.in b/bsp/buildroot/package/snowball-init/Config.in deleted file mode 100644 index 6c947312..00000000 --- a/bsp/buildroot/package/snowball-init/Config.in +++ /dev/null @@ -1,17 +0,0 @@ -config BR2_PACKAGE_SNOWBALL_INIT - bool "snowball-init" - # Runtime dependency, needed by snowball startup script - select BR2_PACKAGE_BLUEZ_UTILS - depends on !BR2_STATIC_LIBS # bluez_utils - depends on BR2_USE_WCHAR # libglib2 - depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2 - depends on BR2_USE_MMU # dbus - select BR2_PACKAGE_UX500_FIRMWARE - help - Snowball init scripts - - http://www.igloocommunity.org - -comment "snowball-init 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/bsp/buildroot/package/snowball-init/snowball-init.hash b/bsp/buildroot/package/snowball-init/snowball-init.hash deleted file mode 100644 index f048ab73..00000000 --- a/bsp/buildroot/package/snowball-init/snowball-init.hash +++ /dev/null @@ -1,2 +0,0 @@ -# Locally calculated -sha256 7adafa3e91cae286e18c062acc1b1d0676ac7352e7dedef9dc6106f905433106 snowball-init-b064be21de25729039e5e54037bbdd2e25cfd5b7.tar.gz diff --git a/bsp/buildroot/package/snowball-init/snowball-init.mk b/bsp/buildroot/package/snowball-init/snowball-init.mk deleted file mode 100644 index f06b0327..00000000 --- a/bsp/buildroot/package/snowball-init/snowball-init.mk +++ /dev/null @@ -1,16 +0,0 @@ -################################################################################ -# -# snowball-init -# -################################################################################ - -SNOWBALL_INIT_VERSION = b064be21de25729039e5e54037bbdd2e25cfd5b7 -SNOWBALL_INIT_SITE = $(call github,igloocommunity,snowball-init,$(SNOWBALL_INIT_VERSION)) -SNOWBALL_INIT_LICENSE = BSD-4c -SNOWBALL_INIT_LICENSE_FILES = debian/copyright - -define SNOWBALL_INIT_INSTALL_INIT_SYSV - $(INSTALL) -D -m 0755 $(@D)/snowball $(TARGET_DIR)/etc/init.d/S50snowball -endef - -$(eval $(generic-package)) diff --git a/bsp/buildroot/package/socat/0003-compat-set-NETDB_INTERNAL.patch b/bsp/buildroot/package/socat/0003-compat-set-NETDB_INTERNAL.patch new file mode 100644 index 00000000..da31073b --- /dev/null +++ b/bsp/buildroot/package/socat/0003-compat-set-NETDB_INTERNAL.patch @@ -0,0 +1,35 @@ +From e7804d1750652e39c7a5803d360b29b2637a695f Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 28 Aug 2016 21:04:01 +0200 +Subject: [PATCH] compat: set NETDB_INTERNAL + +Musl doesn't provide NETDB_INTERNAL which is defined in resolv/netdb.h +in Glibc [1]. + +Set NETDB_INTERNAL to -1 locally if not already defined. +Based on [2]. + +[1] https://sourceware.org/git/?p=glibc.git;a=blob;f=resolv/netdb.h;h=3aba530932c7a62a4f23e3193e9186da677f552b;hb=fdfc9260b61d3d72541f18104d24c7bcb0ce5ca2#l74 +[2] http://git.alpinelinux.org/cgit/aports/tree/main/socat/netdb-internal.patch?id=5a45173b50892cb634197c30b3506ebff98d3b7d + +Signed-off-by: Romain Naour +--- + compat.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/compat.h b/compat.h +index 19a929f..4f5ee6d 100644 +--- a/compat.h ++++ b/compat.h +@@ -666,6 +666,8 @@ typedef int sig_atomic_t; + + #if !defined(NETDB_INTERNAL) && defined(h_NETDB_INTERNAL) + # define NETDB_INTERNAL h_NETDB_INTERNAL ++#elif !defined(NETDB_INTERNAL) ++# define NETDB_INTERNAL (-1) + #endif + + #ifndef INET_ADDRSTRLEN +-- +2.5.5 + diff --git a/bsp/buildroot/package/socat/0004-xio-tun-remove-if_tun.h-kernel-header.patch b/bsp/buildroot/package/socat/0004-xio-tun-remove-if_tun.h-kernel-header.patch new file mode 100644 index 00000000..7704123f --- /dev/null +++ b/bsp/buildroot/package/socat/0004-xio-tun-remove-if_tun.h-kernel-header.patch @@ -0,0 +1,91 @@ +From 1c141194e3587cc8124e5f4512dc3030e5a104b1 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 28 Aug 2016 22:06:09 +0200 +Subject: [PATCH] xio-tun: remove if_tun.h kernel header + +xio-tun mixes userspace and kernel headers. + +http://wiki.musl-libc.org/wiki/FAQ#Q:_why_am_i_getting_.22error:_redefinition_of_struct_ethhdr.2Ftcphdr.2Fetc.22_.3F + +Signed-off-by: Romain Naour +--- + config.h.in | 3 --- + configure.in | 8 +------- + sysincludes.h | 3 --- + xio-tun.c | 6 ++++++ + 4 files changed, 7 insertions(+), 13 deletions(-) + +diff --git a/config.h.in b/config.h.in +index 9058bf8..ed0962c 100644 +--- a/config.h.in ++++ b/config.h.in +@@ -258,9 +258,6 @@ + /* Define if you have the header file. */ + #undef HAVE_LINUX_ERRQUEUE_H + +-/* Define if you have the header file. */ +-#undef HAVE_LINUX_IF_TUN_H +- + /* Define if you have the header file. */ + #undef HAVE_NETPACKET_PACKET_H + +diff --git a/configure.in b/configure.in +index 1d2e76f..27bb3d5 100644 +--- a/configure.in ++++ b/configure.in +@@ -78,7 +78,7 @@ AC_CHECK_HEADERS(arpa/nameser.h) + + AC_HEADER_RESOLV() + +-AC_CHECK_HEADERS(termios.h linux/if_tun.h) ++AC_CHECK_HEADERS(termios.h) + AC_CHECK_HEADERS(net/if_dl.h) + AC_CHECK_HEADERS(linux/types.h) + AC_CHECK_HEADER(linux/errqueue.h, AC_DEFINE(HAVE_LINUX_ERRQUEUE_H), [], [#include +@@ -680,12 +680,6 @@ AC_ARG_ENABLE(tun, [ --disable-tun disable TUN/TAP support], + esac], + [AC_MSG_RESULT(yes); WITH_TUN=1 ]) + +-# +-if ! test "$ac_cv_header_linux_if_tun_h" = 'yes'; then +- AC_MSG_WARN(include file linux/if_tun.h not found, disabling TUN) +- WITH_TUN= +-fi +-# + if test -n "$WITH_TUN"; then + AC_DEFINE(WITH_TUN) + fi +diff --git a/sysincludes.h b/sysincludes.h +index 98dff77..28067f4 100644 +--- a/sysincludes.h ++++ b/sysincludes.h +@@ -142,9 +142,6 @@ + #if HAVE_NETINET_IF_ETHER_H + #include + #endif +-#if HAVE_LINUX_IF_TUN_H +-#include +-#endif + + #if HAVE_TERMIOS_H && _WITH_TERMIOS + #include +diff --git a/xio-tun.c b/xio-tun.c +index 0628d27..f965a7e 100644 +--- a/xio-tun.c ++++ b/xio-tun.c +@@ -14,6 +14,12 @@ + + #include "xio-tun.h" + ++/* TUNSETIFF flags from if_tun.h kernel header */ ++#define IFF_TUN 0x0001 ++#define IFF_TAP 0x0002 ++#define IFF_NO_PI 0x1000 ++ ++#define TUNSETIFF _IOW('T', 202, int) + + static int xioopen_tun(int argc, const char *argv[], struct opt *opts, int xioflags, xiofile_t *fd, unsigned groups, int dummy1, int dummy2, int dummy3); + +-- +2.5.5 + diff --git a/bsp/buildroot/package/softether/softether.mk b/bsp/buildroot/package/softether/softether.mk index 9f987744..da7d1297 100644 --- a/bsp/buildroot/package/softether/softether.mk +++ b/bsp/buildroot/package/softether/softether.mk @@ -34,9 +34,9 @@ HOST_SOFTETHER_DEPENDENCIES = host-pkgconf host-openssl host-readline # target build creates the file hamcore.se2 which needs the host variant of # hamcorebuilder, for details see http://www.vpnusers.com/viewtopic.php?p=5426 define HOST_SOFTETHER_BUILD_CMDS - $(MAKE) -C $(@D)/src/Mayaqua - $(MAKE) -C $(@D)/src/Cedar - $(MAKE) -C $(@D)/src/hamcorebuilder + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/Mayaqua + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/Cedar + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/hamcorebuilder endef define HOST_SOFTETHER_INSTALL_CMDS diff --git a/bsp/buildroot/package/sqlite/sqlite.hash b/bsp/buildroot/package/sqlite/sqlite.hash index ce03e1ec..bb3707da 100644 --- a/bsp/buildroot/package/sqlite/sqlite.hash +++ b/bsp/buildroot/package/sqlite/sqlite.hash @@ -1,4 +1,4 @@ # From http://www.sqlite.org/download.html -sha1 f6f76e310389e3f510b23826f805850449ae8653 sqlite-autoconf-3130000.tar.gz +sha1 64ca578ad44a94115b1db0406740e14288f74bb8 sqlite-autoconf-3160200.tar.gz # Calculated based on the hash above -sha256 e2797026b3310c9d08bd472f6d430058c6dd139ff9d4e30289884ccd9744086b sqlite-autoconf-3130000.tar.gz +sha256 65cc0c3e9366f50c0679c5ccd31432cea894bc4a3e8947dabab88c8693263615 sqlite-autoconf-3160200.tar.gz diff --git a/bsp/buildroot/package/sqlite/sqlite.mk b/bsp/buildroot/package/sqlite/sqlite.mk index 0dadd765..790caaf4 100644 --- a/bsp/buildroot/package/sqlite/sqlite.mk +++ b/bsp/buildroot/package/sqlite/sqlite.mk @@ -4,9 +4,9 @@ # ################################################################################ -SQLITE_VERSION = 3130000 +SQLITE_VERSION = 3160200 SQLITE_SOURCE = sqlite-autoconf-$(SQLITE_VERSION).tar.gz -SQLITE_SITE = http://www.sqlite.org/2016 +SQLITE_SITE = http://www.sqlite.org/2017 SQLITE_LICENSE = Public domain SQLITE_LICENSE_FILES = tea/license.terms SQLITE_INSTALL_STAGING = YES diff --git a/bsp/buildroot/package/squashfs/squashfs.mk b/bsp/buildroot/package/squashfs/squashfs.mk index 1a5f1ea7..4f848723 100644 --- a/bsp/buildroot/package/squashfs/squashfs.mk +++ b/bsp/buildroot/package/squashfs/squashfs.mk @@ -4,7 +4,7 @@ # ################################################################################ -SQUASHFS_VERSION = 9c1db6d13a51a2e009f0027ef336ce03624eac0d +SQUASHFS_VERSION = 3de1687d7432ea9b302c2db9521996f506c140a3 SQUASHFS_SITE = https://git.kernel.org/pub/scm/fs/squashfs/squashfs-tools.git SQUASHFS_SITE_METHOD = git SQUASHFS_LICENSE = GPLv2+ diff --git a/bsp/buildroot/package/squid/squid.hash b/bsp/buildroot/package/squid/squid.hash index b25a0e0d..d9b7924d 100644 --- a/bsp/buildroot/package/squid/squid.hash +++ b/bsp/buildroot/package/squid/squid.hash @@ -1,3 +1,3 @@ -# From http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.20.tar.xz.asc -md5 48fb18679a30606de98882528beab3a7 squid-3.5.20.tar.xz -sha1 2bb6d3568e7167c9b99fea092a97287d0e430863 squid-3.5.20.tar.xz +# From http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.24.tar.xz.asc +md5 3fae511e16b6379b61c011914673973d squid-3.5.24.tar.xz +sha1 f203637783301a4b86e554b6dd226de721762ae5 squid-3.5.24.tar.xz diff --git a/bsp/buildroot/package/squid/squid.mk b/bsp/buildroot/package/squid/squid.mk index 7179b33b..cf0378a8 100644 --- a/bsp/buildroot/package/squid/squid.mk +++ b/bsp/buildroot/package/squid/squid.mk @@ -5,7 +5,7 @@ ################################################################################ SQUID_VERSION_MAJOR = 3.5 -SQUID_VERSION = $(SQUID_VERSION_MAJOR).20 +SQUID_VERSION = $(SQUID_VERSION_MAJOR).24 SQUID_SOURCE = squid-$(SQUID_VERSION).tar.xz SQUID_SITE = http://www.squid-cache.org/Versions/v3/$(SQUID_VERSION_MAJOR) SQUID_LICENSE = GPLv2+ @@ -25,7 +25,7 @@ SQUID_CONF_ENV = \ BUILDCXXFLAGS="$(HOST_CXXFLAGS)" SQUID_CONF_OPTS = \ --enable-async-io=8 \ - --enable-linux-netfilter \ + $(if $(BR2_TOOLCHAIN_USES_MUSL),--disable-linux-netfilter,--enable-linux-netfilter) \ --enable-removal-policies="lru,heap" \ --with-filedescriptors=1024 \ --disable-ident-lookups \ diff --git a/bsp/buildroot/package/sshpass/sshpass.hash b/bsp/buildroot/package/sshpass/sshpass.hash index 12871e1c..f6e0611c 100644 --- a/bsp/buildroot/package/sshpass/sshpass.hash +++ b/bsp/buildroot/package/sshpass/sshpass.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 c3f78752a68a0c3f62efb3332cceea0c8a1f04f7cf6b46e00ec0c3000bc8483e sshpass-1.05.tar.gz +sha256 c6324fcee608b99a58f9870157dfa754837f8c48be3df0f5e2f3accf145dee60 sshpass-1.06.tar.gz diff --git a/bsp/buildroot/package/sshpass/sshpass.mk b/bsp/buildroot/package/sshpass/sshpass.mk index 7344ca69..de466048 100644 --- a/bsp/buildroot/package/sshpass/sshpass.mk +++ b/bsp/buildroot/package/sshpass/sshpass.mk @@ -4,7 +4,7 @@ # ################################################################################ -SSHPASS_VERSION = 1.05 +SSHPASS_VERSION = 1.06 SSHPASS_SITE = http://downloads.sourceforge.net/project/sshpass/sshpass/$(SSHPASS_VERSION) SSHPASS_LICENSE = GPLv2+ SSHPASS_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/sslh/0001-secure-version-while-building-sslh-in-a-larger-git-t.patch b/bsp/buildroot/package/sslh/0001-secure-version-while-building-sslh-in-a-larger-git-t.patch new file mode 100644 index 00000000..d23bc9fa --- /dev/null +++ b/bsp/buildroot/package/sslh/0001-secure-version-while-building-sslh-in-a-larger-git-t.patch @@ -0,0 +1,45 @@ +From 0c39699da9a3d6534b6d26e7c9686ee76d81b64a Mon Sep 17 00:00:00 2001 +From: David Bachelart +Date: Thu, 26 Jan 2017 10:07:47 +0100 +Subject: [PATCH] fix version extraction when building in a larger git tree + +sslh uses host git to extract its own version number. In buildroot, this +is an issue since extracted information is conflicting with buildroot git +status if we use git as VCS for buildroot. + +Since these git calls are legitimate only if git is used for the sslh +subtree only, this patch adds a check : a .git directory has to exist at +the root of the project to enable git-extracted version string. + +Signed-off-by: David Bachelart +[yann.morin.1998@free.fr: fix troll character U+c2a0] +Signed-off-by: "Yann E. MORIN" +--- + genver.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/genver.sh b/genver.sh +index 79fd0a0..051e57b 100755 +--- a/genver.sh ++++ b/genver.sh +@@ -7,7 +7,7 @@ else + QUIET=0 + fi + +-if ! `(git status | grep -q "On branch") 2> /dev/null`; then ++if [ ! -d .git ] || ! `(git status | grep -q "On branch") 2> /dev/null`; then + # If we don't have git, we can't work out what + # version this is. It must have been downloaded as a + # zip file. +@@ -25,7 +25,7 @@ if ! `(git status | grep -q "On branch") 2> /dev/null`; then + fi + fi + +-if head=`git rev-parse --verify HEAD 2>/dev/null`; then ++if [ -d .git ] && head=`git rev-parse --verify HEAD 2>/dev/null`; then + # generate the version info based on the tag + release=`(git describe --tags || git --describe || git describe --all --long) \ + 2>/dev/null | tr -d '\n'` +-- +2.1.4 + diff --git a/bsp/buildroot/package/sslh/Config.in b/bsp/buildroot/package/sslh/Config.in new file mode 100644 index 00000000..21bd65f1 --- /dev/null +++ b/bsp/buildroot/package/sslh/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SSLH + bool "sslh" + depends on BR2_INSTALL_LIBSTDCPP + # uses fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBCONFIG + help + Applicative protocol multiplexer + + http://www.rutschle.net/tech/sslh.shtml + +comment "sslh needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/bsp/buildroot/package/sslh/S35sslh b/bsp/buildroot/package/sslh/S35sslh new file mode 100644 index 00000000..4a613f84 --- /dev/null +++ b/bsp/buildroot/package/sslh/S35sslh @@ -0,0 +1,48 @@ +#!/bin/sh +# +# Starts the SSLH server +# + +# default setup : listen on port 8090 forward ssh traffic to +# localhost:22 and http traffic to localhost:80 +SSLH_ARGS="--listen 0.0.0.0:8090 --ssh 127.0.0.1:22 --http 127.0.0.1:80" + +# Allow a few customizations from a config file (overrides +# default setup) +test -r /etc/default/sslh && . /etc/default/sslh + +start() { + SSLH_ARGS="$SSLH_ARGS --user root" + echo -n "Starting sslh: " + start-stop-daemon -S -q -p /var/run/sslh.pid \ + --exec /usr/sbin/sslh -- $SSLH_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping sslh: " + start-stop-daemon -K -q -p /var/run/sslh.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/bsp/buildroot/package/sslh/sslh.hash b/bsp/buildroot/package/sslh/sslh.hash new file mode 100644 index 00000000..757005dd --- /dev/null +++ b/bsp/buildroot/package/sslh/sslh.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1601a5b377dcafc6b47d2fbb8d4d25cceb83053a4adcc5874d501a2d5a7745ad sslh-v1.18.tar.gz diff --git a/bsp/buildroot/package/sslh/sslh.mk b/bsp/buildroot/package/sslh/sslh.mk new file mode 100644 index 00000000..17aafd16 --- /dev/null +++ b/bsp/buildroot/package/sslh/sslh.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# sslh +# +################################################################################ + +SSLH_VERSION = v1.18 +SSLH_SITE = http://www.rutschle.net/tech/sslh +SSLH_LICENSE = GPLv2+ +SSLH_LICENSE_FILES = COPYING + +SSLH_DEPENDENCIES = libconfig + +define SSLH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define SSLH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define SSLH_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/sslh/S35sslh $(TARGET_DIR)/etc/init.d/S35sslh +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/sstrip/Config.in b/bsp/buildroot/package/sstrip/Config.in deleted file mode 100644 index c458f8ea..00000000 --- a/bsp/buildroot/package/sstrip/Config.in +++ /dev/null @@ -1,8 +0,0 @@ -config BR2_PACKAGE_SSTRIP - bool "sstrip" - depends on BR2_DEPRECATED_SINCE_2016_08 - help - Small utility that removes a few bytes from an executable that - strip leaves behind. - - http://www.muppetlabs.com/~breadbox/software/elfkickers.html diff --git a/bsp/buildroot/package/sstrip/sstrip.mk b/bsp/buildroot/package/sstrip/sstrip.mk deleted file mode 100644 index 685ea09f..00000000 --- a/bsp/buildroot/package/sstrip/sstrip.mk +++ /dev/null @@ -1,20 +0,0 @@ -################################################################################ -# -# sstrip -# -################################################################################ - -SSTRIP_SITE = svn://svn.openwrt.org/openwrt/trunk/tools/sstrip -SSTRIP_VERSION = 20154 - -define SSTRIP_BUILD_CMDS - cd $(@D) ; \ - $(TARGET_CC) $(TARGET_CFLAGS) -include endian.h -include byteswap.h \ - -o sstrip src/sstrip.c -endef - -define SSTRIP_INSTALL_TARGET_CMDS - $(INSTALL) -D $(@D)/sstrip $(TARGET_DIR)/usr/bin/sstrip -endef - -$(eval $(generic-package)) diff --git a/bsp/buildroot/package/start-stop-daemon/start-stop-daemon.hash b/bsp/buildroot/package/start-stop-daemon/start-stop-daemon.hash index 18a19486..7ce6cc36 100644 --- a/bsp/buildroot/package/start-stop-daemon/start-stop-daemon.hash +++ b/bsp/buildroot/package/start-stop-daemon/start-stop-daemon.hash @@ -1,2 +1,2 @@ -# From http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.18.7.dsc -sha256 ace36d3a6dc750a42baf797f9e75ec580a21f92bb9ff96b482100755d6d9b87b dpkg_1.18.7.tar.xz +# From http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.18.10.dsc +sha256 025524da41ba18b183ff11e388eb8686f7cc58ee835ed7d48bd159c46a8b6dc5 dpkg_1.18.10.tar.xz diff --git a/bsp/buildroot/package/start-stop-daemon/start-stop-daemon.mk b/bsp/buildroot/package/start-stop-daemon/start-stop-daemon.mk index d849badf..5aac5417 100644 --- a/bsp/buildroot/package/start-stop-daemon/start-stop-daemon.mk +++ b/bsp/buildroot/package/start-stop-daemon/start-stop-daemon.mk @@ -7,9 +7,9 @@ # Debian start-stop-daemon is part of dpkg. Since start-stop-daemon is the only # interesting tool in it, we call the buildroot package start-stop-daemon. -START_STOP_DAEMON_VERSION = 1.18.7 +START_STOP_DAEMON_VERSION = 1.18.10 START_STOP_DAEMON_SOURCE = dpkg_$(START_STOP_DAEMON_VERSION).tar.xz -START_STOP_DAEMON_SITE = http://snapshot.debian.org/archive/debian/20160509T100042Z/pool/main/d/dpkg +START_STOP_DAEMON_SITE = http://snapshot.debian.org/archive/debian/20160731T221931Z/pool/main/d/dpkg START_STOP_DAEMON_CONF_OPTS = \ --disable-dselect \ --disable-update-alternatives \ diff --git a/bsp/buildroot/package/statserial/statserial.mk b/bsp/buildroot/package/statserial/statserial.mk index f0e15bc4..22b468eb 100644 --- a/bsp/buildroot/package/statserial/statserial.mk +++ b/bsp/buildroot/package/statserial/statserial.mk @@ -11,7 +11,7 @@ STATSERIAL_LICENSE = GPLv2+ STATSERIAL_LICENSE_FILES = COPYING define STATSERIAL_BUILD_CMDS - $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) endef define STATSERIAL_INSTALL_TARGET_CMDS diff --git a/bsp/buildroot/package/stella/0004-Use-gnu-11-standard-to-prevent-errors-on-PPC.patch b/bsp/buildroot/package/stella/0004-Use-gnu-11-standard-to-prevent-errors-on-PPC.patch new file mode 100644 index 00000000..76d12a2c --- /dev/null +++ b/bsp/buildroot/package/stella/0004-Use-gnu-11-standard-to-prevent-errors-on-PPC.patch @@ -0,0 +1,35 @@ +From 6946a491cae42b971aad3bc5d822e0e549eca8bd Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Thu, 1 Dec 2016 15:20:33 -0200 +Subject: [PATCH] Use gnu++11 standard to prevent errors on PPC. + +PPC altivec vectorization triggers a bug when compiling with -std=c++11 +because "bool" is redefined in altivec.h. + +Acording to a bug report in GCC, "You need to use -std=g++11 or +undefine bool after the include of altivec.h as context sensitive +keywords is not part of the C++11 standard". + +So let's use gnu++11 standard. + +Signed-off-by: Sergio Prado +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 6dd0129587b3..6ed50ea4c335 100644 +--- a/Makefile ++++ b/Makefile +@@ -51,7 +51,7 @@ else + endif + CXXFLAGS+= -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers + ifdef HAVE_GCC +- CXXFLAGS+= -Wno-multichar -Wunused -fno-rtti -Woverloaded-virtual -Wnon-virtual-dtor -std=c++11 ++ CXXFLAGS+= -Wno-multichar -Wunused -fno-rtti -Woverloaded-virtual -Wnon-virtual-dtor -std=gnu++11 + endif + + ifdef PROFILE +-- +1.9.1 + diff --git a/bsp/buildroot/package/strace/strace.hash b/bsp/buildroot/package/strace/strace.hash index 6c09cca3..c7695ff3 100644 --- a/bsp/buildroot/package/strace/strace.hash +++ b/bsp/buildroot/package/strace/strace.hash @@ -1,5 +1,3 @@ -# From http://sourceforge.net/projects/strace/files/strace/4.13/ -md5 4b78c7febdd24c79d5147824d1a080a3 strace-4.13.tar.xz -sha1 7e1fc622e2b166cb74799a14c23d6bfde9ddbc3c strace-4.13.tar.xz -# Locally computed -sha256 d48f732576c91ece36a5843d63f9be054c40ef59f1e4773986042636861625d7 strace-4.13.tar.xz +# From https://sourceforge.net/projects/strace/files/strace/4.15/ +md5 1ff96209fec19914c920608ed0791864 strace-4.15.tar.xz +sha1 18fbaeb07d089023764f618f179091b663a0d21e strace-4.15.tar.xz diff --git a/bsp/buildroot/package/strace/strace.mk b/bsp/buildroot/package/strace/strace.mk index b060137a..b8de81af 100644 --- a/bsp/buildroot/package/strace/strace.mk +++ b/bsp/buildroot/package/strace/strace.mk @@ -4,12 +4,20 @@ # ################################################################################ -STRACE_VERSION = 4.13 +STRACE_VERSION = 4.15 STRACE_SOURCE = strace-$(STRACE_VERSION).tar.xz STRACE_SITE = http://downloads.sourceforge.net/project/strace/strace/$(STRACE_VERSION) STRACE_LICENSE = BSD-3c STRACE_LICENSE_FILES = COPYING +# strace bundle some kernel headers to build libmpers, this mixes userspace +# headers and kernel headers which break the build with musl. +# The stddef.h from gcc is used instead of the one from musl. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +STRACE_CONF_OPTS += st_cv_m32_mpers=no \ + st_cv_mx32_mpers=no +endif + define STRACE_REMOVE_STRACE_GRAPH rm -f $(TARGET_DIR)/usr/bin/strace-graph endef diff --git a/bsp/buildroot/package/stress-ng/stress-ng.hash b/bsp/buildroot/package/stress-ng/stress-ng.hash index d09edc0e..e735439a 100644 --- a/bsp/buildroot/package/stress-ng/stress-ng.hash +++ b/bsp/buildroot/package/stress-ng/stress-ng.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 7af9759a37902ebf401f92fedeada0b82bcd1e3f4e9e10130177344f143470eb stress-ng-0.06.02.tar.gz +sha256 0e1d7733b35f594f7461dedbf836bd4966d0611da4cd4e85cde4804d2a425e6d stress-ng-0.06.15.tar.gz diff --git a/bsp/buildroot/package/stress-ng/stress-ng.mk b/bsp/buildroot/package/stress-ng/stress-ng.mk index 6015a1e9..b4d46993 100644 --- a/bsp/buildroot/package/stress-ng/stress-ng.mk +++ b/bsp/buildroot/package/stress-ng/stress-ng.mk @@ -4,7 +4,7 @@ # ################################################################################ -STRESS_NG_VERSION = 0.06.02 +STRESS_NG_VERSION = 0.06.15 STRESS_NG_SITE = http://kernel.ubuntu.com/~cking/tarballs/stress-ng STRESS_NG_LICENSE = GPLv2+ STRESS_NG_LICENSE_FILES = COPYING @@ -15,8 +15,11 @@ define STRESS_NG_BUILD_CMDS $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) endef +# Don't use make install otherwise stress-ng will be rebuild without +# required link libraries if any. Furthermore, using INSTALL allow to +# set the file permission correcly on the target. define STRESS_NG_INSTALL_TARGET_CMDS - $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install + $(INSTALL) -m 0755 -D $(@D)/stress-ng $(TARGET_DIR)/usr/bin/stress-ng endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/stunnel/stunnel.hash b/bsp/buildroot/package/stunnel/stunnel.hash index abea1a2f..c4e70a7f 100644 --- a/bsp/buildroot/package/stunnel/stunnel.hash +++ b/bsp/buildroot/package/stunnel/stunnel.hash @@ -1,2 +1,2 @@ -# From http://www.stunnel.org/pipermail/stunnel-announce/2016-July/000124.html -sha256 ffa386ae4c825f35f35157c285e7402a6d58779ad8c3822f74a9d355b54aba1d stunnel-5.35.tar.gz +# From http://www.stunnel.org/pipermail/stunnel-announce/2016-September/000125.html +sha256 eb8952fcfdfcdf5056a1f1a78e1ec5014b819c5f5f7599b924dc4490ffe4b5ea stunnel-5.36.tar.gz diff --git a/bsp/buildroot/package/stunnel/stunnel.mk b/bsp/buildroot/package/stunnel/stunnel.mk index ab4457e6..f98e7b59 100644 --- a/bsp/buildroot/package/stunnel/stunnel.mk +++ b/bsp/buildroot/package/stunnel/stunnel.mk @@ -5,13 +5,14 @@ ################################################################################ STUNNEL_VERSION_MAJOR = 5 -STUNNEL_VERSION = $(STUNNEL_VERSION_MAJOR).35 +STUNNEL_VERSION = $(STUNNEL_VERSION_MAJOR).36 STUNNEL_SITE = http://www.usenix.org.uk/mirrors/stunnel/archive/$(STUNNEL_VERSION_MAJOR).x STUNNEL_DEPENDENCIES = openssl STUNNEL_CONF_OPTS = --with-ssl=$(STAGING_DIR)/usr --with-threads=fork \ --disable-libwrap STUNNEL_CONF_ENV = \ - ax_cv_check_cflags___fstack_protector=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) + ax_cv_check_cflags___fstack_protector=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) \ + LIBS=$(if $(BR2_STATIC_LIBS),-lz) STUNNEL_LICENSE = GPLv2+ STUNNEL_LICENSE_FILES = COPYING COPYRIGHT.GPL diff --git a/bsp/buildroot/package/subversion/subversion.hash b/bsp/buildroot/package/subversion/subversion.hash index 926bbc55..1a85961f 100644 --- a/bsp/buildroot/package/subversion/subversion.hash +++ b/bsp/buildroot/package/subversion/subversion.hash @@ -1,2 +1,5 @@ # From http://subversion.apache.org/download.cgi#recommended-release -sha1 bc7d51fdda43bea01e1272dfe9d23d0a9d6cd11c subversion-1.9.4.tar.bz2 +sha1 8bd6a44a1aed30c4c6b6b068488dafb44eaa6adf subversion-1.9.5.tar.bz2 +# Locally calculated after checking PGP signature +# https://www.apache.org/dist/subversion/subversion-1.9.5.tar.bz2.asc +sha256 8a4fc68aff1d18dcb4dd9e460648d24d9e98657fbed496c582929c6b3ce555e5 subversion-1.9.5.tar.bz2 diff --git a/bsp/buildroot/package/subversion/subversion.mk b/bsp/buildroot/package/subversion/subversion.mk index 720a1a10..05569c11 100644 --- a/bsp/buildroot/package/subversion/subversion.mk +++ b/bsp/buildroot/package/subversion/subversion.mk @@ -4,7 +4,7 @@ # ################################################################################ -SUBVERSION_VERSION = 1.9.4 +SUBVERSION_VERSION = 1.9.5 SUBVERSION_SOURCE = subversion-$(SUBVERSION_VERSION).tar.bz2 SUBVERSION_SITE = http://mirror.catn.com/pub/apache/subversion SUBVERSION_LICENSE = Apache-2.0 diff --git a/bsp/buildroot/package/sudo/sudo.hash b/bsp/buildroot/package/sudo/sudo.hash index 4c2431f1..82e1ad66 100644 --- a/bsp/buildroot/package/sudo/sudo.hash +++ b/bsp/buildroot/package/sudo/sudo.hash @@ -1,2 +1,2 @@ # From: http://www.sudo.ws/download.html -sha256 4316381708324da8b6cb151f655c1a11855207c7c02244d8ffdea5104d7cc308 sudo-1.8.15.tar.gz +sha256 237e18e67c2ad59ecacfa4b7707198b09fcf84914621585a9bc670dcc31a52e0 sudo-1.8.19p2.tar.gz diff --git a/bsp/buildroot/package/sudo/sudo.mk b/bsp/buildroot/package/sudo/sudo.mk index f28312ac..bb0a2b5e 100644 --- a/bsp/buildroot/package/sudo/sudo.mk +++ b/bsp/buildroot/package/sudo/sudo.mk @@ -4,9 +4,9 @@ # ################################################################################ -SUDO_VERSION = 1.8.15 +SUDO_VERSION = 1.8.19p2 SUDO_SITE = http://www.sudo.ws/sudo/dist -SUDO_LICENSE = ISC BSD-3c +SUDO_LICENSE = ISC, BSD-3c SUDO_LICENSE_FILES = doc/LICENSE # This is to avoid sudo's make install from chown()ing files which fails SUDO_INSTALL_TARGET_OPTS = INSTALL_OWNER="" DESTDIR="$(TARGET_DIR)" install @@ -30,6 +30,20 @@ else SUDO_CONF_OPTS += --without-pam endif +ifeq ($(BR2_PACKAGE_ZLIB),y) +SUDO_CONF_OPTS += --enable-zlib +SUDO_DEPENDENCIES += zlib +else +SUDO_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +SUDO_DEPENDENCIES += openldap +SUDO_CONF_OPTS += --with-ldap +else +SUDO_CONF_OPTS += --without-ldap +endif + # mksigname/mksiglist needs to run on build host to generate source files define SUDO_BUILD_MKSIGNAME_MKSIGLIST_HOST $(MAKE) $(HOST_CONFIGURE_OPTS) \ diff --git a/bsp/buildroot/package/sunxi-mali/Config.in b/bsp/buildroot/package/sunxi-mali/Config.in index 5e3ae4cd..c6754c28 100644 --- a/bsp/buildroot/package/sunxi-mali/Config.in +++ b/bsp/buildroot/package/sunxi-mali/Config.in @@ -1,10 +1,10 @@ config BR2_PACKAGE_SUNXI_MALI bool "sunxi-mali" + depends on BR2_arm + depends on BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_HAS_LIBEGL select BR2_PACKAGE_HAS_LIBGLES select BR2_PACKAGE_LIBUMP - depends on BR2_TOOLCHAIN_USES_GLIBC - depends on BR2_arm help Install the ARM Mali drivers for sunxi based systems (i.e systems based on ARM Allwinner SoCs). This driver requires diff --git a/bsp/buildroot/package/sunxi-tools/sunxi-tools.hash b/bsp/buildroot/package/sunxi-tools/sunxi-tools.hash index c0499cd0..efb2b54d 100644 --- a/bsp/buildroot/package/sunxi-tools/sunxi-tools.hash +++ b/bsp/buildroot/package/sunxi-tools/sunxi-tools.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 2aa0afc21476ee9b03acff20a19f32c522106e61bcbfa1a9463168fe90a85fc5 sunxi-tools-v1.3.tar.gz +sha256 da5d762608517b4b2e9bd392bd9a63afae3973d9c8264cbcfb757ddac8120d1b sunxi-tools-v1.4.1.tar.gz diff --git a/bsp/buildroot/package/sunxi-tools/sunxi-tools.mk b/bsp/buildroot/package/sunxi-tools/sunxi-tools.mk index 4c497c7b..1a58aff1 100644 --- a/bsp/buildroot/package/sunxi-tools/sunxi-tools.mk +++ b/bsp/buildroot/package/sunxi-tools/sunxi-tools.mk @@ -4,27 +4,27 @@ # ################################################################################ -SUNXI_TOOLS_VERSION = v1.3 +SUNXI_TOOLS_VERSION = v1.4.1 SUNXI_TOOLS_SITE = $(call github,linux-sunxi,sunxi-tools,$(SUNXI_TOOLS_VERSION)) SUNXI_TOOLS_LICENSE = GPLv2+ -SUNXI_TOOLS_LICENSE_FILES = COPYING +SUNXI_TOOLS_LICENSE_FILES = LICENSE.md HOST_SUNXI_TOOLS_DEPENDENCIES = host-libusb host-pkgconf FEX2BIN = $(HOST_DIR)/usr/bin/fex2bin define HOST_SUNXI_TOOLS_BUILD_CMDS - $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) PREFIX=$(HOST_DIR)/usr \ - CFLAGS="$(HOST_CFLAGS) -std=c99 -D_POSIX_C_SOURCE=200112L -Iinclude/" \ + $(HOST_MAKE_ENV) $(MAKE) CC="$(HOSTCC)" PREFIX=$(HOST_DIR)/usr \ + EXTRA_CFLAGS="$(HOST_CFLAGS)" LDFLAGS="$(HOST_LDFLAGS)" \ -C $(@D) tools endef define HOST_SUNXI_TOOLS_INSTALL_CMDS - $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) PREFIX=$(HOST_DIR)/usr \ + $(HOST_MAKE_ENV) $(MAKE) PREFIX=$(HOST_DIR)/usr \ -C $(@D) install-tools endef define SUNXI_TOOLS_BUILD_CMDS - $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) PREFIX=/usr \ - CFLAGS="$(TARGET_CFLAGS) -std=c99 -D_POSIX_C_SOURCE=200112L -Iinclude/" \ + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" PREFIX=/usr \ + EXTRA_CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" \ -C $(@D) sunxi-nand-part endef diff --git a/bsp/buildroot/package/supertuxkart/Config.in b/bsp/buildroot/package/supertuxkart/Config.in index a1f7074e..4919b50a 100644 --- a/bsp/buildroot/package/supertuxkart/Config.in +++ b/bsp/buildroot/package/supertuxkart/Config.in @@ -1,5 +1,7 @@ config BR2_PACKAGE_SUPERTUXKART bool "supertuxkart" + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_i386 || BR2_x86_64 depends on BR2_USE_MMU # fork() depends on BR2_INSTALL_LIBSTDCPP # openal depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal @@ -25,6 +27,8 @@ config BR2_PACKAGE_SUPERTUXKART http://supertuxkart.sourceforge.net/Main_Page comment "supertuxkart needs an OpenGL backend, a uClibc or glibc toolchain w/ NPTL, C++" + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_i386 || BR2_x86_64 depends on BR2_USE_MMU depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS depends on BR2_PACKAGE_XORG7 diff --git a/bsp/buildroot/package/swupdate/Config.in b/bsp/buildroot/package/swupdate/Config.in index 5f5e1e77..d9ef1bc7 100644 --- a/bsp/buildroot/package/swupdate/Config.in +++ b/bsp/buildroot/package/swupdate/Config.in @@ -3,7 +3,8 @@ config BR2_PACKAGE_SWUPDATE depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_USE_MMU # fork() # swupdate requires a parser and uses libconfig as default - select BR2_PACKAGE_LIBCONFIG if !BR2_PACKAGE_JSON_C && !BR2_PACKAGE_LUA_5_2 + select BR2_PACKAGE_LIBCONFIG if !BR2_PACKAGE_JSON_C && \ + !BR2_PACKAGE_HAS_LUAINTERPRETER help swupdate provides a reliable way to update the software on an embedded system. @@ -18,7 +19,11 @@ config BR2_PACKAGE_SWUPDATE use your own modified configuration, you have to select the necessary packages manually: - * Select BR2_PACKAGE_LUA if you want to have Lua support. + * Select BR2_PACKAGE_LUA or BR2_PACKAGE_LUAJIT if you want + to have Lua support. + CONFIG_HANDLER_IN_LUA is not supported in LuaJIT or Lua 5.1. + Note that for LuaJIT support, you need to set + CONFIG_LUAVERSION="jit-5.1". * Select BR2_LIBCURL if you want to use the download feature. * Select BR2_PACKAGE_OPENSSL is you want to add encryption support. * Select BR2_PACKAGE_MTD if you want to use swupdate with UBI diff --git a/bsp/buildroot/package/swupdate/swupdate.hash b/bsp/buildroot/package/swupdate/swupdate.hash index 918ca2fe..1ba10f64 100644 --- a/bsp/buildroot/package/swupdate/swupdate.hash +++ b/bsp/buildroot/package/swupdate/swupdate.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 c21d2fd52eb7ed9c304a7a996d230a8f1b47b9879a8c9fa50c80b41e117d1e60 swupdate-2016.07.tar.gz +sha256 840d6287a41f7a42e08a74045ee40b7c2f82c1ecfedf8c915e3935d4f0084376 swupdate-2016.10.tar.gz diff --git a/bsp/buildroot/package/swupdate/swupdate.mk b/bsp/buildroot/package/swupdate/swupdate.mk index 313a54fe..688f4eef 100644 --- a/bsp/buildroot/package/swupdate/swupdate.mk +++ b/bsp/buildroot/package/swupdate/swupdate.mk @@ -4,7 +4,7 @@ # ################################################################################ -SWUPDATE_VERSION = 2016.07 +SWUPDATE_VERSION = 2016.10 SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION)) SWUPDATE_LICENSE = GPLv2+, MIT, Public Domain SWUPDATE_LICENSE_FILES = COPYING @@ -39,8 +39,8 @@ else SWUPDATE_MAKE_ENV += HAVE_LIBCURL=n endif -ifeq ($(BR2_PACKAGE_LUA),y) -SWUPDATE_DEPENDENCIES += lua host-pkgconf +ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y) +SWUPDATE_DEPENDENCIES += luainterpreter host-pkgconf SWUPDATE_MAKE_ENV += HAVE_LUA=y else SWUPDATE_MAKE_ENV += HAVE_LUA=n @@ -83,7 +83,7 @@ SWUPDATE_BUILD_CONFIG = $(@D)/.config SWUPDATE_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG)) SWUPDATE_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig -ifeq ($(BR2_PREFER_STATIC_LIB),y) +ifeq ($(BR2_STATIC_LIBS),y) define SWUPDATE_PREFER_STATIC $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC,$(SWUPDATE_BUILD_CONFIG)) endef diff --git a/bsp/buildroot/package/synergy/0003-Fix-build-with-gcc-6.patch b/bsp/buildroot/package/synergy/0003-Fix-build-with-gcc-6.patch new file mode 100644 index 00000000..843078fe --- /dev/null +++ b/bsp/buildroot/package/synergy/0003-Fix-build-with-gcc-6.patch @@ -0,0 +1,86 @@ +From b79d478c21ed6af20554ead97da72de845dc3206 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sat, 25 Feb 2017 21:57:19 +0100 +Subject: [PATCH] Fix build with gcc 6 + +Gcc 6.x defaults to C++14, and the iostream operator bool behaviour changed +in C++11. In previous versions, a somewhat odd operator void* was used to +return the status of the stream as a pointer. Since C++11 a more sensible +operator bool is used to return the stream staus. + +For details, see: + +http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool + +The code in CConfigReadContext assumes the pre-C++11 behaviour and provides +its own operator void overload to return the status of the embedded +iostream. With C++11, iostream no longer provides this overload, breaking +the build: + +CConfig.cpp: In member function 'CConfigReadContext::operator void*() const': +CConfig.cpp:1851:9: error: cannot convert 'std::istream {aka std::basic_istream}' to 'void*' in return + return m_stream; + +To fix it, backport part of upstream commit 3d963bfbe7897d0a33ad (possible +fix for mavericks) which changes the code to simply provide a getStream() +method which returns a reference to the embedded stream and the calling code +is changed to use operator bool on the returned stream, making the code +compatible with both old and new compilers. + +This upstream commit is part of the 1.6.0 release, so can be dropped when +the version is bumped. + +Signed-off-by: Peter Korsgaard +--- + lib/server/CConfig.cpp | 7 +------ + lib/server/CConfig.h | 2 +- + 2 files changed, 2 insertions(+), 7 deletions(-) + +diff --git a/lib/server/CConfig.cpp b/lib/server/CConfig.cpp +index a502fe78..d67dde20 100644 +--- a/lib/server/CConfig.cpp ++++ b/lib/server/CConfig.cpp +@@ -607,7 +607,7 @@ void + CConfig::read(CConfigReadContext& context) + { + CConfig tmp; +- while (context) { ++ while (context.getStream()) { + tmp.readSection(context); + } + *this = tmp; +@@ -1846,11 +1846,6 @@ CConfigReadContext::getLineNumber() const + return m_line; + } + +-CConfigReadContext::operator void*() const +-{ +- return m_stream; +-} +- + bool + CConfigReadContext::operator!() const + { +diff --git a/lib/server/CConfig.h b/lib/server/CConfig.h +index c0d2faa8..0ee453cb 100644 +--- a/lib/server/CConfig.h ++++ b/lib/server/CConfig.h +@@ -480,7 +480,6 @@ public: + bool readLine(CString&); + UInt32 getLineNumber() const; + +- operator void*() const; + bool operator!() const; + + OptionValue parseBoolean(const CString&) const; +@@ -502,6 +501,7 @@ public: + IPlatformScreen::CButtonInfo* + parseMouse(const CString& mouse) const; + KeyModifierMask parseModifier(const CString& modifiers) const; ++ std::istream& getStream() const { return m_stream; }; + + private: + // not implemented +-- +2.11.0 + diff --git a/bsp/buildroot/package/sysklogd/0001-Replace-deprecated-union-wait-with-int.patch b/bsp/buildroot/package/sysklogd/0001-Replace-deprecated-union-wait-with-int.patch new file mode 100644 index 00000000..d3fc0dc1 --- /dev/null +++ b/bsp/buildroot/package/sysklogd/0001-Replace-deprecated-union-wait-with-int.patch @@ -0,0 +1,28 @@ +From 76685540a7882926c54bc0d1a8945b7a6abffe40 Mon Sep 17 00:00:00 2001 +From: Ryan Coe +Date: Fri, 7 Oct 2016 19:42:40 -0700 +Subject: [PATCH] Replace deprecated union wait with int + +This is needed for compatibility with glibc >= 2.24. + +Signed-off-by: Ryan Coe +--- + syslogd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/syslogd.c b/syslogd.c +index ea73ea5..ace96c8 100644 +--- a/syslogd.c ++++ b/syslogd.c +@@ -2094,7 +2094,7 @@ void reapchild() + (void) signal(SIGCHLD, reapchild); /* reset signal handler -ASP */ + wait ((int *)0); + #else +- union wait status; ++ int status; + + while (wait3(&status, WNOHANG, (struct rusage *) NULL) > 0) + ; +-- +2.7.4 + diff --git a/bsp/buildroot/package/sysklogd/0002-Fix-improper-header-includes.patch b/bsp/buildroot/package/sysklogd/0002-Fix-improper-header-includes.patch new file mode 100644 index 00000000..3518ef02 --- /dev/null +++ b/bsp/buildroot/package/sysklogd/0002-Fix-improper-header-includes.patch @@ -0,0 +1,78 @@ +From 7a043f619a91fbb998863c08e3e5e94a4747b11d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:07:36 +0100 +Subject: [PATCH] Fix improper header includes + +When building with the musl C library, a number of warnings indicate +that sysklogd is directly including headers that are considered internal +to the C library: + + - Instead of including , should be included. + + - Instead of including , should be included. + + - Instead of includeing , should be included. + +Signed-off-by: Thomas Petazzoni +--- + klogd.c | 2 +- + ksym_mod.c | 2 +- + syslog.c | 2 +- + syslogd.c | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/klogd.c b/klogd.c +index 6cc80ed..a173353 100644 +--- a/klogd.c ++++ b/klogd.c +@@ -260,7 +260,7 @@ + #include + #include + #include +-#include ++#include + #include + #if !defined(__GLIBC__) + #include +diff --git a/ksym_mod.c b/ksym_mod.c +index 68cd6b6..2e69d65 100644 +--- a/ksym_mod.c ++++ b/ksym_mod.c +@@ -113,7 +113,7 @@ + #include + #include + #include +-#include ++#include + #include + #include "module.h" + #if !defined(__GLIBC__) +diff --git a/syslog.c b/syslog.c +index bdb3ff2..f96b43c 100644 +--- a/syslog.c ++++ b/syslog.c +@@ -55,7 +55,7 @@ static char sccsid[] = "@(#)syslog.c 5.28 (Berkeley) 6/27/90"; + #include + #include + #include +-#include ++#include + #include + #if 0 + #include "syslog.h" +diff --git a/syslogd.c b/syslogd.c +index ace96c8..b5e8054 100644 +--- a/syslogd.c ++++ b/syslogd.c +@@ -521,7 +521,7 @@ static char sccsid[] = "@(#)syslogd.c 5.27 (Berkeley) 10/10/88"; + #define SYSLOG_NAMES + #include + #include +-#include ++#include + #include + #include + #include +-- +2.7.4 + diff --git a/bsp/buildroot/package/sysklogd/0003-Remove-include-of-linux-time.h.patch b/bsp/buildroot/package/sysklogd/0003-Remove-include-of-linux-time.h.patch new file mode 100644 index 00000000..374d89bd --- /dev/null +++ b/bsp/buildroot/package/sysklogd/0003-Remove-include-of-linux-time.h.patch @@ -0,0 +1,50 @@ +From f4926a61ba2d3766255dd996bf0315bc8fa0c528 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:09:03 +0100 +Subject: [PATCH] Remove include of + +klogd.c and ksym_mod.c currently include if GLIBC is not +defined. Unfortunately, this breaks badly with the musl C library: this +C library is not glibc so it doesn't define GLIBC, but it does have a +definition of "struct timespec" in its header file, which conflict with +the one provided by the Linux kernel headers. + +So, this commit simply gets rid of this header inclusion. + +Signed-off-by: Thomas Petazzoni +--- + klogd.c | 3 --- + ksym_mod.c | 3 --- + 2 files changed, 6 deletions(-) + +diff --git a/klogd.c b/klogd.c +index a173353..6505d96 100644 +--- a/klogd.c ++++ b/klogd.c +@@ -262,9 +262,6 @@ + #include + #include + #include +-#if !defined(__GLIBC__) +-#include +-#endif /* __GLIBC__ */ + #include + #include + #include +diff --git a/ksym_mod.c b/ksym_mod.c +index 2e69d65..6e26da1 100644 +--- a/ksym_mod.c ++++ b/ksym_mod.c +@@ -116,9 +116,6 @@ + #include + #include + #include "module.h" +-#if !defined(__GLIBC__) +-#include +-#endif /* __GLIBC__ */ + #include + #include + #include +-- +2.7.4 + diff --git a/bsp/buildroot/package/sysklogd/0004-Remove-bogus-hand-written-klogctl-syscall-implementa.patch b/bsp/buildroot/package/sysklogd/0004-Remove-bogus-hand-written-klogctl-syscall-implementa.patch new file mode 100644 index 00000000..548f1607 --- /dev/null +++ b/bsp/buildroot/package/sysklogd/0004-Remove-bogus-hand-written-klogctl-syscall-implementa.patch @@ -0,0 +1,38 @@ +From fe92a7a8197241f7d6b28ea3c8214bb6d2c7fda4 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:10:55 +0100 +Subject: [PATCH] Remove bogus hand-written klogctl() syscall implementation + +The way the hand-written klogctl() syscall is written cannot compile, as +_syscall3() is just a function provided by the C library, so calling it +outside of a function doesn't build. + +Since the musl C library provides a klogctl() function, we don't need +this hand-written system call anyway. + +Signed-off-by: Thomas Petazzoni +--- + klogd.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/klogd.c b/klogd.c +index 6505d96..9219671 100644 +--- a/klogd.c ++++ b/klogd.c +@@ -274,13 +274,8 @@ + + #define __LIBRARY__ + #include +-#if !defined(__GLIBC__) +-# define __NR_ksyslog __NR_syslog +-_syscall3(int,ksyslog,int, type, char *, buf, int, len); +-#else + #include + #define ksyslog klogctl +-#endif + + #define LOG_BUFFER_SIZE 4096 + #define LOG_LINE_LENGTH 1000 +-- +2.7.4 + diff --git a/bsp/buildroot/package/sysklogd/0005-Add-missing-headers-for-open-flags.patch b/bsp/buildroot/package/sysklogd/0005-Add-missing-headers-for-open-flags.patch new file mode 100644 index 00000000..1a7ad848 --- /dev/null +++ b/bsp/buildroot/package/sysklogd/0005-Add-missing-headers-for-open-flags.patch @@ -0,0 +1,46 @@ +From 0dff338a704f4ad11a2b78871e1f2a0b8030b4d2 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:12:37 +0100 +Subject: [PATCH] Add missing headers for open() flags + +Both pidfile.c and syslog.c use open() and its flags, but forgets to +include all relevant headers, causing build failures with the musl C +library. + +Signed-off-by: Thomas Petazzoni +--- + pidfile.c | 2 ++ + syslog.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/pidfile.c b/pidfile.c +index e0959a0..14de56f 100644 +--- a/pidfile.c ++++ b/pidfile.c +@@ -26,8 +26,10 @@ + + #include + #include ++#include + #include + #include ++#include + #include + #include + #include +diff --git a/syslog.c b/syslog.c +index f96b43c..d09e7aa 100644 +--- a/syslog.c ++++ b/syslog.c +@@ -57,6 +57,8 @@ static char sccsid[] = "@(#)syslog.c 5.28 (Berkeley) 6/27/90"; + #include + #include + #include ++#include ++#include + #if 0 + #include "syslog.h" + #include "pathnames.h" +-- +2.7.4 + diff --git a/bsp/buildroot/package/sysklogd/0006-syslogd.c-rename-dprintf-to-mydprintf.patch b/bsp/buildroot/package/sysklogd/0006-syslogd.c-rename-dprintf-to-mydprintf.patch new file mode 100644 index 00000000..a1fb5331 --- /dev/null +++ b/bsp/buildroot/package/sysklogd/0006-syslogd.c-rename-dprintf-to-mydprintf.patch @@ -0,0 +1,39 @@ +From 68213f6902d291d2ba1626fd950fd7d4a1329d33 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:13:08 +0100 +Subject: [PATCH] syslogd.c: rename dprintf() to mydprintf() + +There is an existing kludge in syslogd.c to rename all dprintf() +function calls and its definition to mydprintf(). This kludge is only +applied when the glibc C library is used (i.e when GLIBC is defined), +because glibc also provides a dprintf() function, with a different +signature and behavior. + +However, the musl C library also provides the dprintf() function (with +the same signature as the one in glibc, obviously), but does not define +the GLIBC macro, causing a conflicting definition of dprintf. + +This commit fixes that by having the rename kludge used unconditionally. + +Signed-off-by: Thomas Petazzoni +--- + syslogd.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/syslogd.c b/syslogd.c +index b5e8054..22a9ed5 100644 +--- a/syslogd.c ++++ b/syslogd.c +@@ -818,9 +818,7 @@ void doexit(int sig); + void init(); + void cfline(char *line, register struct filed *f); + int decode(char *name, struct code *codetab); +-#if defined(__GLIBC__) + #define dprintf mydprintf +-#endif /* __GLIBC__ */ + static void dprintf(char *, ...); + static void allocate_log(void); + void sighup_handler(); +-- +2.7.4 + diff --git a/bsp/buildroot/package/syslog-ng/syslog-ng.hash b/bsp/buildroot/package/syslog-ng/syslog-ng.hash index 0213d2da..ba066d13 100644 --- a/bsp/buildroot/package/syslog-ng/syslog-ng.hash +++ b/bsp/buildroot/package/syslog-ng/syslog-ng.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 b1b3ccc0ce7f0d8bf15b23e59f2f4f5ded70eed410dfd27105219bc8856388a5 syslog-ng-3.7.2.tar.gz +sha256 5678856a550ae790618fabde9d1447f932ce7a9080d55dca8fc5df1202c70a17 syslog-ng-3.9.1.tar.gz diff --git a/bsp/buildroot/package/syslog-ng/syslog-ng.mk b/bsp/buildroot/package/syslog-ng/syslog-ng.mk index c11d3bde..61fc48fd 100644 --- a/bsp/buildroot/package/syslog-ng/syslog-ng.mk +++ b/bsp/buildroot/package/syslog-ng/syslog-ng.mk @@ -4,8 +4,7 @@ # ################################################################################ -SYSLOG_NG_VERSION = 3.7.2 -SYSLOG_NG_SOURCE = syslog-ng-$(SYSLOG_NG_VERSION).tar.gz +SYSLOG_NG_VERSION = 3.9.1 SYSLOG_NG_SITE = https://github.com/balabit/syslog-ng/releases/download/syslog-ng-$(SYSLOG_NG_VERSION) SYSLOG_NG_LICENSE = LGPLv2.1+ (syslog-ng core), GPLv2+ (modules) SYSLOG_NG_LICENSE_FILES = COPYING @@ -13,7 +12,8 @@ SYSLOG_NG_DEPENDENCIES = host-bison host-flex host-pkgconf \ eventlog libglib2 openssl pcre # rabbit-mq needs -lrt SYSLOG_NG_CONF_ENV = LIBS=-lrt -SYSLOG_NG_CONF_OPTS = --disable-manpages --localstatedir=/var/run +SYSLOG_NG_CONF_OPTS = --disable-manpages --localstatedir=/var/run \ + --disable-java --disable-java-modules # We override busybox's S01logging init script ifeq ($(BR2_PACKAGE_BUSYBOX),y) @@ -69,6 +69,21 @@ ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) SYSLOG_NG_DEPENDENCIES += util-linux endif +ifeq ($(BR2_PACKAGE_LIBNET),y) +SYSLOG_NG_DEPENDENCIES += libnet +SYSLOG_NG_CONF_OPTS += --enable-spoof-source +else +SYSLOG_NG_CONF_OPTS += --disable-spoof-source +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +SYSLOG_NG_DEPENDENCIES += libcurl +SYSLOG_NG_CONF_OPTS += --enable-http +SYSLOG_NG_CONF_OPTS += --with-libcurl="$(STAGING_DIR)/usr" +else +SYSLOG_NG_CONF_OPTS += --disable-http +endif + ifeq ($(BR2_INIT_SYSTEMD),y) SYSLOG_NG_DEPENDENCIES += systemd SYSLOG_NG_CONF_OPTS += \ diff --git a/bsp/buildroot/package/sysstat/sysstat.hash b/bsp/buildroot/package/sysstat/sysstat.hash index 539bbed5..3b4dda8f 100644 --- a/bsp/buildroot/package/sysstat/sysstat.hash +++ b/bsp/buildroot/package/sysstat/sysstat.hash @@ -1,2 +1,4 @@ # From: http://sebastien.godard.pagesperso-orange.fr/download.html -sha1 ef97b454c254a37587485f61071db1fd9374f276 sysstat-11.2.5.tar.xz +sha1 805002b2bef00cd9ab44c5037d09b29cb71a17f8 sysstat-11.4.3.tar.xz +# Locally calculated +sha256 02e9cafa5557fbae435d33e592373655df929d817ae711d31142dd2f7d4dcee7 sysstat-11.4.3.tar.xz diff --git a/bsp/buildroot/package/sysstat/sysstat.mk b/bsp/buildroot/package/sysstat/sysstat.mk index 1be3d82e..c2853422 100644 --- a/bsp/buildroot/package/sysstat/sysstat.mk +++ b/bsp/buildroot/package/sysstat/sysstat.mk @@ -4,7 +4,7 @@ # ################################################################################ -SYSSTAT_VERSION = 11.2.5 +SYSSTAT_VERSION = 11.4.3 SYSSTAT_SOURCE = sysstat-$(SYSSTAT_VERSION).tar.xz SYSSTAT_SITE = http://pagesperso-orange.fr/sebastien.godard SYSSTAT_CONF_OPTS = --disable-man-group --disable-sensors diff --git a/bsp/buildroot/package/systemd-bootchart/0001-configure-add-option-to-not-build-manpages.patch b/bsp/buildroot/package/systemd-bootchart/0001-configure-add-option-to-not-build-manpages.patch deleted file mode 100644 index ea9f8f24..00000000 --- a/bsp/buildroot/package/systemd-bootchart/0001-configure-add-option-to-not-build-manpages.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 60a581253331ac38721a12495909d073eff703b7 Mon Sep 17 00:00:00 2001 -From: "Yann E. MORIN" -Date: Sat, 13 Aug 2016 18:47:17 +0200 -Subject: [PATCH] configure: add option to not build manpages - -Man pages are not always needed, especially on embedded systems. - -Add a configure option to not build them; by default, build them. - -Signed-off-by: "Yann E. MORIN" ---- -Patch sent upstream: - https://github.com/systemd/systemd-bootchart/pull/14 ---- - Makefile.am | 5 ++++- - configure.ac | 10 +++++++++- - 2 files changed, 13 insertions(+), 2 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index a71f8d8..e6510d5 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -74,7 +74,10 @@ EXTRA_DIST = \ - MANPAGES = man/bootchart.conf.5 man/systemd-bootchart.1 - MANPAGES_ALIAS = man/bootchart.conf.d.5 - --man_MANS = $(MANPAGES) $(MANPAGES_ALIAS) -+if COND_man -+MAYBE_MANPAGES = $(MANPAGES) $(MANPAGES_ALIAS) -+endif -+man_MANS = $(MAYBE_MANPAGES) - - man/bootchart.conf.d.5: man/bootchart.conf.5 - -diff --git a/configure.ac b/configure.ac -index f8e62d8..90e8b03 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -167,8 +167,16 @@ AC_ARG_WITH([rootlibdir], - AC_SUBST([rootprefix], [$with_rootprefix]) - AC_SUBST([rootlibdir], [$with_rootlibdir]) - -+AC_ARG_ENABLE([man], -+ AS_HELP_STRING([--diable-man],[Build the man pages (default: yes)]), -+ [build_man=$enableval], -+ [build_man=yes]) -+ - AC_PATH_PROG([XSLTPROC], [xsltproc]) --AS_IF([test -z "$XSLTPROC"], AC_MSG_ERROR([*** xsltproc is required for man pages])) -+AS_IF([test -z "$XSLTPROC" -a "$build_man" = "yes"], -+ [AC_MSG_ERROR([*** xsltproc is required for man pages])]) -+ -+AM_CONDITIONAL([COND_man],[test "$build_man" = "yes"]) - - AC_CONFIG_FILES([ - Makefile --- -2.7.4 - diff --git a/bsp/buildroot/package/systemd-bootchart/systemd-bootchart.hash b/bsp/buildroot/package/systemd-bootchart/systemd-bootchart.hash index c347ef51..2d2175a0 100644 --- a/bsp/buildroot/package/systemd-bootchart/systemd-bootchart.hash +++ b/bsp/buildroot/package/systemd-bootchart/systemd-bootchart.hash @@ -1,2 +1,2 @@ # sha256 locally computed -sha256 8cfea4f604c00289394a4429f934e19f80dceafbe0ae1846e00997f70d81a20f systemd-bootchart-230.tar.xz +sha256 1ef7b4f440bf53aced26979cf8153482840699c556700671eb5dadb4222c70bd systemd-bootchart-231.tar.xz diff --git a/bsp/buildroot/package/systemd-bootchart/systemd-bootchart.mk b/bsp/buildroot/package/systemd-bootchart/systemd-bootchart.mk index 3d91b05f..31b9413b 100644 --- a/bsp/buildroot/package/systemd-bootchart/systemd-bootchart.mk +++ b/bsp/buildroot/package/systemd-bootchart/systemd-bootchart.mk @@ -4,22 +4,16 @@ # ################################################################################ -SYSTEMD_BOOTCHART_VERSION = 230 +SYSTEMD_BOOTCHART_VERSION = 231 SYSTEMD_BOOTCHART_SOURCE = systemd-bootchart-$(SYSTEMD_BOOTCHART_VERSION).tar.xz -# Do not use the github helper here, the generated tarball is *NOT* the same -# as the one uploaded by upstream for the release. +# Do not use the github helper here: the uploaded release tarball already +# contains the generated autotools scripts. It also slightly differs with +# two missing source files... :-/ SYSTEMD_BOOTCHART_SITE = https://github.com/systemd/systemd-bootchart/releases/download/v$(SYSTEMD_BOOTCHART_VERSION) SYSTEMD_BOOTCHART_LICENSE = LGPLv2.1+ SYSTEMD_BOOTCHART_LICENSE_FILES = LICENSE.LGPL2.1 -SYSTEMD_BOOTCHART_DEPENDENCIES = host-intltool systemd +SYSTEMD_BOOTCHART_DEPENDENCIES = systemd -# 0001-configure-add-option-to-not-build-manpages.patch -SYSTEMD_BOOTCHART_AUTORECONF = YES SYSTEMD_BOOTCHART_CONF_OPTS = --disable-man -define SYSTEMD_BOOTCHART_INTLTOOLIZE - cd $(@D) && $(HOST_DIR)/usr/bin/intltoolize --force --automake -endef -SYSTEMD_BOOTCHART_PRE_CONFIGURE_HOOKS = SYSTEMD_BOOTCHART_INTLTOOLIZE - $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/systemd/0002-build-sys-revert-use-of-ln-relative-option.patch b/bsp/buildroot/package/systemd/0002-build-sys-revert-use-of-ln-relative-option.patch index 18dc9879..2c1d929e 100644 --- a/bsp/buildroot/package/systemd/0002-build-sys-revert-use-of-ln-relative-option.patch +++ b/bsp/buildroot/package/systemd/0002-build-sys-revert-use-of-ln-relative-option.patch @@ -11,25 +11,21 @@ for example). Signed-off-by: Eric Le Bihan [Maxime: refresh the patch] +[Vincent: + refresh the patch, move-to-rootlibdir removed by: + https://github.com/systemd/systemd/commit/082210c7a837063fd8b520b18c221b42059d7eff +] Signed-off-by: Maxime Hadjinlian +Signed-off-by: Vicente Olivert Riera --- - Makefile.am | 15 +++------------ + Makefile.am | 11 ++--------- configure.ac | 2 -- - 2 files changed, 3 insertions(+), 14 deletions(-) + 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/Makefile.am b/Makefile.am index 0c27f81..4de1595 100644 --- a/Makefile.am +++ b/Makefile.am -@@ -255,7 +255,7 @@ define move-to-rootlibdir - $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ - so_img_name=$$(readlink $(DESTDIR)$(libdir)/$$libname) && \ - rm -f $(DESTDIR)$(libdir)/$$libname && \ -- $(LN_S) --relative -f $(DESTDIR)$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/$$libname && \ -+ $(LN_S) -f $(DESTDIR)$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/$$libname && \ - mv $(DESTDIR)$(libdir)/$$libname.* $(DESTDIR)$(rootlibdir); \ - fi - endef @@ -312,9 +312,9 @@ install-aliases-hook: set -- $(SYSTEM_UNIT_ALIASES) && \ dir=$(systemunitdir) && $(install-aliases) diff --git a/bsp/buildroot/package/systemd/Config.in b/bsp/buildroot/package/systemd/Config.in index ddaf3e23..aaed7dc0 100644 --- a/bsp/buildroot/package/systemd/Config.in +++ b/bsp/buildroot/package/systemd/Config.in @@ -10,7 +10,6 @@ config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS menuconfig BR2_PACKAGE_SYSTEMD bool "systemd" depends on BR2_INIT_SYSTEMD - depends on BR2_USE_WCHAR # util-linux depends on !BR2_STATIC_LIBS # kmod depends on BR2_TOOLCHAIN_HAS_THREADS # dbus depends on BR2_USE_MMU # dbus @@ -106,7 +105,6 @@ config BR2_PACKAGE_SYSTEMD_COREDUMP config BR2_PACKAGE_SYSTEMD_FIRSTBOOT bool "enable firstboot support" - default y help systemd-firstboot initializes the most basic system settings interactively on the first boot. diff --git a/bsp/buildroot/package/systemd/dhcp.network b/bsp/buildroot/package/systemd/dhcp.network new file mode 100644 index 00000000..9b636fa9 --- /dev/null +++ b/bsp/buildroot/package/systemd/dhcp.network @@ -0,0 +1,4 @@ +[Match] +Name=SYSTEMD_NETWORKD_DHCP_IFACE +[Network] +DHCP=ipv4 diff --git a/bsp/buildroot/package/systemd/systemd.hash b/bsp/buildroot/package/systemd/systemd.hash index 30e9ef65..0acaa3cd 100644 --- a/bsp/buildroot/package/systemd/systemd.hash +++ b/bsp/buildroot/package/systemd/systemd.hash @@ -1,2 +1,2 @@ # sha256 locally computed -sha256 899733ad6c157cedbb89aec4efe3bc824dcfd65a1d6f6bebc7b043f7924e39b4 systemd-231.tar.gz +sha256 1172c7c7d5d72fbded53186e7599d5272231f04cc8b72f9a0fb2c5c20dfc4880 systemd-232.tar.gz diff --git a/bsp/buildroot/package/systemd/systemd.mk b/bsp/buildroot/package/systemd/systemd.mk index fb078195..fce5d841 100644 --- a/bsp/buildroot/package/systemd/systemd.mk +++ b/bsp/buildroot/package/systemd/systemd.mk @@ -4,7 +4,7 @@ # ################################################################################ -SYSTEMD_VERSION = 231 +SYSTEMD_VERSION = 232 SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION)) SYSTEMD_LICENSE = LGPLv2.1+, GPLv2+ (udev), Public Domain (few source files, see README) SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README @@ -30,7 +30,6 @@ SYSTEMD_CONF_OPTS += \ --enable-blkid \ --enable-static=no \ --disable-manpages \ - --disable-selinux \ --disable-pam \ --disable-ima \ --disable-libcryptsetup \ @@ -153,6 +152,13 @@ else SYSTEMD_CONF_OPTS += --disable-microhttpd --disable-qrencode endif +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +SYSTEMD_DEPENDENCIES += libselinux +SYSTEMD_CONF_OPTS += --enable-selinux +else +SYSTEMD_CONF_OPTS += --disable-selinux +endif + ifeq ($(BR2_PACKAGE_SYSTEMD_HWDB),y) SYSTEMD_CONF_OPTS += --enable-hwdb else @@ -275,6 +281,14 @@ define SYSTEMD_INSTALL_RESOLVCONF_HOOK ln -sf ../run/systemd/resolve/resolv.conf \ $(TARGET_DIR)/etc/resolv.conf endef +SYSTEMD_NETWORKD_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP)) +ifneq ($(SYSTEMD_NETWORKD_DHCP_IFACE),) +define SYSTEMD_INSTALL_NETWORK_CONFS + sed s/SYSTEMD_NETWORKD_DHCP_IFACE/$(SYSTEMD_NETWORKD_DHCP_IFACE)/ \ + package/systemd/dhcp.network > \ + $(TARGET_DIR)/etc/systemd/network/dhcp.network +endef +endif else SYSTEMD_CONF_OPTS += --disable-networkd define SYSTEMD_INSTALL_SERVICE_NETWORK @@ -377,6 +391,7 @@ define SYSTEMD_INSTALL_INIT_SYSTEMD $(SYSTEMD_INSTALL_SERVICE_TTY) $(SYSTEMD_INSTALL_SERVICE_NETWORK) $(SYSTEMD_INSTALL_SERVICE_TIMESYNC) + $(SYSTEMD_INSTALL_NETWORK_CONFS) endef $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/taglib/taglib.hash b/bsp/buildroot/package/taglib/taglib.hash index a3cfc79f..7a5c5cf9 100644 --- a/bsp/buildroot/package/taglib/taglib.hash +++ b/bsp/buildroot/package/taglib/taglib.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 ed4cabb3d970ff9a30b2620071c2b054c4347f44fc63546dbe06f97980ece288 taglib-1.11.tar.gz +sha256 b6d1a5a610aae6ff39d93de5efd0fdc787aa9e9dc1e7026fa4c961b26563526b taglib-1.11.1.tar.gz diff --git a/bsp/buildroot/package/taglib/taglib.mk b/bsp/buildroot/package/taglib/taglib.mk index 0a2ca4dc..f47c4ba4 100644 --- a/bsp/buildroot/package/taglib/taglib.mk +++ b/bsp/buildroot/package/taglib/taglib.mk @@ -4,7 +4,7 @@ # ################################################################################ -TAGLIB_VERSION = 1.11 +TAGLIB_VERSION = 1.11.1 TAGLIB_SITE = http://taglib.github.io/releases TAGLIB_INSTALL_STAGING = YES TAGLIB_LICENSE = LGPLv2.1, MPL diff --git a/bsp/buildroot/package/targetcli-fb/Config.in b/bsp/buildroot/package/targetcli-fb/Config.in index b6559387..24ff3145 100644 --- a/bsp/buildroot/package/targetcli-fb/Config.in +++ b/bsp/buildroot/package/targetcli-fb/Config.in @@ -12,4 +12,4 @@ config BR2_PACKAGE_TARGETCLI_FB LIO generic SCSI target, present in 3.x Linux kernel versions. - https://github.com/agrover/targetcli-fb + https://github.com/open-iscsi/targetcli-fb diff --git a/bsp/buildroot/package/targetcli-fb/targetcli-fb.mk b/bsp/buildroot/package/targetcli-fb/targetcli-fb.mk index cf7f29ff..40575925 100644 --- a/bsp/buildroot/package/targetcli-fb/targetcli-fb.mk +++ b/bsp/buildroot/package/targetcli-fb/targetcli-fb.mk @@ -4,8 +4,10 @@ # ################################################################################ +# When upgrading the version, be sure to also upgrade python-rtslib-fb +# and python-configshell-fb at the same time. TARGETCLI_FB_VERSION = v2.1.fb41 -TARGETCLI_FB_SITE = $(call github,agrover,targetcli-fb,$(TARGETCLI_FB_VERSION)) +TARGETCLI_FB_SITE = $(call github,open-iscsi,targetcli-fb,$(TARGETCLI_FB_VERSION)) TARGETCLI_FB_LICENSE = Apache-2.0 TARGETCLI_FB_LICENSE_FILES = COPYING TARGETCLI_FB_SETUP_TYPE = setuptools diff --git a/bsp/buildroot/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch b/bsp/buildroot/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch new file mode 100644 index 00000000..f2365ea2 --- /dev/null +++ b/bsp/buildroot/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch @@ -0,0 +1,32 @@ +From 88fee5c6eb2271d3de6b9878cd29a0494999aa18 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Sun, 20 Nov 2016 23:46:45 +0100 +Subject: [PATCH] Use correct variables for GnuTLS detection + +At least with recent CMake, it seems the variables created by +find_package (GnuTLS) are called PC_GNUTLS_INCLUDE_DIRS and +PC_GNUTLS_LIBRARIES. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d8125d9..ccf827b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -110,8 +110,8 @@ message ("-- Looking for GnuTLS") + find_package (GnuTLS REQUIRED) + if (GNUTLS_FOUND) + set (HAVE_LIBGNUTLS true) +- set (TASKD_INCLUDE_DIRS ${TASKD_INCLUDE_DIRS} ${GNUTLS_INCLUDE_DIR}) +- set (TASKD_LIBRARIES ${TASKD_LIBRARIES} ${GNUTLS_LIBRARIES}) ++ set (TASKD_INCLUDE_DIRS ${TASKD_INCLUDE_DIRS} ${PC_GNUTLS_INCLUDE_DIRS}) ++ set (TASKD_LIBRARIES ${TASKD_LIBRARIES} ${PC_GNUTLS_LIBRARIES}) + endif (GNUTLS_FOUND) + + message ("-- Looking for libuuid") +-- +2.10.2 + diff --git a/bsp/buildroot/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch b/bsp/buildroot/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch new file mode 100644 index 00000000..34139fef --- /dev/null +++ b/bsp/buildroot/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch @@ -0,0 +1,40 @@ +CMakeLists.txt: use pkg-config to detect uuid when possible + +In order to take into account the libraries used by libuuid when +building statically, using pkg-config is recommended. This patch +therefore improves the CMakeLists.txt to use pkg-config to detect +libuuid when pkg-config is available. + +Signed-off-by: Thomas Petazzoni + +Index: b/CMakeLists.txt +=================================================================== +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,7 @@ + + include (CheckFunctionExists) + include (CheckStructHasMember) ++include (FindPkgConfig) + + set (HAVE_CMAKE true) + +@@ -119,8 +120,16 @@ + # Apple and FreeBSD include the uuid functions in their libc, rather than libuuid + check_function_exists (uuid_unparse_lower HAVE_UUID_UNPARSE_LOWER) + else (DARWIN OR FREEBSD) +- find_path (UUID_INCLUDE_DIR uuid/uuid.h) +- find_library (UUID_LIBRARY NAMES uuid) ++ if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_UUID uuid) ++ if(PC_UUID_FOUND) ++ set (UUID_INCLUDE_DIR ${PC_UUID_INCLUDE_DIRS}) ++ set (UUID_LIBRARY ${PC_UUID_LIBRARIES}) ++ endif(PC_UUID_FOUND) ++ else(PKG_CONFIG_FOUND) ++ find_path (UUID_INCLUDE_DIR uuid/uuid.h) ++ find_library (UUID_LIBRARY NAMES uuid) ++ endif(PKG_CONFIG_FOUND) + if (UUID_INCLUDE_DIR AND UUID_LIBRARY) + set (TASKD_INCLUDE_DIRS ${TASKD_INCLUDE_DIRS} ${UUID_INCLUDE_DIR}) + set (TASKD_LIBRARIES ${TASKD_LIBRARIES} ${UUID_LIBRARY}) diff --git a/bsp/buildroot/package/taskd/Config.in b/bsp/buildroot/package/taskd/Config.in index 7a9a1360..7d26abaa 100644 --- a/bsp/buildroot/package/taskd/Config.in +++ b/bsp/buildroot/package/taskd/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_TASKD bool "taskd" - depends on BR2_USE_WCHAR # gnutls, util-linux + depends on BR2_USE_WCHAR # gnutls depends on BR2_USE_MMU # fork() depends on BR2_INSTALL_LIBSTDCPP select BR2_PACKAGE_GNUTLS diff --git a/bsp/buildroot/package/taskd/taskd.mk b/bsp/buildroot/package/taskd/taskd.mk index 34a260ea..b19be689 100644 --- a/bsp/buildroot/package/taskd/taskd.mk +++ b/bsp/buildroot/package/taskd/taskd.mk @@ -8,6 +8,6 @@ TASKD_VERSION = 1.1.0 TASKD_SITE = http://taskwarrior.org/download TASKD_LICENSE = MIT TASKD_LICENSE_FILES = COPYING -TASKD_DEPENDENCIES = gnutls util-linux +TASKD_DEPENDENCIES = gnutls util-linux host-pkgconf $(eval $(cmake-package)) diff --git a/bsp/buildroot/package/tcpdump/tcpdump.hash b/bsp/buildroot/package/tcpdump/tcpdump.hash index 997cd424..966db1f3 100644 --- a/bsp/buildroot/package/tcpdump/tcpdump.hash +++ b/bsp/buildroot/package/tcpdump/tcpdump.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 177385d9d17d1d99ba6aa3ea63a8400a5f4c54db62b83ac6d4da56944bee623b tcpdump-4.8.0.tar.gz +sha256 eae98121cbb1c9adbedd9a777bf2eae9fa1c1c676424a54740311c8abcee5a5e tcpdump-4.9.0.tar.gz diff --git a/bsp/buildroot/package/tcpdump/tcpdump.mk b/bsp/buildroot/package/tcpdump/tcpdump.mk index 559b816a..e71f9c11 100644 --- a/bsp/buildroot/package/tcpdump/tcpdump.mk +++ b/bsp/buildroot/package/tcpdump/tcpdump.mk @@ -4,7 +4,7 @@ # ################################################################################ -TCPDUMP_VERSION = 4.8.0 +TCPDUMP_VERSION = 4.9.0 TCPDUMP_SITE = http://www.tcpdump.org/release TCPDUMP_LICENSE = BSD-3c TCPDUMP_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/tcping/Config.in b/bsp/buildroot/package/tcping/Config.in index 6677b58b..e72df096 100644 --- a/bsp/buildroot/package/tcping/Config.in +++ b/bsp/buildroot/package/tcping/Config.in @@ -11,4 +11,4 @@ config BR2_PACKAGE_TCPING desired port is reachable and then start connection establishment. - http://www.linuxco.de/tcping/tcping.html + http://linuxco.de/tcping/tcping.html diff --git a/bsp/buildroot/package/tcping/tcping.mk b/bsp/buildroot/package/tcping/tcping.mk index ff43490c..f5919bb8 100644 --- a/bsp/buildroot/package/tcping/tcping.mk +++ b/bsp/buildroot/package/tcping/tcping.mk @@ -5,12 +5,12 @@ ################################################################################ TCPING_VERSION = 1.3.5 -TCPING_SITE = http://www.linuxco.de/tcping +TCPING_SITE = http://linuxco.de/tcping TCPING_LICENSE = GPLv3+ TCPING_LICENSE_FILES = LICENSE define TCPING_BUILD_CMDS - $(MAKE) CC="$(TARGET_CC)" CCFLAGS="$(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CCFLAGS="$(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ -C $(@D) tcping.linux endef diff --git a/bsp/buildroot/package/tcpreplay/tcpreplay.hash b/bsp/buildroot/package/tcpreplay/tcpreplay.hash index 95d6d5d8..e7ba4400 100644 --- a/bsp/buildroot/package/tcpreplay/tcpreplay.hash +++ b/bsp/buildroot/package/tcpreplay/tcpreplay.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 61b916ef91049cad2a9ddc8de6f5e3e3cc5d9998dbb644dc91cf3a798497ffe4 tcpreplay-4.1.1.tar.gz +sha256 da483347e83a9b5df0e0dbb0f822a2d37236e79dda35f4bc4e6684fa827f25ea tcpreplay-4.1.2.tar.gz diff --git a/bsp/buildroot/package/tcpreplay/tcpreplay.mk b/bsp/buildroot/package/tcpreplay/tcpreplay.mk index 0723c02d..a8bcf1c5 100644 --- a/bsp/buildroot/package/tcpreplay/tcpreplay.mk +++ b/bsp/buildroot/package/tcpreplay/tcpreplay.mk @@ -4,7 +4,7 @@ # ################################################################################ -TCPREPLAY_VERSION = 4.1.1 +TCPREPLAY_VERSION = 4.1.2 TCPREPLAY_SITE = https://github.com/appneta/tcpreplay/releases/download/v$(TCPREPLAY_VERSION) TCPREPLAY_LICENSE = GPLv3 TCPREPLAY_LICENSE_FILES = docs/LICENSE diff --git a/bsp/buildroot/package/tekui/tekui.mk b/bsp/buildroot/package/tekui/tekui.mk index 60b48e07..f9ae8490 100644 --- a/bsp/buildroot/package/tekui/tekui.mk +++ b/bsp/buildroot/package/tekui/tekui.mk @@ -56,11 +56,11 @@ endif endif define TEKUI_BUILD_CMDS - $(MAKE) $(TEKUI_MAKE_OPTS) PREFIX="/usr" -C $(@D) all + $(TARGET_MAKE_ENV) $(MAKE) $(TEKUI_MAKE_OPTS) PREFIX="/usr" -C $(@D) all endef define TEKUI_INSTALL_TARGET_CMDS - $(MAKE) $(TEKUI_MAKE_OPTS) PREFIX="$(TARGET_DIR)/usr" -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) $(TEKUI_MAKE_OPTS) PREFIX="$(TARGET_DIR)/usr" -C $(@D) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/terminology/Config.in b/bsp/buildroot/package/terminology/Config.in index c574af7f..f367ce51 100644 --- a/bsp/buildroot/package/terminology/Config.in +++ b/bsp/buildroot/package/terminology/Config.in @@ -1,7 +1,6 @@ config BR2_PACKAGE_TERMINOLOGY bool "terminology" depends on BR2_PACKAGE_EFL - select BR2_PACKAGE_ELEMENTARY help Terminology is an EFL terminal emulator with some extra bells and whistles. diff --git a/bsp/buildroot/package/terminology/terminology.hash b/bsp/buildroot/package/terminology/terminology.hash index 841ff948..86f6606a 100644 --- a/bsp/buildroot/package/terminology/terminology.hash +++ b/bsp/buildroot/package/terminology/terminology.hash @@ -1,2 +1,2 @@ -# From http://sourceforge.net/p/enlightenment/mailman/message/34472601/ -sha256 ecee7ae6ba2fa10bfc5b6531292157dec2373dbb7d248cc62eb53d0be74e9bcf terminology-0.9.1.tar.xz +# From https://sourceforge.net/p/enlightenment/mailman/message/35600707/ +sha256 bfed42b83bce854d35ba33a4d38373c6d42fb2c0ea0335d76420488c091692f4 terminology-1.0.0.tar.xz diff --git a/bsp/buildroot/package/terminology/terminology.mk b/bsp/buildroot/package/terminology/terminology.mk index d6c41d74..d7e98270 100644 --- a/bsp/buildroot/package/terminology/terminology.mk +++ b/bsp/buildroot/package/terminology/terminology.mk @@ -4,13 +4,13 @@ # ################################################################################ -TERMINOLOGY_VERSION = 0.9.1 +TERMINOLOGY_VERSION = 1.0.0 TERMINOLOGY_SOURCE = terminology-$(TERMINOLOGY_VERSION).tar.xz TERMINOLOGY_SITE = https://download.enlightenment.org/rel/apps/terminology TERMINOLOGY_LICENSE = BSD-2c TERMINOLOGY_LICENSE_FILES = COPYING -TERMINOLOGY_DEPENDENCIES = efl elementary host-pkgconf +TERMINOLOGY_DEPENDENCIES = efl host-pkgconf TERMINOLOGY_CONF_OPTS = --with-edje-cc=$(HOST_DIR)/usr/bin/edje_cc $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/texinfo/texinfo.hash b/bsp/buildroot/package/texinfo/texinfo.hash deleted file mode 100644 index 4bdf3435..00000000 --- a/bsp/buildroot/package/texinfo/texinfo.hash +++ /dev/null @@ -1,2 +0,0 @@ -# Locally calculated -sha256 ac68394ce21b2420ba7ed7cec65d84aacf308cc88e9bf4716fcfff88286883d2 texinfo-6.1.tar.xz diff --git a/bsp/buildroot/package/texinfo/texinfo.mk b/bsp/buildroot/package/texinfo/texinfo.mk deleted file mode 100644 index ebd0b488..00000000 --- a/bsp/buildroot/package/texinfo/texinfo.mk +++ /dev/null @@ -1,13 +0,0 @@ -################################################################################ -# -# texinfo -# -################################################################################ - -TEXINFO_VERSION = 6.1 -TEXINFO_SITE = $(BR2_GNU_MIRROR)/texinfo -TEXINFO_SOURCE = texinfo-$(TEXINFO_VERSION).tar.xz -TEXINFO_LICENSE = GPLv3+ -TEXINFO_LICENSE_FILES = COPYING - -$(eval $(host-autotools-package)) diff --git a/bsp/buildroot/package/ti-cgt-pru/Config.in.host b/bsp/buildroot/package/ti-cgt-pru/Config.in.host new file mode 100644 index 00000000..a3663370 --- /dev/null +++ b/bsp/buildroot/package/ti-cgt-pru/Config.in.host @@ -0,0 +1,17 @@ +config BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS + bool + default y + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_arm + +config BR2_PACKAGE_HOST_TI_CGT_PRU + bool "host ti-cgt-pru" + depends on BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS + help + This package provides the Code Generation Tools for the PRU + unit found on some TI processors e.g. AM3358. + + Note: this is a binary cross toolchain that runs on x86 hosts + targeting PRU cores found alongside some ARM processors. + + http://processors.wiki.ti.com/index.php/Programmable_Realtime_Unit_Software_Development diff --git a/bsp/buildroot/package/ti-cgt-pru/ti-cgt-pru.hash b/bsp/buildroot/package/ti-cgt-pru/ti-cgt-pru.hash new file mode 100644 index 00000000..1c19b33f --- /dev/null +++ b/bsp/buildroot/package/ti-cgt-pru/ti-cgt-pru.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 df85cd1ed3aea12d577854ece11bf5f2af6ace8c39959eea4cf2fa5973924e0e ti_cgt_pru_2.1.3_linux_installer_x86.bin diff --git a/bsp/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk b/bsp/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk new file mode 100644 index 00000000..d94f0919 --- /dev/null +++ b/bsp/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# ti-cgt-pru +# +################################################################################ + +TI_CGT_PRU_VERSION = 2.1.3 +TI_CGT_PRU_SOURCE = ti_cgt_pru_$(TI_CGT_PRU_VERSION)_linux_installer_x86.bin +TI_CGT_PRU_SITE = http://software-dl.ti.com/codegen/esd/cgt_public_sw/PRU/$(TI_CGT_PRU_VERSION) +TI_CGT_PRU_LICENSE = TI Technology and Software Publicly Available License (compiler + PRU library), \ + Boost Software License 1.0 (compiler), \ + BSD-2c, BSD-3c, MIT, Academic Free License 3.0, Hewlett-Packard (PRU library) +TI_CGT_PRU_LICENSE_FILES = PRU_Code_Generation_Tools_2.1.x_manifest.html \ + PRU_CodeGen_Library_2.1_0222433C-30C1-442d-B5C6-2073BD97F80F.spdx.tag + +define HOST_TI_CGT_PRU_EXTRACT_CMDS + chmod +x $(DL_DIR)/$(TI_CGT_PRU_SOURCE) + $(DL_DIR)/$(TI_CGT_PRU_SOURCE) --prefix $(@D) --mode unattended + mv $(@D)/ti-cgt-pru_$(TI_CGT_PRU_VERSION)/* $(@D) + rmdir $(@D)/ti-cgt-pru_$(TI_CGT_PRU_VERSION)/ +endef + +# Since this is largely prebuilt toolchain and likes to live in its +# own directory, put it in $(HOST_DIR)/usr/share/ti-cgt-pru/. +# Packages wanting to use this toolchain need to use this path as TI's +# standard PRU_CGT path e.g. make PRU_CGT=$(TI_CGT_PRU_INSTALLDIR)... +TI_CGT_PRU_INSTALLDIR = $(HOST_DIR)/usr/share/ti-cgt-pru + +define HOST_TI_CGT_PRU_INSTALL_CMDS + mkdir -p $(TI_CGT_PRU_INSTALLDIR) + cp -dpfr $(@D)/* $(TI_CGT_PRU_INSTALLDIR) +endef + +$(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/ti-gfx/ti-gfx.mk b/bsp/buildroot/package/ti-gfx/ti-gfx.mk index 47eb474c..428878a0 100644 --- a/bsp/buildroot/package/ti-gfx/ti-gfx.mk +++ b/bsp/buildroot/package/ti-gfx/ti-gfx.mk @@ -101,7 +101,7 @@ define TI_GFX_EXTRACT_CMDS endef define TI_GFX_BUILD_KM_CMDS - $(MAKE) $(TI_GFX_KM_MAKE_OPTS) -C $(@D)/GFX_Linux_KM all + $(TARGET_MAKE_ENV) $(MAKE) $(TI_GFX_KM_MAKE_OPTS) -C $(@D)/GFX_Linux_KM all endef ifeq ($(BR2_PACKAGE_TI_GFX_DEMOS),y) @@ -156,7 +156,7 @@ define TI_GFX_INSTALL_STAGING_CMDS endef define TI_GFX_INSTALL_KM_CMDS - $(MAKE) $(TI_GFX_KM_MAKE_OPTS) -C $(@D)/GFX_Linux_KM install + $(TARGET_MAKE_ENV) $(MAKE) $(TI_GFX_KM_MAKE_OPTS) -C $(@D)/GFX_Linux_KM install endef define TI_GFX_INSTALL_BINS_CMDS diff --git a/bsp/buildroot/package/ti-sgx-km/ti-sgx-km.mk b/bsp/buildroot/package/ti-sgx-km/ti-sgx-km.mk index 58ba3f09..48c8a6d1 100644 --- a/bsp/buildroot/package/ti-sgx-km/ti-sgx-km.mk +++ b/bsp/buildroot/package/ti-sgx-km/ti-sgx-km.mk @@ -31,7 +31,7 @@ TI_SGX_KM_SUBDIR = eurasia_km/eurasiacon/build/linux2/$(TI_SGX_KM_PLATFORM_NAME) define TI_SGX_KM_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) $(TI_SGX_KM_MAKE_OPTS) \ - -C $(@D)/$(TI_SGX_KM_SUBDIR) + -C $(@D)/$(TI_SGX_KM_SUBDIR) endef define TI_SGX_KM_INSTALL_TARGET_CMDS diff --git a/bsp/buildroot/package/ti-sgx-um/ti-sgx-um.mk b/bsp/buildroot/package/ti-sgx-um/ti-sgx-um.mk index d9ff2dfe..d5c50a01 100644 --- a/bsp/buildroot/package/ti-sgx-um/ti-sgx-um.mk +++ b/bsp/buildroot/package/ti-sgx-um/ti-sgx-um.mk @@ -15,11 +15,11 @@ TI_SGX_UM_INSTALL_STAGING = YES TI_SGX_UM_DEPENDENCIES = libdrm define TI_SGX_UM_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D) DISCIMAGE=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DISCIMAGE=$(STAGING_DIR) install endef define TI_SGX_UM_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DISCIMAGE=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DISCIMAGE=$(TARGET_DIR) install endef # libs use the following file for configuration diff --git a/bsp/buildroot/package/ti-utils/ti-utils.mk b/bsp/buildroot/package/ti-utils/ti-utils.mk index 06aca6d4..cfb0cb87 100644 --- a/bsp/buildroot/package/ti-utils/ti-utils.mk +++ b/bsp/buildroot/package/ti-utils/ti-utils.mk @@ -14,7 +14,7 @@ TI_UTILS_CFLAGS = `$(PKG_CONFIG_HOST_BINARY) --cflags libnl-genl-3.0` TI_UTILS_LIBS = `$(PKG_CONFIG_HOST_BINARY) --libs libnl-genl-3.0` define TI_UTILS_BUILD_CMDS - $(MAKE1) NFSROOT="$(STAGING_DIR)" \ + $(TARGET_MAKE_ENV) $(MAKE1) NFSROOT="$(STAGING_DIR)" \ CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(TI_UTILS_CFLAGS)" \ LIBS="$(TI_UTILS_LIBS)" -C $(@D) all endef diff --git a/bsp/buildroot/package/tidsp-binaries/tidsp-binaries.mk b/bsp/buildroot/package/tidsp-binaries/tidsp-binaries.mk index bc542cdf..9736bc72 100644 --- a/bsp/buildroot/package/tidsp-binaries/tidsp-binaries.mk +++ b/bsp/buildroot/package/tidsp-binaries/tidsp-binaries.mk @@ -10,7 +10,7 @@ TIDSP_BINARIES_LICENSE = TI Proprietary License TIDSP_BINARIES_LICENSE_FILES = LICENSE define TIDSP_BINARIES_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) -e DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) -e DESTDIR=$(TARGET_DIR) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/tiff/Config.in b/bsp/buildroot/package/tiff/Config.in index 6e5c1765..092a7f3f 100644 --- a/bsp/buildroot/package/tiff/Config.in +++ b/bsp/buildroot/package/tiff/Config.in @@ -3,7 +3,7 @@ menuconfig BR2_PACKAGE_TIFF help Library for handling TIFF (Tag Image File Format) images. - http://www.remotesensing.org/libtiff/ + http://simplesystems.org/libtiff/ if BR2_PACKAGE_TIFF diff --git a/bsp/buildroot/package/tiff/tiff.hash b/bsp/buildroot/package/tiff/tiff.hash index 7ff746f6..4439a35f 100644 --- a/bsp/buildroot/package/tiff/tiff.hash +++ b/bsp/buildroot/package/tiff/tiff.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 4d57a50907b510e3049a4bba0d7888930fdfc16ce49f1bf693e5b6247370d68c tiff-4.0.6.tar.gz +sha256 9f43a2cfb9589e5cecaa66e16bf87f814c945f22df7ba600d63aac4632c4f019 tiff-4.0.7.tar.gz diff --git a/bsp/buildroot/package/tiff/tiff.mk b/bsp/buildroot/package/tiff/tiff.mk index a53d7bb3..ffb1a425 100644 --- a/bsp/buildroot/package/tiff/tiff.mk +++ b/bsp/buildroot/package/tiff/tiff.mk @@ -4,7 +4,7 @@ # ################################################################################ -TIFF_VERSION = 4.0.6 +TIFF_VERSION = 4.0.7 TIFF_SITE = http://download.osgeo.org/libtiff TIFF_LICENSE = tiff license TIFF_LICENSE_FILES = COPYRIGHT diff --git a/bsp/buildroot/package/tinc/tinc.hash b/bsp/buildroot/package/tinc/tinc.hash index 0cccbbff..135a4f39 100644 --- a/bsp/buildroot/package/tinc/tinc.hash +++ b/bsp/buildroot/package/tinc/tinc.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 0b502699360f09ce2128a39cf02abca07bfc699fc02ce829b3a90cf5e1e8b344 tinc-1.0.28.tar.gz +sha256 abc17e25afc1b9e74423c78fef586b11d503cbbbe5e4a2ed323870f4a82faa73 tinc-1.0.30.tar.gz diff --git a/bsp/buildroot/package/tinc/tinc.mk b/bsp/buildroot/package/tinc/tinc.mk index fb15c34b..6d87cbf1 100644 --- a/bsp/buildroot/package/tinc/tinc.mk +++ b/bsp/buildroot/package/tinc/tinc.mk @@ -4,7 +4,7 @@ # ################################################################################ -TINC_VERSION = 1.0.28 +TINC_VERSION = 1.0.30 TINC_SITE = http://www.tinc-vpn.org/packages TINC_DEPENDENCIES = lzo openssl zlib TINC_LICENSE = GPLv2+ with OpenSSL exception diff --git a/bsp/buildroot/package/tinyalsa/0001-disable-doxygen-usage.patch b/bsp/buildroot/package/tinyalsa/0001-disable-doxygen-usage.patch new file mode 100644 index 00000000..9c867a8f --- /dev/null +++ b/bsp/buildroot/package/tinyalsa/0001-disable-doxygen-usage.patch @@ -0,0 +1,32 @@ +Disable doxygen usage + +In order to avoid a dependency on doxygen on the build machine, this +patch adjusts the main Makefile to not build and install the +documentation. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -13,13 +13,11 @@ + all: + $(MAKE) -C src + $(MAKE) -C utils +- $(MAKE) -C doxygen + + .PHONY: clean + clean: + $(MAKE) -C src clean + $(MAKE) -C utils clean +- $(MAKE) -C doxygen clean + + .PHONY: install + install: +@@ -27,5 +25,3 @@ + cp -Ru include/tinyalsa $(DESTDIR)$(INCDIR)/ + $(MAKE) -C src install + $(MAKE) -C utils install +- $(MAKE) -C doxygen install +- diff --git a/bsp/buildroot/package/tinyalsa/0001-tinypcminfo-make-function-pcm_get_format_name-static.patch b/bsp/buildroot/package/tinyalsa/0001-tinypcminfo-make-function-pcm_get_format_name-static.patch deleted file mode 100644 index 4c8d48fd..00000000 --- a/bsp/buildroot/package/tinyalsa/0001-tinypcminfo-make-function-pcm_get_format_name-static.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 10d82df8d920ceec4be9028a4939f96d6f407e81 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Wed, 26 Aug 2015 09:20:13 +0200 -Subject: [PATCH] tinypcminfo: make function pcm_get_format_name() static - -When building tinyalsa with gcc 5.x, the following warnings appear: - -tinypcminfo.c:97:52: warning: 'format_lookup' is static but used in inline function 'pcm_get_format_name' which is not static - return bit_index < ARRAY_SIZE(format_lookup) ? format_lookup[bit_index] : NULL; - ^ -tinypcminfo.c:97:35: warning: 'format_lookup' is static but used in inline function 'pcm_get_format_name' which is not static - return bit_index < ARRAY_SIZE(format_lookup) ? format_lookup[bit_index] : NULL; - -And the build fails with: - -tinypcminfo.o: In function `main': -tinypcminfo.c:(.text+0x2f0): undefined reference to `pcm_get_format_name' -collect2: error: ld returned 1 exit status - -To fix this, this patch marks the pcm_get_format_name() as static, -since it's anyway only used in tinypcminfo.c. - -Submitted upstream: https://github.com/tinyalsa/tinyalsa/pull/61 - -Signed-off-by: Thomas Petazzoni ---- - tinypcminfo.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tinypcminfo.c b/tinypcminfo.c -index b2d11bc..99eec34 100644 ---- a/tinypcminfo.c -+++ b/tinypcminfo.c -@@ -92,7 +92,7 @@ static const char *format_lookup[] = { - /* Returns a human readable name for the format associated with bit_index, - * NULL if bit_index is not known. - */ --inline const char *pcm_get_format_name(unsigned bit_index) -+static inline const char *pcm_get_format_name(unsigned bit_index) - { - return bit_index < ARRAY_SIZE(format_lookup) ? format_lookup[bit_index] : NULL; - } --- -2.5.0 - diff --git a/bsp/buildroot/package/tinyalsa/0002-asound.h-include-time.h-to-get-struct-timespec-proto.patch b/bsp/buildroot/package/tinyalsa/0002-asound.h-include-time.h-to-get-struct-timespec-proto.patch deleted file mode 100644 index 1b5d43ce..00000000 --- a/bsp/buildroot/package/tinyalsa/0002-asound.h-include-time.h-to-get-struct-timespec-proto.patch +++ /dev/null @@ -1,33 +0,0 @@ -From c8333f8c7a4e4b9549abeef7530b2cd20a18e537 Mon Sep 17 00:00:00 2001 -From: rofl0r -Date: Mon, 12 Oct 2015 12:57:09 +0100 -Subject: [PATCH] asound.h: include to get struct timespec prototype - -without including it, we get -In file included from mixer.c:44:0: -include/sound/asound.h:337:18: error: field 'trigger_tstamp' has incomplete type -include/sound/asound.h:338:18: error: field 'tstamp' has incomplete type -etc. - -Signed-off-by: Baruch Siach ---- -Patch status: upstream commit c8333f8c7a4e - - include/sound/asound.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/include/sound/asound.h b/include/sound/asound.h -index a041628ec28e..7c6de81673f5 100644 ---- a/include/sound/asound.h -+++ b/include/sound/asound.h -@@ -12,6 +12,7 @@ - #ifndef __SOUND_ASOUND_H - #define __SOUND_ASOUND_H - -+#include - #include - - #define SNDRV_PROTOCOL_VERSION(major, minor, subminor) (((major)<<16)|((minor)<<8)|(subminor)) --- -2.8.1 - diff --git a/bsp/buildroot/package/tinyalsa/tinyalsa.hash b/bsp/buildroot/package/tinyalsa/tinyalsa.hash index 5182b007..b6bea47e 100644 --- a/bsp/buildroot/package/tinyalsa/tinyalsa.hash +++ b/bsp/buildroot/package/tinyalsa/tinyalsa.hash @@ -1,2 +1,2 @@ # locally computed -sha256 a15abd57e74a2c41dbc57cac6fae39a28d2643e9aa48263399de37481b9647d3 tinyalsa-f2a7b6d3d81bd337a540d56704b4aaa7bdb046fe.tar.gz +sha256 93f4ca1e6345974167dc5577e8151a31fa2e6a628727a72d59e18db2289e7a1c tinyalsa-1.1.0.tar.gz diff --git a/bsp/buildroot/package/tinyalsa/tinyalsa.mk b/bsp/buildroot/package/tinyalsa/tinyalsa.mk index e470b47f..d44155f9 100644 --- a/bsp/buildroot/package/tinyalsa/tinyalsa.mk +++ b/bsp/buildroot/package/tinyalsa/tinyalsa.mk @@ -4,29 +4,30 @@ # ################################################################################ -TINYALSA_VERSION = f2a7b6d3d81bd337a540d56704b4aaa7bdb046fe +TINYALSA_VERSION = 1.1.0 TINYALSA_SITE = $(call github,tinyalsa,tinyalsa,$(TINYALSA_VERSION)) TINYALSA_LICENSE = BSD-3c +TINYALSA_LICENSE_FILES = NOTICE TINYALSA_INSTALL_STAGING = YES define TINYALSA_BUILD_CMDS - $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) endef define TINYALSA_INSTALL_STAGING_CMDS - $(INSTALL) -D -m 0755 $(@D)/libtinyalsa.so \ - $(STAGING_DIR)/usr/lib/libtinyalsa.so - $(INSTALL) -D -m 0644 $(@D)/include/tinyalsa/asoundlib.h \ - $(STAGING_DIR)/usr/include/tinyalsa/asoundlib.h + $(TARGET_MAKE_ENV) $(MAKE) \ + -C $(@D) \ + PREFIX="/usr" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + DESTDIR="$(STAGING_DIR)" install endef define TINYALSA_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0755 $(@D)/libtinyalsa.so \ - $(TARGET_DIR)/usr/lib/libtinyalsa.so - $(INSTALL) -D -m 0755 $(@D)/tinyplay $(TARGET_DIR)/usr/bin/tinyplay - $(INSTALL) -D -m 0755 $(@D)/tinycap $(TARGET_DIR)/usr/bin/tinycap - $(INSTALL) -D -m 0755 $(@D)/tinymix $(TARGET_DIR)/usr/bin/tinymix - $(INSTALL) -D -m 0755 $(@D)/tinypcminfo $(TARGET_DIR)/usr/bin/tinypcminfo + $(TARGET_MAKE_ENV) $(MAKE) \ + -C $(@D) \ + PREFIX="/usr" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + DESTDIR="$(TARGET_DIR)" install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/tinycbor/0001-Update-cjson-include-path.patch b/bsp/buildroot/package/tinycbor/0001-Update-cjson-include-path.patch new file mode 100644 index 00000000..5eea937d --- /dev/null +++ b/bsp/buildroot/package/tinycbor/0001-Update-cjson-include-path.patch @@ -0,0 +1,69 @@ +From 9aa79d8e9e38b31b34d9933a266c698e79808a79 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 13 Nov 2016 15:43:40 +0100 +Subject: [PATCH] Update cjson include path + +Since cjson-v1.0.0 (https://github.com/DaveGamble/cJSON/releases), +cJSON.h is installed into cjson/cJSON.h and library has been renamed +from cJSON to cjson + +Signed-off-by: Fabrice Fontaine +--- + Makefile | 4 ++-- + Makefile.configure | 4 ++-- + tools/json2cbor/json2cbor.c | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index acd52eb..905fbdf 100644 +--- a/Makefile ++++ b/Makefile +@@ -82,12 +82,12 @@ ifeq ($(open_memstream-pass),) + endif + endif + +-# json2cbor depends on an external library (cJSON) ++# json2cbor depends on an external library (cjson) + ifneq ($(cjson-pass)$(system-cjson-pass),) + JSON2CBOR_SOURCES = tools/json2cbor/json2cbor.c + INSTALL_TARGETS += $(bindir)/json2cbor + ifeq ($(system-cjson-pass),1) +- LDFLAGS_CJSON = -lcJSON ++ LDFLAGS_CJSON = -lcjson + else + JSON2CBOR_SOURCES += src/cjson/cJSON.c + json2cbor_CCFLAGS = -I$(SRCDIR)src/cjson +diff --git a/Makefile.configure b/Makefile.configure +index 28f4c92..424efb3 100644 +--- a/Makefile.configure ++++ b/Makefile.configure +@@ -10,11 +10,11 @@ PROGRAM-gc_sections = int main() {} + CCFLAGS-gc_sections = -Wl,--gc-sections + + PROGRAM-cjson = \#include \n +-PROGRAM-cjson += \#include \n ++PROGRAM-cjson += \#include \n + PROGRAM-cjson += int main() { return cJSON_False; } + CCFLAGS-cjson = -I$(dir $(MAKEFILE))src/cjson + PROGRAM-system-cjson = $(PROGRAM-cjson) +-CCFLAGS-system-cjson = -lcJSON ++CCFLAGS-system-cjson = -lcjson + + sink: + @echo >&2 Please run from the top-level Makefile. +diff --git a/tools/json2cbor/json2cbor.c b/tools/json2cbor/json2cbor.c +index 96d3ed1..e194299 100644 +--- a/tools/json2cbor/json2cbor.c ++++ b/tools/json2cbor/json2cbor.c +@@ -27,7 +27,7 @@ + #include "cbor.h" + #include "compilersupport_p.h" + +-#include ++#include + + #include + #include +-- +2.5.0 + diff --git a/bsp/buildroot/package/tinycbor/0002-Fix-static-compilation-of-json2cbor.patch b/bsp/buildroot/package/tinycbor/0002-Fix-static-compilation-of-json2cbor.patch new file mode 100644 index 00000000..dfea4ca6 --- /dev/null +++ b/bsp/buildroot/package/tinycbor/0002-Fix-static-compilation-of-json2cbor.patch @@ -0,0 +1,29 @@ +From 1be7da8d81bbd52d722ec60250567ea876f6f4b5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 3 Dec 2016 20:15:41 +0100 +Subject: [PATCH] Fix static compilation of json2cbor + +json2cbor depends on cjson so tools/json2cbor/json2cbor.o must before +-lcjson + +Signed-off-by: Fabrice Fontaine +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 905fbdf..7b5fefc 100644 +--- a/Makefile ++++ b/Makefile +@@ -115,7 +115,7 @@ bin/cbordump: $(CBORDUMP_SOURCES:.c=.o) lib/libtinycbor.a | bin + $(CC) -o $@ $(LDFLAGS) $^ $(LDLIBS) -lm + + bin/json2cbor: $(JSON2CBOR_SOURCES:.c=.o) lib/libtinycbor.a | bin +- $(CC) -o $@ $(LDFLAGS) $(LDFLAGS_CJSON) $^ $(LDLIBS) -lm ++ $(CC) -o $@ $(LDFLAGS) $^ $(LDFLAGS_CJSON) $(LDLIBS) -lm + + tinycbor.pc: tinycbor.pc.in + $(SED) > $@ < $< \ +-- +2.5.0 + diff --git a/bsp/buildroot/package/tinycbor/Config.in b/bsp/buildroot/package/tinycbor/Config.in index cf176e46..41f0b5fa 100644 --- a/bsp/buildroot/package/tinycbor/Config.in +++ b/bsp/buildroot/package/tinycbor/Config.in @@ -1,7 +1,5 @@ config BR2_PACKAGE_TINYCBOR bool "tinycbor" - # package uses fopencookie(), not available with this toolchain - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX help Concise Binary Object Representation (CBOR) Library diff --git a/bsp/buildroot/package/tinycbor/tinycbor.hash b/bsp/buildroot/package/tinycbor/tinycbor.hash index 8757047b..88300e8e 100644 --- a/bsp/buildroot/package/tinycbor/tinycbor.hash +++ b/bsp/buildroot/package/tinycbor/tinycbor.hash @@ -1,3 +1,2 @@ # Locally computed: -sha256 f70de1e6b7e3750abb4ceacf0059e47b47c769f113434de10293b33867ce54c2 tinycbor-v0.3.2.tar.gz -sha256 7d3aa839ae246e9e14fc73e67869d88c684802c1578fb75503f3fdde1482dcf6 ede7f1431ae06c9086f2a83a57bd7832d99280e3.patch +sha256 302ac9de66f1048725040ccc9a99e03c20529ac2b150ccf35cfd1e2dafa81c4b tinycbor-v0.4.tar.gz diff --git a/bsp/buildroot/package/tinycbor/tinycbor.mk b/bsp/buildroot/package/tinycbor/tinycbor.mk index 6af2eef4..65deacd2 100644 --- a/bsp/buildroot/package/tinycbor/tinycbor.mk +++ b/bsp/buildroot/package/tinycbor/tinycbor.mk @@ -4,17 +4,11 @@ # ################################################################################ -TINYCBOR_VERSION = v0.3.2 +TINYCBOR_VERSION = v0.4 TINYCBOR_SITE = $(call github,01org,tinycbor,$(TINYCBOR_VERSION)) TINYCBOR_LICENSE = MIT TINYCBOR_LICENSE_FILES = LICENSE -# This patch fixes the issue on unnamed union which are not supported by some -# targets like blackfin -# This patch is currently in dev branch and will be a part of v0.4 -TINYCBOR_PATCH = \ - https://github.com/01org/tinycbor/commit/ede7f1431ae06c9086f2a83a57bd7832d99280e3.patch - TINYCBOR_DEPENDENCIES = host-pkgconf TINYCBOR_INSTALL_STAGING = YES @@ -24,8 +18,10 @@ endif TINYCBOR_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) V=1 +# disabled parallel build because of build failures while +# producing the .config file define TINYCBOR_BUILD_CMDS - $(TARGET_MAKE_ENV) $(MAKE) $(TINYCBOR_MAKE_OPTS) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE1) $(TINYCBOR_MAKE_OPTS) -C $(@D) endef define TINYCBOR_INSTALL_STAGING_CMDS diff --git a/bsp/buildroot/package/tinydtls/Config.in b/bsp/buildroot/package/tinydtls/Config.in index 33b08feb..2f90eb24 100644 --- a/bsp/buildroot/package/tinydtls/Config.in +++ b/bsp/buildroot/package/tinydtls/Config.in @@ -10,4 +10,4 @@ config BR2_PACKAGE_TINYDTLS https://sourceforge.net/projects/tinydtls comment "tinydtls needs a toolchain w/ threads" - depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/tinyhttpd/tinyhttpd.mk b/bsp/buildroot/package/tinyhttpd/tinyhttpd.mk index 194249bd..058f6bd1 100644 --- a/bsp/buildroot/package/tinyhttpd/tinyhttpd.mk +++ b/bsp/buildroot/package/tinyhttpd/tinyhttpd.mk @@ -10,7 +10,7 @@ TINYHTTPD_LICENSE = GPL TINYHTTPD_LICENSE_FILES = README define TINYHTTPD_BUILD_CMDS - $(MAKE) -C $(@D) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" endef diff --git a/bsp/buildroot/package/tinymembench/0001-arm-fix-build-on-Thumb-only-architectures.patch b/bsp/buildroot/package/tinymembench/0001-arm-fix-build-on-Thumb-only-architectures.patch new file mode 100644 index 00000000..88559ec0 --- /dev/null +++ b/bsp/buildroot/package/tinymembench/0001-arm-fix-build-on-Thumb-only-architectures.patch @@ -0,0 +1,47 @@ +From 034a3552e9700c6d424bd706db106f5bce1f5a5e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 11 Nov 2016 21:49:39 +0100 +Subject: [PATCH] arm: fix build on Thumb-only architectures + +Building tinymembench for ARM Cortex-M currently fails, because the +arm-neon.S file contains ARM code that doesn't build on Thumb-only +architectures. To account for this and fix the build for Cortex-M, +this patch adjusts the compile time condition to also verify that the +architecture supports the ARM instruction set, by testing the +__ARM_ARCH_ISA_ARM compiler define. + +Signed-off-by: Thomas Petazzoni +--- + arm-neon.S | 2 +- + asm-opt.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arm-neon.S b/arm-neon.S +index 4db78ce..19c30ad 100644 +--- a/arm-neon.S ++++ b/arm-neon.S +@@ -21,7 +21,7 @@ + * DEALINGS IN THE SOFTWARE. + */ + +-#ifdef __arm__ ++#if defined(__arm__) && defined(__ARM_ARCH_ISA_ARM) + + .text + .fpu neon +diff --git a/asm-opt.c b/asm-opt.c +index 9da4596..eba1183 100644 +--- a/asm-opt.c ++++ b/asm-opt.c +@@ -202,7 +202,7 @@ bench_info *get_asm_framebuffer_benchmarks(void) + return empty; + } + +-#elif defined(__arm__) ++#elif defined(__arm__) && defined(__ARM_ARCH_ISA_ARM) + + #include "arm-neon.h" + +-- +2.7.4 + diff --git a/bsp/buildroot/package/tmux/0001-compat-don-t-re-define-program_invocation_short_name.patch b/bsp/buildroot/package/tmux/0001-compat-don-t-re-define-program_invocation_short_name.patch new file mode 100644 index 00000000..bddc2c72 --- /dev/null +++ b/bsp/buildroot/package/tmux/0001-compat-don-t-re-define-program_invocation_short_name.patch @@ -0,0 +1,42 @@ +From 9b18a98614a9f201b0883c2b15e7c7bde0aa0ff2 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 5 Feb 2017 17:12:00 +0100 +Subject: [PATCH] compat: don't re-define program_invocation_short_name + +program_invocation_short_name is defined in errno.h, and its definition +can differ between the various C libraries: glibc defines it as: + extern char *program_invocation_short_name; + +while uClibc defines it as: + extern const char *program_invocation_short_name; + +So there is not simple solution to know the prototype. + +But since it is defined in errno.h, there is no reason to try and define +it ourselves; let's just trust what the header provides. + +Signed-off-by: "Yann E. MORIN" +--- + compat/getprogname.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/compat/getprogname.c b/compat/getprogname.c +index 80a496d..ad619fc 100644 +--- a/compat/getprogname.c ++++ b/compat/getprogname.c +@@ -19,11 +19,10 @@ + #include "compat.h" + + #if defined(HAVE_PROGRAM_INVOCATION_SHORT_NAME) ++#include + const char * + getprogname(void) + { +- extern char *program_invocation_short_name; +- + return (program_invocation_short_name); + } + #elif defined(HAVE___PROGNAME) +-- +2.7.4 + diff --git a/bsp/buildroot/package/tmux/tmux.hash b/bsp/buildroot/package/tmux/tmux.hash index f3cbe744..9195a168 100644 --- a/bsp/buildroot/package/tmux/tmux.hash +++ b/bsp/buildroot/package/tmux/tmux.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 bc28541b64f99929fe8e3ae7a02291263f3c97730781201824c0f05d7c8e19e4 tmux-2.2.tar.gz +sha256 55313e132f0f42de7e020bf6323a1939ee02ab79c48634aa07475db41573852b tmux-2.3.tar.gz diff --git a/bsp/buildroot/package/tmux/tmux.mk b/bsp/buildroot/package/tmux/tmux.mk index 1e1b2b7c..f6dd1a9c 100644 --- a/bsp/buildroot/package/tmux/tmux.mk +++ b/bsp/buildroot/package/tmux/tmux.mk @@ -4,7 +4,7 @@ # ################################################################################ -TMUX_VERSION = 2.2 +TMUX_VERSION = 2.3 TMUX_SITE = https://github.com/tmux/tmux/releases/download/$(TMUX_VERSION) TMUX_LICENSE = ISC TMUX_LICENSE_FILES = README diff --git a/bsp/buildroot/package/tor/0001-openssl-libz.patch b/bsp/buildroot/package/tor/0001-openssl-libz.patch index 855b1c5d..93fb942a 100644 --- a/bsp/buildroot/package/tor/0001-openssl-libz.patch +++ b/bsp/buildroot/package/tor/0001-openssl-libz.patch @@ -3,7 +3,7 @@ and remove host paths when looking for openssl. [Vincent: - Adapt the patch to make it apply on the new version.] -[Bernd: rebased for tor-0.2.7.6] +[Bernd: rebased for tor-0.2.7.6, 0.2.8.10 & 0.2.9.9] Signed-off-by: Bernd Kuhls Signed-off-by: Vicente Olivert Riera @@ -11,7 +11,7 @@ Signed-off-by: Vicente Olivert Riera diff -uNr tor-0.2.7.6.org/configure.ac tor-0.2.7.6/configure.ac --- tor-0.2.7.6.org/configure.ac 2015-12-10 16:15:25.000000000 +0100 +++ tor-0.2.7.6/configure.ac 2016-01-31 20:21:34.850408145 +0100 -@@ -607,11 +607,11 @@ +@@ -612,11 +612,11 @@ fi ]) @@ -19,7 +19,7 @@ diff -uNr tor-0.2.7.6.org/configure.ac tor-0.2.7.6/configure.ac +TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto -lz $TOR_LIB_GDI], [#include ], [void RAND_add(const void *buf, int num, double entropy);], - [RAND_add((void*)0,0,0); exit(0);], [], + [RAND_add((void*)0,0,0);], [], - [/usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /opt/openssl]) + []) @@ -28,9 +28,9 @@ diff -uNr tor-0.2.7.6.org/configure.ac tor-0.2.7.6/configure.ac diff -uNr tor-0.2.7.6.org/src/or/include.am tor-0.2.7.6/src/or/include.am --- tor-0.2.7.6.org/src/or/include.am 2015-12-08 18:35:17.000000000 +0100 +++ tor-0.2.7.6/src/or/include.am 2016-01-31 20:22:09.322777527 +0100 -@@ -110,7 +110,7 @@ - src_or_tor_LDADD = src/or/libtor.a src/common/libor.a \ - src/common/libor-crypto.a $(LIBDONNA) \ +@@ -108,7 +108,7 @@ + src_or_tor_LDADD = src/or/libtor.a src/common/libor.a src/common/libor-ctime.a \ + src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ src/common/libor-event.a src/trunnel/libor-trunnel.a \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \ + @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ @@ -40,10 +40,10 @@ diff -uNr tor-0.2.7.6.org/src/or/include.am tor-0.2.7.6/src/or/include.am diff -uNr tor-0.2.7.6.org/src/test/include.am tor-0.2.7.6/src/test/include.am --- tor-0.2.7.6.org/src/test/include.am 2015-12-08 18:35:17.000000000 +0100 +++ tor-0.2.7.6/src/test/include.am 2016-01-31 20:25:59.673127854 +0100 -@@ -127,8 +127,8 @@ - src_test_test_LDADD = src/or/libtor-testing.a src/common/libor-testing.a \ - src/common/libor-crypto-testing.a $(LIBDONNA) src/common/libor.a \ - src/common/libor-event-testing.a src/trunnel/libor-trunnel-testing.a \ +@@ -177,8 +177,8 @@ + src/common/libor-ctime-testing.a \ + src/common/libor-event-testing.a \ + src/trunnel/libor-trunnel-testing.a \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ - @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ + @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ @@ -51,9 +51,9 @@ diff -uNr tor-0.2.7.6.org/src/test/include.am tor-0.2.7.6/src/test/include.am @TOR_SYSTEMD_LIBS@ src_test_test_slow_CPPFLAGS = $(src_test_test_CPPFLAGS) -@@ -146,8 +146,8 @@ - src_test_bench_LDADD = src/or/libtor.a src/common/libor.a \ - src/common/libor-crypto.a $(LIBDONNA) \ +@@ -200,8 +200,8 @@ + src/common/libor-ctime.a \ + src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ src/common/libor-event.a src/trunnel/libor-trunnel.a \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ - @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ @@ -62,21 +62,21 @@ diff -uNr tor-0.2.7.6.org/src/test/include.am tor-0.2.7.6/src/test/include.am @TOR_SYSTEMD_LIBS@ src_test_test_workqueue_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ \ -@@ -156,8 +156,8 @@ - src/common/libor-testing.a \ - src/common/libor-crypto-testing.a $(LIBDONNA) \ +@@ -211,8 +211,8 @@ + src/common/libor-ctime-testing.a \ + src/common/libor-crypto-testing.a $(LIBKECCAK_TINY) $(LIBDONNA) \ src/common/libor-event-testing.a \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ - @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ + @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ + @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ - noinst_HEADERS+= \ - src/test/fakechans.h \ -@@ -174,8 +174,8 @@ - src_test_test_ntor_cl_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ + src_test_test_timers_CPPFLAGS = $(src_test_test_CPPFLAGS) + src_test_test_timers_CFLAGS = $(src_test_test_CFLAGS) +@@ -245,8 +245,8 @@ src_test_test_ntor_cl_LDADD = src/or/libtor.a src/common/libor.a \ - src/common/libor-crypto.a $(LIBDONNA) \ + src/common/libor-ctime.a \ + src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \ - @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ + @TOR_LIB_MATH@ \ @@ -87,30 +87,30 @@ diff -uNr tor-0.2.7.6.org/src/test/include.am tor-0.2.7.6/src/test/include.am diff -uNr tor-0.2.7.6.org/src/tools/include.am tor-0.2.7.6/src/tools/include.am --- tor-0.2.7.6.org/src/tools/include.am 2015-11-13 14:33:26.000000000 +0100 +++ tor-0.2.7.6/src/tools/include.am 2016-01-31 20:27:29.954004495 +0100 -@@ -21,7 +21,7 @@ - src_tools_tor_gencert_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ - src_tools_tor_gencert_LDADD = src/common/libor.a src/common/libor-crypto.a \ +@@ -26,7 +26,7 @@ + src/common/libor-ctime.a \ + $(LIBKECCAK_TINY) \ $(LIBDONNA) \ -- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \ -+ @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ - @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ +- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ + @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ if COVERAGE_ENABLED -@@ -32,7 +32,7 @@ - src_tools_tor_cov_gencert_LDADD = src/common/libor-testing.a \ - src/common/libor-crypto-testing.a \ +@@ -39,7 +39,7 @@ + src/common/libor-ctime-testing.a \ + $(LIBKECCAK_TINY) \ $(LIBDONNA) \ -- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \ -+ @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ - @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ +- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ + @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ endif -@@ -40,7 +40,7 @@ - src_tools_tor_checkkey_LDFLAGS = @TOR_LDFLAGS_zlib@ @TOR_LDFLAGS_openssl@ - src_tools_tor_checkkey_LDADD = src/common/libor.a src/common/libor-crypto.a \ +@@ -50,7 +50,7 @@ + src/common/libor-crypto.a \ + $(LIBKECCAK_TINY) \ $(LIBDONNA) \ -- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \ -+ @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ - @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ +- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ + @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ EXTRA_DIST += src/tools/tor-fw-helper/README diff --git a/bsp/buildroot/package/tor/tor.hash b/bsp/buildroot/package/tor/tor.hash index a836476f..470fc482 100644 --- a/bsp/buildroot/package/tor/tor.hash +++ b/bsp/buildroot/package/tor/tor.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 493a8679f904503048114aca6467faef56861206bab8283d858f37141d95105d tor-0.2.7.6.tar.gz +sha256 33325d2b250fd047ba2ddc5d11c2190c4e2951f4b03ec48ebd8bf0666e990d43 tor-0.2.9.9.tar.gz diff --git a/bsp/buildroot/package/tor/tor.mk b/bsp/buildroot/package/tor/tor.mk index 6a622cf0..bb0fbb16 100644 --- a/bsp/buildroot/package/tor/tor.mk +++ b/bsp/buildroot/package/tor/tor.mk @@ -4,7 +4,7 @@ # ################################################################################ -TOR_VERSION = 0.2.7.6 +TOR_VERSION = 0.2.9.9 TOR_SITE = https://dist.torproject.org TOR_LICENSE = BSD-3c TOR_LICENSE_FILES = LICENSE @@ -26,6 +26,10 @@ TOR_CONF_OPTS += \ --enable-static-zlib endif +ifeq ($(BR2_PACKAGE_LIBCAP),y) +TOR_DEPENDENCIES += libcap +endif + ifeq ($(BR2_arm)$(BR2_armeb)$(BR2_i386)$(BR2_x86_64)$(BR2_PACKAGE_LIBSECCOMP),yy) TOR_CONF_OPTS += --enable-seccomp TOR_DEPENDENCIES += libseccomp diff --git a/bsp/buildroot/package/torsmo/Config.in b/bsp/buildroot/package/torsmo/Config.in deleted file mode 100644 index 5c18ac6f..00000000 --- a/bsp/buildroot/package/torsmo/Config.in +++ /dev/null @@ -1,11 +0,0 @@ -config BR2_PACKAGE_TORSMO - bool "torsmo" - depends on BR2_DEPRECATED_SINCE_2015_11 - depends on BR2_PACKAGE_XORG7 - depends on BR2_USE_MMU # fork() - select BR2_PACKAGE_XLIB_LIBX11 - select BR2_PACKAGE_XLIB_LIBXEXT - help - Torsmo is a system monitor that sits in the corner of your desktop. - - http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/Torsmo diff --git a/bsp/buildroot/package/torsmo/torsmo.hash b/bsp/buildroot/package/torsmo/torsmo.hash deleted file mode 100644 index 8bbf9dc8..00000000 --- a/bsp/buildroot/package/torsmo/torsmo.hash +++ /dev/null @@ -1,2 +0,0 @@ -# Locally calculated -sha256 6a6bc82e71c841ba9359f0ffe370e57ef7b04b49a448252bb0c1c28fc10e964c torsmo-0.18.tar.gz diff --git a/bsp/buildroot/package/torsmo/torsmo.mk b/bsp/buildroot/package/torsmo/torsmo.mk deleted file mode 100644 index 96a79760..00000000 --- a/bsp/buildroot/package/torsmo/torsmo.mk +++ /dev/null @@ -1,18 +0,0 @@ -################################################################################ -# -# torsmo -# -################################################################################ - -TORSMO_VERSION = 0.18 -TORSMO_SITE = http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/Torsmo -TORSMO_LICENSE = BSD-3c -TORSMO_LICENSE_FILES = COPYING - -# help2man doesn't work when cross compiling -TORSMO_CONF_ENV = ac_cv_path_HELP2MAN='' -TORSMO_CONF_OPTS = --x-includes="-I$(STAGING_DIR)/usr/include/X11" --x-libraries="-I$(STAGING_DIR)/usr/lib" --with-x - -TORSMO_DEPENDENCIES = xlib_libX11 xlib_libXext - -$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/tpm-tools/Config.in b/bsp/buildroot/package/tpm-tools/Config.in index dd59aaaf..83b65f3a 100644 --- a/bsp/buildroot/package/tpm-tools/Config.in +++ b/bsp/buildroot/package/tpm-tools/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_TPM_TOOLS select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE depends on BR2_TOOLCHAIN_HAS_THREADS # trousers depends on !BR2_STATIC_LIBS # trousers + depends on !BR2_arc # trousers help Tools to manage and diagnose a TPM @@ -12,3 +13,4 @@ config BR2_PACKAGE_TPM_TOOLS comment "tpm-tools needs a toolchain w/ threads, dynamic library" depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on !BR2_arc diff --git a/bsp/buildroot/package/tpm-tools/tpm-tools.mk b/bsp/buildroot/package/tpm-tools/tpm-tools.mk index 72afc443..c90edbb8 100644 --- a/bsp/buildroot/package/tpm-tools/tpm-tools.mk +++ b/bsp/buildroot/package/tpm-tools/tpm-tools.mk @@ -5,7 +5,6 @@ ################################################################################ TPM_TOOLS_VERSION = 1.3.8 -TPM_TOOLS_SOURCE = tpm-tools-$(TPM_TOOLS_VERSION).tar.gz TPM_TOOLS_SITE = http://downloads.sourceforge.net/project/trousers/tpm-tools/$(TPM_TOOLS_VERSION) TPM_TOOLS_STRIP_COMPONENTS = 2 TPM_TOOLS_LICENSE = Common Public License Version 1.0 diff --git a/bsp/buildroot/package/transmission/0005-uClibc-ng-since-1.0.18-has-sys-quota.h-synced-with-G.patch b/bsp/buildroot/package/transmission/0005-uClibc-ng-since-1.0.18-has-sys-quota.h-synced-with-G.patch new file mode 100644 index 00000000..91a962a6 --- /dev/null +++ b/bsp/buildroot/package/transmission/0005-uClibc-ng-since-1.0.18-has-sys-quota.h-synced-with-G.patch @@ -0,0 +1,29 @@ +From 8682fe1bad44acc06154003ca9c9163b917bf4e3 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Thu, 29 Sep 2016 19:52:49 +0200 +Subject: [PATCH] uClibc-ng since 1.0.18 has sys/quota.h synced with GNU libc + +Signed-off-by: Waldemar Brodkorb + +Pull Request: +https://github.com/transmission/transmission/pull/42 +--- + libtransmission/platform-quota.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libtransmission/platform-quota.c b/libtransmission/platform-quota.c +index 58c518a..57377ef 100644 +--- a/libtransmission/platform-quota.c ++++ b/libtransmission/platform-quota.c +@@ -284,7 +284,7 @@ getquota (const char * device) + spaceused = (int64_t) dq.dqb_curblocks >> 1; + #elif defined(__APPLE__) + spaceused = (int64_t) dq.dqb_curbytes; +-#elif defined(__UCLIBC__) ++#elif defined(__UCLIBC__) && (__UCLIBC_MAJOR__ == 0 || (__UCLIBC_MAJOR__ == 1 && __UCLIBC_SUBLEVEL__ <= 17)) + spaceused = (int64_t) btodb(dq.dqb_curblocks); + #elif defined(__sun) || (defined(_LINUX_QUOTA_VERSION) && _LINUX_QUOTA_VERSION < 2) + spaceused = (int64_t) dq.dqb_curblocks >> 1; +-- +2.1.4 + diff --git a/bsp/buildroot/package/transmission/0006-libsystemd.patch b/bsp/buildroot/package/transmission/0006-libsystemd.patch new file mode 100644 index 00000000..b32aff21 --- /dev/null +++ b/bsp/buildroot/package/transmission/0006-libsystemd.patch @@ -0,0 +1,133 @@ +From 0862099d0bf5a3ec8b2e9d538458d612897741a2 Mon Sep 17 00:00:00 2001 +From: Mike Gelfand +Date: Sat, 23 Apr 2016 16:13:25 +0000 +Subject: [PATCH] #5921: Use libsystemd instead of libsystemd-daemon (original + patches by Sandro Tosi and Mike Gilbert) + +In systemd v209, released over two years ago, the various libsystemd-* +libraries (libsystemd-journal.so, libsystemd-login.so, libsystem-daemon.so, +libsystemd-id128.so) were merged into a single libsystemd.so library to +reduce code duplication and avoid cyclic dependencies. + +Downloaded from upstream commit: +https://github.com/transmission/transmission/commit/0862099d0bf5a3ec8b2e9d538458d612897741a2 + +Signed-off-by: Bernd Kuhls +--- + CMakeLists.txt | 4 ++-- + configure.ac | 16 ++++++++-------- + daemon/CMakeLists.txt | 8 ++++---- + daemon/Makefile.am | 4 ++-- + daemon/daemon.c | 2 +- + 5 files changed, 17 insertions(+), 17 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8b324dc..356fc2f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -398,9 +398,9 @@ endif() + if(WITH_SYSTEMD) + tr_get_required_flag(WITH_SYSTEMD SYSTEMD_IS_REQUIRED) + +- pkg_check_modules(SYSTEMD_DAEMON ${SYSTEMD_IS_REQUIRED} libsystemd-daemon) ++ pkg_check_modules(SYSTEMD ${SYSTEMD_IS_REQUIRED} libsystemd) + +- tr_fixup_auto_option(WITH_SYSTEMD SYSTEMD_DAEMON_FOUND SYSTEMD_IS_REQUIRED) ++ tr_fixup_auto_option(WITH_SYSTEMD SYSTEMD_FOUND SYSTEMD_IS_REQUIRED) + endif() + + include_directories(${CMAKE_BINARY_DIR}) +diff --git a/configure.ac b/configure.ac +index 92e4372..b64f2a3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -240,15 +240,15 @@ dnl + dnl file monitoring for the daemon + + # Check whether to enable systemd startup notification. +-# This requires libsystemd-daemon. +-AC_ARG_WITH([systemd-daemon], AS_HELP_STRING([--with-systemd-daemon], ++# This requires libsystemd. ++AC_ARG_WITH([systemd], AS_HELP_STRING([--with-systemd], + [Add support for systemd startup notification (default is autodetected)]), +- [USE_SYSTEMD_DAEMON=$withval], [USE_SYSTEMD_DAEMON=auto]) +-AS_IF([test "x$USE_SYSTEMD_DAEMON" != "xno"], [ +- PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon], +- [AC_DEFINE(USE_SYSTEMD_DAEMON,1,[Use systemd startup notification])], +- [AS_IF([test "x$USE_SYSTEMD_DAEMON" = "xyes"], +- [AC_MSG_ERROR([systemd startup notification support requested, but libsystemd-daemon not found.])] ++ [USE_SYSTEMD=$withval], [USE_SYSTEMD=auto]) ++AS_IF([test "x$USE_SYSTEMD" != "xno"], [ ++ PKG_CHECK_MODULES([SYSTEMD], [libsystemd], ++ [AC_DEFINE(USE_SYSTEMD,1,[Use systemd startup notification])], ++ [AS_IF([test "x$USE_SYSTEMD" = "xyes"], ++ [AC_MSG_ERROR([systemd startup notification support requested, but libsystemd not found.])] + )] + ) + ]) +diff --git a/daemon/CMakeLists.txt b/daemon/CMakeLists.txt +index e8f8b34..8ec3b95 100644 +--- a/daemon/CMakeLists.txt ++++ b/daemon/CMakeLists.txt +@@ -1,7 +1,7 @@ + project(trdaemon) + + if(WITH_SYSTEMD) +- add_definitions(-DUSE_SYSTEMD_DAEMON) ++ add_definitions(-DUSE_SYSTEMD) + endif() + + include_directories( +@@ -37,14 +37,14 @@ add_executable(${TR_NAME}-daemon + ${${PROJECT_NAME}_WIN32_RC_FILE}) + + set_target_properties(${TR_NAME}-daemon PROPERTIES +- COMPILE_FLAGS "${SYSTEMD_DAEMON_CFLAGS}" +- LINK_FLAGS "${SYSTEMD_DAEMON_LDFLAGS}" ++ COMPILE_FLAGS "${SYSTEMD_CFLAGS}" ++ LINK_FLAGS "${SYSTEMD_LDFLAGS}" + ) + + target_link_libraries(${TR_NAME}-daemon + ${TR_NAME} + ${EVENT2_LIBRARIES} +- ${SYSTEMD_DAEMON_LIBRARIES} ++ ${SYSTEMD_LIBRARIES} + ) + + tr_win32_app_info(${PROJECT_NAME}_remote_WIN32_RC_FILE +diff --git a/daemon/Makefile.am b/daemon/Makefile.am +index 677f765..34d7076 100644 +--- a/daemon/Makefile.am ++++ b/daemon/Makefile.am +@@ -3,7 +3,7 @@ AM_CPPFLAGS = -I@top_srcdir@ -DEMBEDDED + AM_CFLAGS = \ + @LIBEVENT_CFLAGS@ \ + @LIBCURL_CFLAGS@ \ +- @SYSTEMD_DAEMON_CFLAGS@ \ ++ @SYSTEMD_CFLAGS@ \ + @ZLIB_CFLAGS@ \ + @PTHREAD_CFLAGS@ + +@@ -29,7 +29,7 @@ LDADD = \ + @LIBCURL_LIBS@ \ + @CRYPTO_LIBS@ \ + @INTLLIBS@ \ +- @SYSTEMD_DAEMON_LIBS@ \ ++ @SYSTEMD_LIBS@ \ + @ZLIB_LIBS@ \ + @PTHREAD_LIBS@ \ + ${LIBM} +diff --git a/daemon/daemon.c b/daemon/daemon.c +index 40ac5a6..62ac715 100644 +--- a/daemon/daemon.c ++++ b/daemon/daemon.c +@@ -33,7 +33,7 @@ + #include + #include + +-#ifdef USE_SYSTEMD_DAEMON ++#ifdef USE_SYSTEMD + #include + #else + static void sd_notify (int status UNUSED, const char * str UNUSED) { } diff --git a/bsp/buildroot/package/transmission/transmission.mk b/bsp/buildroot/package/transmission/transmission.mk index e0cfc2d3..923ba409 100644 --- a/bsp/buildroot/package/transmission/transmission.mk +++ b/bsp/buildroot/package/transmission/transmission.mk @@ -5,7 +5,7 @@ ################################################################################ TRANSMISSION_VERSION = 2.92 -TRANSMISSION_SITE = http://download.transmissionbt.com/files +TRANSMISSION_SITE = https://github.com/transmission/transmission-releases/raw/master TRANSMISSION_SOURCE = transmission-$(TRANSMISSION_VERSION).tar.xz TRANSMISSION_DEPENDENCIES = \ host-pkgconf \ diff --git a/bsp/buildroot/package/tremor/tremor.mk b/bsp/buildroot/package/tremor/tremor.mk index 97b0ce36..2a791b67 100644 --- a/bsp/buildroot/package/tremor/tremor.mk +++ b/bsp/buildroot/package/tremor/tremor.mk @@ -16,9 +16,17 @@ TREMOR_DEPENDENCIES = libogg # tremor has ARM assembly code that cannot be compiled in Thumb2 mode, # so we must force the traditional ARM mode. +# However, some ARM architectures like ARNv7-M only supports Thumb +# instructions, but the tremor build configuration enables ARM assembly +# code unconditionally for all arm triplets by defining _ARM_ASSEM_. +# We are overriding this by undefining this macro for the ARM +# architectures not supporting ARM instructions. ifeq ($(BR2_arm),y) -TREMOR_CONF_ENV = \ - CFLAGS="$(TARGET_CFLAGS) -marm" +ifeq ($(BR2_ARM_CPU_HAS_ARM),y) +TREMOR_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -marm" +else +TREMOR_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -U_ARM_ASSEM_" +endif endif $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/trinity/Config.in b/bsp/buildroot/package/trinity/Config.in index 5c4c7c80..0ce1f9aa 100644 --- a/bsp/buildroot/package/trinity/Config.in +++ b/bsp/buildroot/package/trinity/Config.in @@ -1,9 +1,22 @@ -config BR2_PACKAGE_TRINITY - bool "trinity" +config BR2_PACKAGE_TRINITY_ARCH_SUPPORTS + bool + default y + depends on BR2_USE_MMU # fork() depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ BR2_mips || BR2_mipsel || BR2_powerpc || BR2_powerpc64 || \ BR2_powerpc64le || BR2_sparc || BR2_x86_64 + +config BR2_PACKAGE_TRINITY + bool "trinity" + depends on BR2_PACKAGE_TRINITY_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_MUSL # FTW_ACTIONRETVAL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # IPV6_UNICAST_IF help A Linux System call fuzz tester http://codemonkey.org.uk/projects/trinity/ + +comment "trinity needs a uClibc or glibc toolchain w/ headers >= 3.4" + depends on BR2_PACKAGE_TRINITY_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_MUSL || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 diff --git a/bsp/buildroot/package/trousers/Config.in b/bsp/buildroot/package/trousers/Config.in index 6ab74bf9..de3b9519 100644 --- a/bsp/buildroot/package/trousers/Config.in +++ b/bsp/buildroot/package/trousers/Config.in @@ -5,6 +5,8 @@ config BR2_PACKAGE_TROUSERS depends on BR2_TOOLCHAIN_HAS_THREADS # doesn't build properly in static only configurations depends on !BR2_STATIC_LIBS + # ARC toolchain issue + depends on !BR2_arc help The open-source TCG Software Stack (TSS). @@ -16,3 +18,4 @@ config BR2_PACKAGE_TROUSERS comment "trousers needs a toolchain w/ threads, dynamic library" depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on !BR2_arc diff --git a/bsp/buildroot/package/trousers/trousers.mk b/bsp/buildroot/package/trousers/trousers.mk index 3d9e0bad..41129eb0 100644 --- a/bsp/buildroot/package/trousers/trousers.mk +++ b/bsp/buildroot/package/trousers/trousers.mk @@ -5,7 +5,6 @@ ############################################################## TROUSERS_VERSION = 0.3.13 -TROUSERS_SOURCE = trousers-$(TROUSERS_VERSION).tar.gz TROUSERS_SITE = http://downloads.sourceforge.net/project/trousers/trousers/$(TROUSERS_VERSION) TROUSERS_LICENSE = BSD-3c TROUSERS_LICENSE_FILES = LICENSE @@ -18,6 +17,10 @@ ifeq ($(BR2_PACKAGE_LIBICONV),y) TROUSERS_DEPENDENCIES += libiconv endif +ifeq ($(BR2_arc770d)$(BR2_arc750d),y) +TROUSERS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mno-compact-casesi" +endif + # The TrouSerS build system attempts to create the tss user and group # on the host system. Disable the user checking feature as a # workaround. diff --git a/bsp/buildroot/package/ts4900-fpga/Config.in b/bsp/buildroot/package/ts4900-fpga/Config.in new file mode 100644 index 00000000..7910631b --- /dev/null +++ b/bsp/buildroot/package/ts4900-fpga/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_TS4900_FPGA + bool "ts4900-fpga" + depends on BR2_arm + help + TS-4900's FPGA implements clocks, UART MUX, and GPIOs. One of these + GPIOs is used to enable the wifi module. + + It is loaded by U-Boot during the boot sequence, the default U-boot + script expects to find it in the /boot folder. + + http://wiki.embeddedarm.com/wiki/TS-4900#FPGA_Changelog + diff --git a/bsp/buildroot/package/ts4900-fpga/ts4900-fpga.hash b/bsp/buildroot/package/ts4900-fpga/ts4900-fpga.hash new file mode 100644 index 00000000..2147aeb3 --- /dev/null +++ b/bsp/buildroot/package/ts4900-fpga/ts4900-fpga.hash @@ -0,0 +1,5 @@ +# From ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4900-linux/fpga/ts4900-fpga-20150930.bin.md5 +md5 bf93c03ef914cf008287c8cd60781cc8 ts4900-fpga-20150930.bin + +# Locally calculated +sha256 242ac6a90bea9a95c937ea8952cdc9b02f543cea24a0359bed66a408a6dd8bf9 ts4900-fpga-20150930.bin diff --git a/bsp/buildroot/package/ts4900-fpga/ts4900-fpga.mk b/bsp/buildroot/package/ts4900-fpga/ts4900-fpga.mk new file mode 100644 index 00000000..ed951b8c --- /dev/null +++ b/bsp/buildroot/package/ts4900-fpga/ts4900-fpga.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ts4900-fpga +# +################################################################################ + +TS4900_FPGA_VERSION = 20150930 +TS4900_FPGA_SOURCE = ts4900-fpga-$(TS4900_FPGA_VERSION).bin +TS4900_FPGA_SITE = ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4900-linux/fpga +# No license file provided, Yocto recipe from the vendor claims MIT. +# https://github.com/embeddedarm/meta-ts/blob/f31860f1204b64f765a5380d3b93a2cf18234f90/recipes-extras/ts4900-fpga/ts4900-fpga.bb#L6 + +define TS4900_FPGA_EXTRACT_CMDS + cp $(DL_DIR)/$(TS4900_FPGA_SOURCE) $(@D) +endef + +define TS4900_FPGA_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/$(TS4900_FPGA_SOURCE) $(TARGET_DIR)/boot/ts4900-fpga.bin +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/tslib/0001-enable_raw_module.patch b/bsp/buildroot/package/tslib/0001-enable_raw_module.patch deleted file mode 100644 index cb89338c..00000000 --- a/bsp/buildroot/package/tslib/0001-enable_raw_module.patch +++ /dev/null @@ -1,14 +0,0 @@ -Enable raw module by default - -Signed-off-by: Daniel Nyström - -diff -Naur tslib-e000d35a.orig/etc/ts.conf tslib-e000d35a/etc/ts.conf ---- tslib-e000d35a.orig/etc/ts.conf 2010-12-21 18:54:45.000000000 +0100 -+++ tslib-e000d35a/etc/ts.conf 2010-12-21 18:55:03.000000000 +0100 -@@ -1,5 +1,5 @@ - # Uncomment if you wish to use the linux input layer event interface --# module_raw input -+module_raw input - - # Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d - # module_raw collie diff --git a/bsp/buildroot/package/tslib/0002-add_finddef_and_inputattach_utils.patch b/bsp/buildroot/package/tslib/0002-add_finddef_and_inputattach_utils.patch deleted file mode 100644 index dcc6ec75..00000000 --- a/bsp/buildroot/package/tslib/0002-add_finddef_and_inputattach_utils.patch +++ /dev/null @@ -1,718 +0,0 @@ -diff -Naur tslib-org/tests/Makefile.am tslib-1.0/tests/Makefile.am ---- tslib-org/tests/Makefile.am 2006-08-25 00:02:55.000000000 +0300 -+++ tslib-1.0/tests/Makefile.am 2007-05-07 17:39:54.000000000 +0300 -@@ -12,7 +12,7 @@ - AM_CFLAGS = $(DEBUGFLAGS) - INCLUDES = -I$(top_srcdir)/src - --bin_PROGRAMS = ts_test ts_calibrate ts_print ts_print_raw ts_harvest -+bin_PROGRAMS = ts_test ts_calibrate ts_print ts_print_raw ts_harvest ts_finddev inputattach - - ts_test_SOURCES = ts_test.c fbutils.c fbutils.h font_8x8.c font_8x16.c font.h - ts_test_LDADD = $(top_builddir)/src/libts.la -@@ -27,4 +27,10 @@ - ts_calibrate_LDADD = $(top_builddir)/src/libts.la - - ts_harvest_SOURCES = ts_harvest.c fbutils.c fbutils.h testutils.c testutils.h font_8x8.c font_8x16.c font.h --ts_harvest_LDADD = $(top_builddir)/src/libts.la -+ts_harvest_LDADD = $(top_builddir)/src/libts.la -+ -+ts_finddev_SOURCES = ts_finddev.c -+ts_finddev_LDADD = $(top_builddir)/src/libts.la -+ -+inputattach_SOURCES = inputattach.c -+inputattach_LDADD = -diff -Naur tslib-org/tests/inputattach.c tslib-1.0/tests/inputattach.c ---- tslib-org/tests/inputattach.c 1970-01-01 02:00:00.000000000 +0200 -+++ tslib-1.0/tests/inputattach.c 2007-05-07 17:36:37.000000000 +0300 -@@ -0,0 +1,611 @@ -+/* -+ * $Id: inputattach.c,v 1.24 2006/02/08 12:19:31 vojtech Exp $ -+ * -+ * Copyright (c) 1999-2000 Vojtech Pavlik -+ * -+ * Sponsored by SuSE -+ * -+ * Twiddler support Copyright (c) 2001 Arndt Schoenewald -+ * Sponsored by Quelltext AG (http://www.quelltext-ag.de), Dortmund, Germany -+ */ -+ -+/* -+ * Input line discipline attach program -+ */ -+ -+/* -+ * 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 -+ * -+ * Should you need to contact me, the author, you can do so either by -+ * e-mail - mail your message to , or by paper mail: -+ * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic -+ */ -+ -+/* softa note: -+cvs version is here: -+http://cvs.sourceforge.net/viewcvs.py/ *checkout* /linuxconsole/ruby/utils/inputattach.c -+*/ -+ -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+// softa patch! -+/* -+ * Serio types -+ */ -+#ifndef SERIO_UNKNOWN -+ #define SERIO_UNKNOWN 0x00 -+#endif -+#ifndef SERIO_MSC -+ #define SERIO_MSC 0x01 -+#endif -+#ifndef SERIO_SUN -+ #define SERIO_SUN 0x02 -+#endif -+#ifndef SERIO_MS -+ #define SERIO_MS 0x03 -+#endif -+#ifndef SERIO_MP -+ #define SERIO_MP 0x04 -+#endif -+#ifndef SERIO_MZ -+ #define SERIO_MZ 0x05 -+#endif -+#ifndef SERIO_MZP -+ #define SERIO_MZP 0x06 -+#endif -+#ifndef SERIO_MZPP -+ #define SERIO_MZPP 0x07 -+#endif -+#ifndef SERIO_VSXXXAA -+ #define SERIO_VSXXXAA 0x08 -+#endif -+#ifndef SERIO_SUNKBD -+ #define SERIO_SUNKBD 0x10 -+#endif -+#ifndef SERIO_WARRIOR -+ #define SERIO_WARRIOR 0x18 -+#endif -+#ifndef SERIO_SPACEORB -+ #define SERIO_SPACEORB 0x19 -+#endif -+#ifndef SERIO_MAGELLAN -+ #define SERIO_MAGELLAN 0x1a -+#endif -+#ifndef SERIO_SPACEBALL -+ #define SERIO_SPACEBALL 0x1b -+#endif -+#ifndef SERIO_GUNZE -+ #define SERIO_GUNZE 0x1c -+#endif -+#ifndef SERIO_IFORCE -+ #define SERIO_IFORCE 0x1d -+#endif -+#ifndef SERIO_STINGER -+ #define SERIO_STINGER 0x1e -+#endif -+#ifndef SERIO_NEWTON -+ #define SERIO_NEWTON 0x1f -+#endif -+#ifndef SERIO_STOWAWAY -+ #define SERIO_STOWAWAY 0x20 -+#endif -+#ifndef SERIO_H3600 -+ #define SERIO_H3600 0x21 -+#endif -+#ifndef SERIO_PS2SER -+ #define SERIO_PS2SER 0x22 -+#endif -+#ifndef SERIO_TWIDKBD -+ #define SERIO_TWIDKBD 0x23 -+#endif -+#ifndef SERIO_TWIDJOY -+ #define SERIO_TWIDJOY 0x24 -+#endif -+#ifndef SERIO_HIL -+ #define SERIO_HIL 0x25 -+#endif -+#ifndef SERIO_SNES232 -+ #define SERIO_SNES232 0x26 -+#endif -+#ifndef SERIO_SEMTECH -+ #define SERIO_SEMTECH 0x27 -+#endif -+#ifndef SERIO_LKKBD -+ #define SERIO_LKKBD 0x28 -+#endif -+#ifndef SERIO_ELO -+ #define SERIO_ELO 0x29 -+#endif -+#ifndef SERIO_MICROTOUCH -+ #define SERIO_MICROTOUCH 0x30 -+#endif -+#ifndef SERIO_PENMOUNT -+ #define SERIO_PENMOUNT 0x31 -+#endif -+#ifndef SERIO_TOUCHRIGHT -+ #define SERIO_TOUCHRIGHT 0x32 -+#endif -+#ifndef SERIO_TOUCHWIN -+ #define SERIO_TOUCHWIN 0x33 -+#endif -+// end softa patch! -+ -+int readchar(int fd, unsigned char *c, int timeout) -+{ -+ struct timeval tv; -+ fd_set set; -+ -+ tv.tv_sec = 0; -+ tv.tv_usec = timeout * 1000; -+ -+ FD_ZERO(&set); -+ FD_SET(fd, &set); -+ -+ if (!select(fd+1, &set, NULL, NULL, &tv)) return -1; -+ if (read(fd, c, 1) != 1) return -1; -+ -+ return 0; -+} -+ -+ -+ -+void setline(int fd, int flags, int speed) -+{ -+ struct termios t; -+ -+ tcgetattr(fd, &t); -+ -+ t.c_cflag = flags | CREAD | HUPCL | CLOCAL; -+ t.c_iflag = IGNBRK | IGNPAR; -+ t.c_oflag = 0; -+ t.c_lflag = 0; -+ t.c_cc[VMIN ] = 1; -+ t.c_cc[VTIME] = 0; -+ -+ cfsetispeed(&t, speed); -+ cfsetospeed(&t, speed); -+ -+ tcsetattr(fd, TCSANOW, &t); -+} -+ -+int logitech_command(int fd, char *c) -+{ -+ int i; -+ unsigned char d; -+ for (i = 0; c[i]; i++) { -+ write(fd, c + i, 1); -+ if (readchar(fd, &d, 1000)) -+ return -1; -+ if (c[i] != d) -+ return -1; -+ } -+ return 0; -+} -+ -+int magellan_init(int fd, long *id, long *extra) -+{ -+ write(fd, "m3\rpBB\rz\r", 9); -+ return 0; -+} -+ -+int warrior_init(int fd, long *id, long *extra) -+{ -+ if (logitech_command(fd, "*S")) return -1; -+ setline(fd, CS8, B4800); -+ return 0; -+} -+ -+int spaceball_waitchar(int fd, unsigned char c, unsigned char *d, int timeout) -+{ -+ unsigned char b = 0; -+ -+ while (!readchar(fd, &b, timeout)) { -+ if (b == 0x0a) continue; -+ *d++ = b; -+ if (b == c) break; -+ } -+ -+ *d = 0; -+ -+ return -(b != c); -+} -+ -+int spaceball_waitcmd(int fd, char c, char *d) -+{ -+ int i; -+ -+ for (i = 0; i < 8; i++) { -+ if (spaceball_waitchar(fd, 0x0d, d, 1000)) -+ return -1; -+ if (d[0] == c) -+ return 0; -+ } -+ -+ return -1; -+} -+ -+int spaceball_cmd(int fd, char *c, char *d) -+{ -+ int i; -+ -+ for (i = 0; c[i]; i++) -+ write(fd, c + i, 1); -+ write(fd, "\r", 1); -+ -+ i = spaceball_waitcmd(fd, toupper(c[0]), d); -+ -+ return i; -+} -+ -+#define SPACEBALL_1003 1 -+#define SPACEBALL_2003B 3 -+#define SPACEBALL_2003C 4 -+#define SPACEBALL_3003C 7 -+#define SPACEBALL_4000FLX 8 -+#define SPACEBALL_4000FLX_L 9 -+ -+int spaceball_init(int fd, long *id, long *extra) -+{ -+ char r[64]; -+ -+ if (spaceball_waitchar(fd, 0x11, r, 4000) || -+ spaceball_waitchar(fd, 0x0d, r, 1000)) -+ return -1; -+ -+ if (spaceball_waitcmd(fd, '@', r)) -+ return -1; -+ -+ if (strncmp("@1 Spaceball alive", r, 18)) -+ return -1; -+ -+ if (spaceball_waitcmd(fd, '@', r)) -+ return -1; -+ -+ if (spaceball_cmd(fd, "hm", r)) -+ return -1; -+ -+ if (!strncmp("Hm2003B", r, 7)) -+ *id = SPACEBALL_2003B; -+ if (!strncmp("Hm2003C", r, 7)) -+ *id = SPACEBALL_2003C; -+ if (!strncmp("Hm3003C", r, 7)) -+ *id = SPACEBALL_3003C; -+ -+ if (!strncmp("HvFirmware", r, 10)) { -+ -+ if (spaceball_cmd(fd, "\"", r)) -+ return -1; -+ -+ if (strncmp("\"1 Spaceball 4000 FLX", r, 21)) -+ return -1; -+ -+ if (spaceball_waitcmd(fd, '"', r)) -+ return -1; -+ -+ if (strstr(r, " L ")) -+ *id = SPACEBALL_4000FLX_L; -+ else -+ *id = SPACEBALL_4000FLX; -+ -+ if (spaceball_waitcmd(fd, '"', r)) -+ return -1; -+ -+ if (spaceball_cmd(fd, "YS", r)) -+ return -1; -+ -+ if (spaceball_cmd(fd, "M", r)) -+ return -1; -+ -+ return 0; -+ } -+ -+ if (spaceball_cmd(fd, "P@A@A", r) || -+ spaceball_cmd(fd, "FT@", r) || -+ spaceball_cmd(fd, "MSS", r)) -+ return -1; -+ -+ return 0; -+} -+ -+int stinger_init(int fd, long *id, long *extra) -+{ -+ int i; -+ unsigned char c; -+ unsigned char *response = "\r\n0600520058C272"; -+ -+ if (write(fd, " E5E5", 5) != 5) /* Enable command */ -+ return -1; -+ -+ for (i = 0; i < 16; i++) /* Check for Stinger */ -+ if (readchar(fd, &c, 200) || (c != response[i])) -+ return -1; -+ -+ return 0; -+} -+ -+int mzp_init(int fd, long *id, long *extra) -+{ -+ if (logitech_command(fd, "*X*q")) return -1; -+ setline(fd, CS8, B9600); -+ return 0; -+} -+ -+int newton_init(int fd, long *id, long *extra) -+{ -+ int i; -+ unsigned char c; -+ unsigned char response[35] = -+ { 0x16, 0x10, 0x02, 0x64, 0x5f, 0x69, 0x64, 0x00, -+ 0x00, 0x00, 0x0c, 0x6b, 0x79, 0x62, 0x64, 0x61, -+ 0x70, 0x70, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x6e, -+ 0x6f, 0x66, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x10, -+ 0x03, 0xdd, 0xe7 }; -+ -+ for (i = 0; i < 35; i++) -+ if (readchar(fd, &c, 400) || (c != response[i])) -+ return -1; -+ -+ return 0; -+} -+ -+int twiddler_init(int fd, long *id, long *extra) -+{ -+ unsigned char c[10]; -+ int count, line; -+ -+ /* Turn DTR off, otherwise the Twiddler won't send any data. */ -+ if (ioctl(fd, TIOCMGET, &line)) return -1; -+ line &= ~TIOCM_DTR; -+ if (ioctl(fd, TIOCMSET, &line)) return -1; -+ -+ /* Check whether the device on the serial line is the Twiddler. -+ * -+ * The Twiddler sends data packets of 5 bytes which have the following -+ * properties: the MSB is 0 on the first and 1 on all other bytes, and -+ * the high order nibble of the last byte is always 0x8. -+ * -+ * We read and check two of those 5 byte packets to be sure that we -+ * are indeed talking to a Twiddler. */ -+ -+ /* Read at most 5 bytes until we find one with the MSB set to 0 */ -+ for (count = 0; count < 5; count++) { -+ if (readchar(fd, c+0, 500)) return -1; -+ if ((c[0] & 0x80) == 0) break; -+ } -+ -+ if (count == 5) { -+ /* Could not find header byte in data stream */ -+ return -1; -+ } -+ -+ /* Read remaining 4 bytes plus the full next data packet */ -+ for (count = 1; count < 10; count++) { -+ if (readchar(fd, c+count, 500)) return -1; -+ } -+ -+ /* Check whether the bytes of both data packets obey the rules */ -+ for (count = 1; count < 10; count++) { -+ if ((count % 5 == 0 && (c[count] & 0x80) != 0) -+ || (count % 5 == 4 && (c[count] & 0xF0) != 0x80) -+ || (count % 5 != 0 && (c[count] & 0x80) != 0x80)) { -+ /* Invalid byte in data packet */ -+ return -1; -+ } -+ } -+ -+ return 0; -+} -+ -+int penmount_init(int fd, long *id, long *extra) -+{ -+ unsigned char init_cmd[5] = { 0xF2, 0x00, 0x00, 0x00, 0x00 }; -+ unsigned char start_cmd[5] = { 0xF1, 0x00, 0x00, 0x00, 0x00 }; -+ unsigned char c[10]; -+ int count; -+ -+ /* try to initialize device */ -+ if (write( fd, init_cmd, 5 ) != 5) -+ return -1; -+ -+ /* read the responce */ -+ for (count = 0; count < 5; count ++) { -+ if (readchar(fd, c+0, 500)) return -1; -+ if (c[0] == 0xf2) break; -+ } -+ -+ if (readchar(fd, c+1, 500)) return -1; -+ if (c[1] != 0xd9) return -1; -+ -+ if (readchar(fd, c+2, 500)) return -1; -+ if (c[2] != 0x0a) return -1; -+ -+ /* the device is present! start it! */ -+ if (write( fd, start_cmd, 5 ) != 5) -+ return -1; -+ -+ return 0; -+} -+ -+int dump_init(int fd, long *id, long *extra) -+{ -+ unsigned char c, o = 0; -+ -+ c = 0x80; -+ -+ if (write(fd, &c, 1) != 1) /* Enable command */ -+ return -1; -+ -+ while (1) -+ if (!readchar(fd, &c, 1)) { -+ printf("%02x (%c) ", c, ((c > 32) && (c < 127)) ? c : 'x'); -+ o = 1; -+ } else { -+ if (o) { -+ printf("\n"); -+ o = 0; -+ } -+ } -+} -+ -+struct input_types { -+ char name[16]; -+ char name2[16]; -+ int speed; -+ int flags; -+ unsigned long type; -+ unsigned long id; -+ unsigned long extra; -+ int flush; -+ int (*init)(int fd, long *id, long *extra); -+}; -+ -+struct input_types input_types[] = { -+ -+{ "--sunkbd", "-skb", B1200, CS8, SERIO_SUNKBD, 0, 0, 1, NULL }, -+{ "--lkkbd", "-lk", B4800, CS8|CSTOPB, SERIO_LKKBD, 0, 0, 1, NULL }, -+{ "--vsxxx-aa", "-vs", B4800, CS8|CSTOPB|PARENB|PARODD,SERIO_VSXXXAA, 0, 0, 1, NULL }, -+{ "--spaceorb", "-orb", B9600, CS8, SERIO_SPACEORB, 0, 0, 1, NULL }, -+{ "--spaceball", "-sbl", B9600, CS8, SERIO_SPACEBALL,0, 0, 0, spaceball_init }, -+{ "--magellan", "-mag", B9600, CS8 | CSTOPB | CRTSCTS, SERIO_MAGELLAN, 0, 0, 1, magellan_init }, -+{ "--warrior", "-war", B1200, CS7 | CSTOPB, SERIO_WARRIOR, 0, 0, 1, warrior_init }, -+{ "--stinger", "-sting", B1200, CS8, SERIO_STINGER, 0, 0, 1, stinger_init }, -+{ "--mousesystems", "-msc", B1200, CS8, SERIO_MSC, 0, 0x01, 1, NULL }, -+{ "--sunmouse", "-sun", B1200, CS8, SERIO_SUN, 0, 0x01, 1, NULL }, -+{ "--microsoft", "-bare", B1200, CS7, SERIO_MS, 0, 0, 1, NULL }, -+{ "--mshack", "-ms", B1200, CS7, SERIO_MS, 0, 0x01, 1, NULL }, -+{ "--mouseman", "-mman", B1200, CS7, SERIO_MP, 0, 0x01, 1, NULL }, -+{ "--intellimouse", "-ms3", B1200, CS7, SERIO_MZ, 0, 0x11, 1, NULL }, -+{ "--mmwheel", "-mmw", B1200, CS7 | CSTOPB, SERIO_MZP, 0, 0x13, 1, mzp_init }, -+{ "--iforce", "-ifor", B38400, CS8, SERIO_IFORCE, 0, 0, 0, NULL }, -+{ "--newtonkbd", "-newt", B9600, CS8, SERIO_NEWTON, 0, 0, 0, newton_init }, -+{ "--h3600ts", "-ipaq", B115200, CS8, SERIO_H3600, 0, 0, 0, NULL }, -+{ "--stowawaykbd", "-ipaqkbd", B115200, CS8, SERIO_STOWAWAY, 0, 0, 0, NULL }, -+{ "--ps2serkbd", "-ps2ser", B1200, CS8, SERIO_PS2SER, 0, 0, 1, NULL }, -+{ "--twiddler", "-twid", B2400, CS8, SERIO_TWIDKBD, 0, 0, 0, twiddler_init }, -+{ "--twiddler-joy", "-twidjoy", B2400, CS8, SERIO_TWIDJOY, 0, 0, 0, twiddler_init }, -+{ "--elotouch", "-elo", B9600, CS8 | CRTSCTS, SERIO_ELO, 0, 0, 0, NULL }, -+{ "--elo4002", "-elo6b", B9600, CS8 | CRTSCTS, SERIO_ELO, 1, 0, 0, NULL }, -+{ "--elo271-140", "-elo4b", B9600, CS8 | CRTSCTS, SERIO_ELO, 2, 0, 0, NULL }, -+{ "--elo261-280", "-elo3b", B9600, CS8 | CRTSCTS, SERIO_ELO, 3, 0, 0, NULL }, -+{ "--dump", "-dump", B2400, CS8, 0, 0, 0, 0, dump_init }, -+{ "--dmc9000", "-dmc", B19200, CS8, SERIO_PENMOUNT, 0, 0, 0, penmount_init }, -+{ "", "", 0, 0 } -+ -+}; -+ -+int main(int argc, char **argv) -+{ -+ unsigned long devt; -+ int ldisc; -+ int type; -+ long id, extra; -+ int fd; -+ char c; -+ -+ if (argc < 2 || argc > 3 || !strcmp("--help", argv[1])) { -+ puts(""); -+ puts("Usage: inputttach "); -+ puts(""); -+ puts("Modes:"); -+ puts(" --sunkbd -skb Sun Type 4 and Type 5 keyboards"); -+ puts(" --lkkbd -lk DEC LK201 / LK401 keyboards"); -+ puts(" --vsxxx-aa -vs DEC VSXXX-AA / VSXXX-GA mouse and VSXXX-AB tablet"); -+ puts(" --spaceorb -orb SpaceOrb 360 / SpaceBall Avenger"); -+ puts(" --spaceball -sbl SpaceBall 2003 / 3003 / 4000 FLX"); -+ puts(" --magellan -mag Magellan / SpaceMouse"); -+ puts(" --warrior -war WingMan Warrior"); -+ puts(" --stinger -stng Gravis Stinger"); -+ puts(" --mousesystems -msc 3-button Mouse Systems mice"); -+ puts(" --sunmouse -sun 3-button Sun mice"); -+ puts(" --microsoft -bare 2-button Microsoft mice"); -+ puts(" --mshack -ms 3-button mice in Microsoft mode"); -+ puts(" --mouseman -mman 3-button Logitech and Genius mice"); -+ puts(" --intellimouse -ms3 Microsoft IntelliMouse"); -+ puts(" --mmwheel -mmw Logitech mice with 4-5 buttons or wheel"); -+ puts(" --iforce -ifor I-Force joysticks and wheels"); -+ puts(" --h3600ts -ipaq Ipaq h3600 touchscreen"); -+ puts(" --stowawaykbd -ipaqkbd Stowaway keyboard"); -+ puts(" --ps2serkbd -ps2ser PS/2 via serial keyboard"); -+ puts(" --twiddler -twid Handykey Twiddler chording keyboard"); -+ puts(" --twiddler-joy -twidjoy Handykey Twiddler used as a joystick"); -+ puts(" --dmc9000 -dmc DMC9000/Penpount touchscreen"); -+ puts(""); -+ return 1; -+ } -+ -+ for (type = 0; input_types[type].speed; type++) { -+ if (!strncasecmp(argv[1], input_types[type].name, 16) || -+ !strncasecmp(argv[1], input_types[type].name2, 16)) -+ break; -+ } -+ -+ if (!input_types[type].speed) { -+ fprintf(stderr, "inputattach: invalid mode\n"); -+ return 1; -+ } -+ -+ if ((fd = open(argv[2], O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0) { -+ perror("inputattach"); -+ return 1; -+ } -+ -+ setline(fd, input_types[type].flags, input_types[type].speed); -+ -+ if (input_types[type].flush) -+ while (!readchar(fd, &c, 100)); -+ -+ id = input_types[type].id; -+ extra = input_types[type].extra; -+ -+ if (input_types[type].init && input_types[type].init(fd, &id, &extra)) { -+ fprintf(stderr, "inputattach: device initialization failed\n"); -+ return 1; -+ } -+ -+ ldisc = N_MOUSE; -+ if(ioctl(fd, TIOCSETD, &ldisc)) { -+ fprintf(stderr, "inputattach: can't set line discipline\n"); -+ return 1; -+ } -+ -+ devt = input_types[type].type | (id << 8) | (extra << 16); -+ -+ if(ioctl(fd, SPIOCSTYPE, &devt)) { -+ fprintf(stderr, "inputattach: can't set device type\n"); -+ return 1; -+ } -+ -+ read(fd, NULL, 0); -+ -+ ldisc = 0; -+ ioctl(fd, TIOCSETD, &ldisc); -+ close(fd); -+ -+ return 0; -+} -diff -Naur tslib-org/tests/ts_finddev.c tslib-1.0/tests/ts_finddev.c ---- tslib-org/tests/ts_finddev.c 1970-01-01 02:00:00.000000000 +0200 -+++ tslib-1.0/tests/ts_finddev.c 2007-05-07 17:36:37.000000000 +0300 -@@ -0,0 +1,75 @@ -+/* -+ * tslib/src/ts_print.c -+ * -+ * Derived from tslib/src/ts_test.c by Douglas Lowder -+ * Just prints touchscreen events -- does not paint them on framebuffer -+ * -+ * This file is placed under the GPL. Please see the file -+ * COPYING for more details. -+ * -+ * Basic test program for touchscreen library. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "tslib.h" -+ -+void usage( int argc, char** argv ) { -+ printf( "Usage: %s device_name wait_for_sec\n", argv[0] ); -+ printf( "\tdevice_name - tdevice to probe, example /dev/input/event0\n" ); -+ printf( "\twait_for_sec - wait seconds for touch event, if 0 - dont wait!\n" ); -+ printf( "\tReturn codes:\n" ); -+ printf( "\t 0 - timeout expired without receiving event.\n" ); -+ printf( "\t But this maybe is TouchScreen.\n" ); -+ printf( "\t -1 - this is NOT TouchScreen device!\n" ); -+ printf( "\t 1 - this is TouchScreen for shure!\n" ); -+ exit(-1); -+} -+ -+void alarm_handler( int sig ) { -+ // time is expired! -+ exit(0); -+} -+ -+int main( int argc, char** argv ) -+{ -+ struct tsdev *ts; -+ struct ts_sample samp; -+ char *tsdevice=NULL; -+ int waitsec; -+ int ret; -+ -+ if (argc != 3) -+ usage( argc, argv ); -+ -+ tsdevice = argv[1]; -+ waitsec = atoi( argv[2] ); -+ if (waitsec < 0) -+ usage( argc, argv ); -+ -+ ts = ts_open( tsdevice, 0 ); -+ if (!ts) -+ return -1; -+ if (ts_config(ts)) -+ return -1; -+ -+ if (!waitsec) { -+ return 0; -+ } -+ -+ printf( "Probe device %s, Please Touch Screen Anywhere in %i seconds! ... \n", tsdevice, waitsec ); -+ signal( SIGALRM, alarm_handler ); -+ alarm( waitsec ); -+ ret = ts_read_raw(ts, &samp, 1 ); -+ if (ret) -+ return 1; -+ -+ return -1; -+} diff --git a/bsp/buildroot/package/tslib/Config.in b/bsp/buildroot/package/tslib/Config.in index 050588e8..bc5d7901 100644 --- a/bsp/buildroot/package/tslib/Config.in +++ b/bsp/buildroot/package/tslib/Config.in @@ -2,7 +2,7 @@ config BR2_PACKAGE_TSLIB bool "tslib" depends on !BR2_STATIC_LIBS # dlopen help - Tslib is an abstraction layer for touchscreen panel events. + Tslib is a filtering layer for touchscreen panel events. https://github.com/kergoth/tslib diff --git a/bsp/buildroot/package/tslib/tslib.hash b/bsp/buildroot/package/tslib/tslib.hash index e3ddce54..d7ae4dce 100644 --- a/bsp/buildroot/package/tslib/tslib.hash +++ b/bsp/buildroot/package/tslib/tslib.hash @@ -1,2 +1,2 @@ -# Locally generated -sha256 121750e9ae0f05ce840ab8dbefdae1297258f0a69dd1967f55c40ac6e87d5ee9 tslib-1.1.tar.gz +# https://github.com/kergoth/tslib/releases/download/1.5/tslib-1.5.tar.xz.sha256 +sha256 94874fe72c5af5c9be642a2ce524f014eb1d59d15cf852f2d3b2cf380f04252d tslib-1.5.tar.xz diff --git a/bsp/buildroot/package/tslib/tslib.mk b/bsp/buildroot/package/tslib/tslib.mk index 11002479..08b1d26a 100644 --- a/bsp/buildroot/package/tslib/tslib.mk +++ b/bsp/buildroot/package/tslib/tslib.mk @@ -4,8 +4,9 @@ # ################################################################################ -TSLIB_VERSION = 1.1 +TSLIB_VERSION = 1.5 TSLIB_SITE = https://github.com/kergoth/tslib/releases/download/$(TSLIB_VERSION) +TSLIB_SOURCE = tslib-$(TSLIB_VERSION).tar.xz TSLIB_LICENSE = GPL, LGPL TSLIB_LICENSE_FILES = COPYING @@ -13,4 +14,8 @@ TSLIB_AUTORECONF = YES TSLIB_INSTALL_STAGING = YES TSLIB_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6),) +TSLIB_CONF_OPTS += --disable-tools +endif + $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/tunctl/tunctl.mk b/bsp/buildroot/package/tunctl/tunctl.mk index 81e6c8cc..30dbbd13 100644 --- a/bsp/buildroot/package/tunctl/tunctl.mk +++ b/bsp/buildroot/package/tunctl/tunctl.mk @@ -5,7 +5,6 @@ ################################################################################ TUNCTL_VERSION = 1.5 -TUNCTL_SOURCE = tunctl-$(TUNCTL_VERSION).tar.gz TUNCTL_SITE = http://downloads.sourceforge.net/project/tunctl/tunctl/$(TUNCTL_VERSION) TUNCTL_LICENSE = GPLv2 diff --git a/bsp/buildroot/package/turbolua/turbolua.mk b/bsp/buildroot/package/turbolua/turbolua.mk index bf6d4918..bf9e27f1 100644 --- a/bsp/buildroot/package/turbolua/turbolua.mk +++ b/bsp/buildroot/package/turbolua/turbolua.mk @@ -22,11 +22,11 @@ TURBOLUA_MAKE_OPTS += SSL=none endif define TURBOLUA_BUILD_CMDS - $(MAKE) $(TURBOLUA_MAKE_OPTS) -C $(@D) all + $(TARGET_MAKE_ENV) $(MAKE) $(TURBOLUA_MAKE_OPTS) -C $(@D) all endef define TURBOLUA_INSTALL_TARGET_CMDS - $(MAKE) $(TURBOLUA_MAKE_OPTS) LDCONFIG=true \ + $(TARGET_MAKE_ENV) $(MAKE) $(TURBOLUA_MAKE_OPTS) LDCONFIG=true \ PREFIX="$(TARGET_DIR)/usr" -C $(@D) install endef diff --git a/bsp/buildroot/package/tvheadend/0002-ffmpeg-revert-minimum-required-version-numbers.patch b/bsp/buildroot/package/tvheadend/0002-ffmpeg-revert-minimum-required-version-numbers.patch deleted file mode 100644 index 74136fe4..00000000 --- a/bsp/buildroot/package/tvheadend/0002-ffmpeg-revert-minimum-required-version-numbers.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 78a7b7365a67fa2f5394c6b4ca39de01b00416dc Mon Sep 17 00:00:00 2001 -From: Bernd Kuhls -Date: Sat, 2 Apr 2016 19:05:52 +0200 -Subject: [PATCH 1/1] ffmpeg: revert minimum required version numbers - -This commit reverts the minimum version numbers required by configure to -the values before -https://github.com/tvheadend/tvheadend/commit/1359effe28a0381b8c9cbd362d6e144fb87b00fc#diff-e2d5a00791bce9a01f99bc6fd613a39dL486 -in order to allow compilation with older versions of ffmpeg again. - -Please note that the previous version numbers of all ffmpeg libs, with -the exception of libavfilter, are those of ffmpeg 2.0.7: -https://ffmpeg.org/olddownload.html - -Therefore I synced the minimum version number required for libavfilter to -3.79.101 and not to 4.0.0 as previous in tvheadend's configure script. - -Signed-off-by: Bernd Kuhls -[Patch sent upstream: https://github.com/tvheadend/tvheadend/pull/838] ---- - configure | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/configure b/configure -index be3d2e2..2ffd280 100755 ---- a/configure -+++ b/configure -@@ -512,13 +512,13 @@ else - if enabled_or_auto libav; then - has_libav=true - -- check_pkg libavfilter ">=6.31.100" || has_libav=false -- check_pkg libswresample ">=2.0.101" || has_libav=false -- check_pkg libavresample ">=3.0.0" || has_libav=false -- check_pkg libswscale ">=4.0.100" || has_libav=false -- check_pkg libavformat ">=57.25.100" || has_libav=false -- check_pkg libavcodec ">=57.24.102" || has_libav=false -- check_pkg libavutil ">=55.17.103" || has_libav=false -+ check_pkg libavfilter ">=3.79.101" || has_libav=false -+ check_pkg libswresample ">=0.17.102" || has_libav=false -+ check_pkg libavresample ">=1.1.0" || has_libav=false -+ check_pkg libswscale ">=2.3.100" || has_libav=false -+ check_pkg libavformat ">=55.12.100" || has_libav=false -+ check_pkg libavcodec ">=55.18.102" || has_libav=false -+ check_pkg libavutil ">=52.38.100" || has_libav=false - - if $has_libav; then - enable libav --- -2.8.0.rc3 - diff --git a/bsp/buildroot/package/tvheadend/Config.in b/bsp/buildroot/package/tvheadend/Config.in index b274a130..fc39d6f4 100644 --- a/bsp/buildroot/package/tvheadend/Config.in +++ b/bsp/buildroot/package/tvheadend/Config.in @@ -12,7 +12,7 @@ config BR2_PACKAGE_TVHEADEND select BR2_PACKAGE_DTV_SCAN_TABLES select BR2_PACKAGE_FFMPEG_AVRESAMPLE if BR2_PACKAGE_FFMPEG select BR2_PACKAGE_FFMPEG_SWSCALE if BR2_PACKAGE_FFMPEG - select BR2_PACKAGE_LIBVPX if BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_LIBVPX if BR2_PACKAGE_FFMPEG && !BR2_bfin # libvpx select BR2_PACKAGE_X264 if BR2_PACKAGE_FFMPEG select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE select BR2_PACKAGE_OPENSSL diff --git a/bsp/buildroot/package/tvheadend/tvheadend.hash b/bsp/buildroot/package/tvheadend/tvheadend.hash index 04799719..d34dbf1f 100644 --- a/bsp/buildroot/package/tvheadend/tvheadend.hash +++ b/bsp/buildroot/package/tvheadend/tvheadend.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 b6035c0eedfdcbec965116248471c23bed7f8b7f899e403d670495325002ba78 tvheadend-8e637f9f903f6d820f701a1461b144e67665c6fa.tar.gz +sha256 ac3c088654864781f2b2a2797e3a8b03a1b2e86db731c08cb5f296a04069560d tvheadend-e5f5a4278949afc96e26d6cd50cf968e0e92d7b6.tar.gz diff --git a/bsp/buildroot/package/tvheadend/tvheadend.mk b/bsp/buildroot/package/tvheadend/tvheadend.mk index 516cbd32..42c6767f 100644 --- a/bsp/buildroot/package/tvheadend/tvheadend.mk +++ b/bsp/buildroot/package/tvheadend/tvheadend.mk @@ -4,7 +4,7 @@ # ################################################################################ -TVHEADEND_VERSION = 8e637f9f903f6d820f701a1461b144e67665c6fa +TVHEADEND_VERSION = e5f5a4278949afc96e26d6cd50cf968e0e92d7b6 TVHEADEND_SITE = $(call github,tvheadend,tvheadend,$(TVHEADEND_VERSION)) TVHEADEND_LICENSE = GPLv3+ TVHEADEND_LICENSE_FILES = LICENSE.md @@ -88,11 +88,11 @@ define TVHEADEND_CONFIGURE_CMDS endef define TVHEADEND_BUILD_CMDS - $(MAKE) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) endef define TVHEADEND_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install endef # Remove documentation and source files that are not needed because we diff --git a/bsp/buildroot/package/tzdata/tzdata.hash b/bsp/buildroot/package/tzdata/tzdata.hash index 1d7fbcd6..b98e579e 100644 --- a/bsp/buildroot/package/tzdata/tzdata.hash +++ b/bsp/buildroot/package/tzdata/tzdata.hash @@ -1,2 +1,2 @@ -# From http://mm.icann.org/pipermail/tz-announce/2016-July/000040.html -sha512 0472f9516b6c3d83c0a5d0953a5535f4c48d9b9171e125f528188dac512f3556bc1805b7029c4f467a122cbce1beb4e804dd4ae63b259952de3bb217f8e8941d tzdata2016f.tar.gz +# From http://mm.icann.org/pipermail/tz-announce/2016-November/000044.html +sha512 ce0b9958b764479fac7df6b5ba0933fc4c6d815ebccc2537c75c4be105691cd58054704eebfb50ca755d7d48504480d4925ce8836eb499ae4798e3d5503d7e0e tzdata2016j.tar.gz diff --git a/bsp/buildroot/package/tzdata/tzdata.mk b/bsp/buildroot/package/tzdata/tzdata.mk index de7d1be9..d6285145 100644 --- a/bsp/buildroot/package/tzdata/tzdata.mk +++ b/bsp/buildroot/package/tzdata/tzdata.mk @@ -4,7 +4,7 @@ # ################################################################################ -TZDATA_VERSION = 2016f +TZDATA_VERSION = 2016j TZDATA_SOURCE = tzdata$(TZDATA_VERSION).tar.gz TZDATA_SITE = http://www.iana.org/time-zones/repository/releases TZDATA_STRIP_COMPONENTS = 0 diff --git a/bsp/buildroot/package/uboot-tools/uboot-tools.hash b/bsp/buildroot/package/uboot-tools/uboot-tools.hash index db60dabf..5473cfea 100644 --- a/bsp/buildroot/package/uboot-tools/uboot-tools.hash +++ b/bsp/buildroot/package/uboot-tools/uboot-tools.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 95728e89dd476d17428f94080752ab48884be477b6a678941582aeef618b70bb u-boot-2016.09.01.tar.bz2 +sha256 6c425175f93a4bcf2ec9faf5658ef279633dbd7856a293d95bd1ff516528ecf2 u-boot-2017.01.tar.bz2 diff --git a/bsp/buildroot/package/uboot-tools/uboot-tools.mk b/bsp/buildroot/package/uboot-tools/uboot-tools.mk index a3335a5e..fe363e7e 100644 --- a/bsp/buildroot/package/uboot-tools/uboot-tools.mk +++ b/bsp/buildroot/package/uboot-tools/uboot-tools.mk @@ -4,7 +4,7 @@ # ################################################################################ -UBOOT_TOOLS_VERSION = 2016.09.01 +UBOOT_TOOLS_VERSION = 2017.01 UBOOT_TOOLS_SOURCE = u-boot-$(UBOOT_TOOLS_VERSION).tar.bz2 UBOOT_TOOLS_SITE = ftp://ftp.denx.de/pub/u-boot UBOOT_TOOLS_LICENSE = GPLv2+ diff --git a/bsp/buildroot/package/ubus_/0001-Install-server-and-client-examples.patch b/bsp/buildroot/package/ubus/0001-Install-server-and-client-examples.patch similarity index 100% rename from bsp/buildroot/package/ubus_/0001-Install-server-and-client-examples.patch rename to bsp/buildroot/package/ubus/0001-Install-server-and-client-examples.patch diff --git a/bsp/buildroot/package/ubus_/Config.in b/bsp/buildroot/package/ubus/Config.in similarity index 100% rename from bsp/buildroot/package/ubus_/Config.in rename to bsp/buildroot/package/ubus/Config.in diff --git a/bsp/buildroot/package/ubus_/ubus.hash b/bsp/buildroot/package/ubus/ubus.hash similarity index 100% rename from bsp/buildroot/package/ubus_/ubus.hash rename to bsp/buildroot/package/ubus/ubus.hash diff --git a/bsp/buildroot/package/ubus_/ubus.mk b/bsp/buildroot/package/ubus/ubus.mk similarity index 100% rename from bsp/buildroot/package/ubus_/ubus.mk rename to bsp/buildroot/package/ubus/ubus.mk diff --git a/bsp/buildroot/package/ucl/ucl.mk b/bsp/buildroot/package/ucl/ucl.mk index e4dc1b3e..b183a13b 100644 --- a/bsp/buildroot/package/ucl/ucl.mk +++ b/bsp/buildroot/package/ucl/ucl.mk @@ -10,6 +10,6 @@ UCL_LICENSE = GPLv2+ UCL_LICENSE_FILES = COPYING # Fix ACC conformance test failure for host gcc 6.x -HOST_UCL_CONF_ENV += CPPFLAGS="$(HOST_CPPFLAGS) -std=c90" +HOST_UCL_CONF_ENV += CPPFLAGS="$(HOST_CPPFLAGS) -std=iso9899:1990" $(eval $(host-autotools-package)) diff --git a/bsp/buildroot/package/uclibc-ng-test/Config.in b/bsp/buildroot/package/uclibc-ng-test/Config.in new file mode 100644 index 00000000..0f093d1d --- /dev/null +++ b/bsp/buildroot/package/uclibc-ng-test/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_UCLIBC_NG_TEST + bool "uclibc-ng-test" + help + Enabling this option will compile and install the uClibc-ng + test suite. This is useful if you want to check if the + uClibc-ng library is working for your architecture and/or + help developing uClibc-ng. + + The test suite will be installed into + /usr/lib/uclibc-ng-test directory. To run the test suite + enter the /usr/lib/uclibc-ng-test/test directory and type + "sh uclibcng-testrunner.sh". + + See the /usr/lib/uclibc-ng-test/test/README for additional + information. + + This is not needed at all for normal builds, so you can + safely say no if you do not plan to dig into your C library. + + The tests can also be used for GNU libc or musl. + + http://www.uclibc-ng.org diff --git a/bsp/buildroot/package/uclibc-ng-test/uclibc-ng-test.mk b/bsp/buildroot/package/uclibc-ng-test/uclibc-ng-test.mk new file mode 100644 index 00000000..610ca010 --- /dev/null +++ b/bsp/buildroot/package/uclibc-ng-test/uclibc-ng-test.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# uclibc-ng-test +# +################################################################################ + +UCLIBC_NG_TEST_VERSION = c9b9876cefc142a23aa622b821290ed16af80058 +UCLIBC_NG_TEST_SITE = git://uclibc-ng.org/git/uclibc-ng-test +UCLIBC_NG_TEST_LICENSE = LGPLv2.1+ +UCLIBC_NG_TEST_LICENSE_FILES = COPYING.LIB + +# the math tests are recently synced from glibc and need more adaption before +# regular testing is possible +UCLIBC_NG_TEST_MAKE_ENV += NO_MATH=1 + +# locale tests are not compatible with musl, yet +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +UCLIBC_NG_TEST_MAKE_ENV += NO_LOCALE=1 +endif +ifeq ($(BR2_USE_WCHAR),) +UCLIBC_NG_TEST_MAKE_ENV += NO_WCHAR=1 +endif +ifeq ($(BR2_ENABLE_LOCALE),) +UCLIBC_NG_TEST_MAKE_ENV += NO_LOCALE=1 +endif +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_THREADS=1 +endif +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),) +UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_NPTL=1 +endif +# most NPTL/TLS tests use dlopen +ifeq ($(BR2_STATIC_LIBS),y) +UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_NPTL=1 NO_DL=1 +endif + +# to execute tests in a deterministic order, call test_gen separately +define UCLIBC_NG_TEST_BUILD_CMDS + $(TARGET_MAKE_ENV) $(UCLIBC_NG_TEST_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" \ + UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ + UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \ + test_compile + $(TARGET_MAKE_ENV) $(UCLIBC_NG_TEST_MAKE_ENV) $(MAKE1) -C $(@D) \ + CC="$(TARGET_CC)" \ + UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ + test_gen +endef + +define UCLIBC_NG_TEST_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/uclibc/0001-arm-fix-compile-in-thumb-mode.patch b/bsp/buildroot/package/uclibc/0001-arm-fix-compile-in-thumb-mode.patch deleted file mode 100644 index 43fcb6f4..00000000 --- a/bsp/buildroot/package/uclibc/0001-arm-fix-compile-in-thumb-mode.patch +++ /dev/null @@ -1,48 +0,0 @@ -From bbd7151f7980c7d075fe652331f01d3aadc73e42 Mon Sep 17 00:00:00 2001 -From: Waldemar Brodkorb -Date: Mon, 8 Aug 2016 06:41:03 +0200 -Subject: [PATCH] arm: fix compile in thumb mode - -Fix a regression introduced by commit -0550ecce0e6580c5ad34e9a9a39ff18ccf8774f9 - -Reported by Buildroot developers. - -Embedded test must be extented to ARMv7 thumb2 builds to -find such regressions next time. It wasn't triggered by a -cortex-m4 ARM noMMU build. - -[yann.morin.1998@free.fr: backport from upstream] -Signed-off-by: "Yann E. MORIN" ---- - libc/sysdeps/linux/arm/bits/syscalls.h | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/libc/sysdeps/linux/arm/bits/syscalls.h b/libc/sysdeps/linux/arm/bits/syscalls.h -index 5b30564..6c62a9e 100644 ---- a/libc/sysdeps/linux/arm/bits/syscalls.h -+++ b/libc/sysdeps/linux/arm/bits/syscalls.h -@@ -43,6 +43,9 @@ - }) \ - ) - -+#define INTERNAL_SYSCALL_ARM(name, err, nr, args...) \ -+ INTERNAL_SYSCALL_NCS(__ARM_NR_##name, err, nr, args) -+ - #if defined(__thumb__) - /* We can't use push/pop inside the asm because that breaks - unwinding (ie. thread cancellation). -@@ -83,10 +86,6 @@ - } \ - (int) __internal_sys_result; }) \ - ) -- --#undef INTERNAL_SYSCALL_ARM --#define INTERNAL_SYSCALL_ARM(name, err, nr, args...) \ -- INTERNAL_SYSCALL_NCS(__ARM_NR_##name, err, nr, args) - #endif - - #define INTERNAL_SYSCALL_ERROR_P(val, err) \ --- -2.7.4 - diff --git a/bsp/buildroot/package/uclibc/0001-fstat-make-new-code-aarch64-specific.patch b/bsp/buildroot/package/uclibc/0001-fstat-make-new-code-aarch64-specific.patch new file mode 100644 index 00000000..eb0198d4 --- /dev/null +++ b/bsp/buildroot/package/uclibc/0001-fstat-make-new-code-aarch64-specific.patch @@ -0,0 +1,29 @@ +From 71127e5cc937878883e6021da3da337a7aa9c099 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Fri, 3 Feb 2017 06:04:16 +0100 +Subject: [PATCH 10229/10229] fstat: make new code aarch64 specific + +The new code get's used by MIPS64 N64 and fails. +Make the new code aarch64 specific. + +Signed-off-by: Waldemar Brodkorb +--- + libc/sysdeps/linux/common/fstat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libc/sysdeps/linux/common/fstat.c b/libc/sysdeps/linux/common/fstat.c +index ac77eb2..c27f926 100644 +--- a/libc/sysdeps/linux/common/fstat.c ++++ b/libc/sysdeps/linux/common/fstat.c +@@ -21,7 +21,7 @@ int fstat(int fd, struct stat *buf) + } + libc_hidden_def(fstat) + +-#elif __WORDSIZE == 64 && defined __NR_newfstatat ++#elif __WORDSIZE == 64 && defined __NR_newfstatat && __aarch64__ + #include + + int fstat(int fd, struct stat *buf) +-- +2.1.4 + diff --git a/bsp/buildroot/package/uclibc/0002-arm-fix-static-linking-issues.patch b/bsp/buildroot/package/uclibc/0002-arm-fix-static-linking-issues.patch new file mode 100644 index 00000000..5480b0dc --- /dev/null +++ b/bsp/buildroot/package/uclibc/0002-arm-fix-static-linking-issues.patch @@ -0,0 +1,38 @@ +From 94810a91c48ac62daed55b4aec70d04a44c10795 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Thu, 16 Feb 2017 20:22:21 +0100 +Subject: [PATCH] arm: fix static linking issues + +As reported by Buildroot developers these files causing static +linking issues. The original contribution with the ARM unwind-resume +rework and GNU libc sync was made before the combined libc change. +But the patch was applied later, after the libc change and +it seems the test coverage for static linking didn't catch it in +the regression testing. Remove the files. + +Signed-off-by: Waldemar Brodkorb +--- + libpthread/nptl/sysdeps/arm/pt-arm-unwind-resume.c | 2 -- + libpthread/nptl/sysdeps/arm/rt-arm-unwind-resume.c | 1 - + 2 files changed, 3 deletions(-) + delete mode 100644 libpthread/nptl/sysdeps/arm/pt-arm-unwind-resume.c + delete mode 100644 libpthread/nptl/sysdeps/arm/rt-arm-unwind-resume.c + +diff --git a/libpthread/nptl/sysdeps/arm/pt-arm-unwind-resume.c b/libpthread/nptl/sysdeps/arm/pt-arm-unwind-resume.c +deleted file mode 100644 +index fd0cec4..0000000 +--- a/libpthread/nptl/sysdeps/arm/pt-arm-unwind-resume.c ++++ /dev/null +@@ -1,2 +0,0 @@ +-__asm__ (".set __libgcc_s_init, pthread_cancel_init"); +-#include +diff --git a/libpthread/nptl/sysdeps/arm/rt-arm-unwind-resume.c b/libpthread/nptl/sysdeps/arm/rt-arm-unwind-resume.c +deleted file mode 100644 +index 2641dc5..0000000 +--- a/libpthread/nptl/sysdeps/arm/rt-arm-unwind-resume.c ++++ /dev/null +@@ -1 +0,0 @@ +-#include +-- +2.1.4 + diff --git a/bsp/buildroot/package/uclibc/0002-sunrpc-Do-not-use-alloca-in-clntudp_call.patch b/bsp/buildroot/package/uclibc/0002-sunrpc-Do-not-use-alloca-in-clntudp_call.patch deleted file mode 100644 index b0c523cc..00000000 --- a/bsp/buildroot/package/uclibc/0002-sunrpc-Do-not-use-alloca-in-clntudp_call.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 9213ad631513d0e67d9d31465c9cdb3f3dde0399 Mon Sep 17 00:00:00 2001 -From: Waldemar Brodkorb -Date: Fri, 5 Aug 2016 21:33:44 +0200 -Subject: [PATCH 2/3] sunrpc: Do not use alloca in clntudp_call - -CVE-2016-4429: -The call is technically in a loop, and under certain circumstances -(which are quite difficult to reproduce in a test case), alloca -can be invoked repeatedly during a single call to clntudp_call. -As a result, the available stack space can be exhausted (even -though individual alloca sizes are bounded implicitly by what -can fit into a UDP packet, as a side effect of the earlier -successful send operation). - -From GNU libc: -https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commit;h=bc779a1a5b3035133024b21e2f339fe4219fb11c - -Signed-off-by: Waldemar Brodkorb ---- - libc/inet/rpc/clnt_udp.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -diff --git a/libc/inet/rpc/clnt_udp.c b/libc/inet/rpc/clnt_udp.c -index 4fc55b7..ce7e9e6 100644 ---- a/libc/inet/rpc/clnt_udp.c -+++ b/libc/inet/rpc/clnt_udp.c -@@ -368,9 +368,15 @@ send_again: - struct sock_extended_err *e; - struct sockaddr_in err_addr; - struct iovec iov; -- char *cbuf = (char *) alloca (outlen + 256); -+ char *cbuf = malloc (outlen + 256); - int ret; - -+ if (cbuf == NULL) -+ { -+ cu->cu_error.re_errno = errno; -+ return (cu->cu_error.re_status = RPC_CANTRECV); -+ } -+ - iov.iov_base = cbuf + 256; - iov.iov_len = outlen; - msg.msg_name = (void *) &err_addr; -@@ -395,10 +401,12 @@ send_again: - cmsg = CMSG_NXTHDR (&msg, cmsg)) - if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_RECVERR) - { -+ free (cbuf); - e = (struct sock_extended_err *) CMSG_DATA(cmsg); - cu->cu_error.re_errno = e->ee_errno; - return (cu->cu_error.re_status = RPC_CANTRECV); - } -+ free (cbuf); - } - #endif - do --- -2.7.4 (Apple Git-66) - diff --git a/bsp/buildroot/package/uclibc/0003-ARC-Support-syscall-ABI-v4.patch b/bsp/buildroot/package/uclibc/0003-ARC-Support-syscall-ABI-v4.patch deleted file mode 100644 index 058adcac..00000000 --- a/bsp/buildroot/package/uclibc/0003-ARC-Support-syscall-ABI-v4.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 3e40f9669279f005f7154892539166f5081fbcb2 Mon Sep 17 00:00:00 2001 -From: Vineet Gupta -Date: Tue, 16 Aug 2016 15:04:27 -0700 -Subject: [PATCH] ARC: Support syscall ABI v4 - -The syscall ABI includes the gcc functional calling ABI since a syscall -implies userland caller and kernel callee. - -The current gcc ABI (v3) for ARCv2 ISA required 64-bit data be passed in -even-odd register pairs, (potentially punching reg holes when passing such -values as args). This was partly driven by the fact that the double-word -LDD/STD instructions in ARCv2 expect the register alignment and thus gcc -forcing this avoids extra MOV at the cost of a few unused register (which we -have plenty anyways). - -This however was rejected as part of upstreaming gcc port to HS. So the new -ABI v4 doesn't enforce the even-odd reg restriction. - -Do note that for ARCompact ISA builds v3 and v4 are practically the same in -terms of gcc code generation. - -This change is dormant for now (gcc 4.8.x based tools) and will only kick -in with switch to gcc 6.x based tools. - -Signed-off-by: Vineet Gupta -Signed-off-by: Vlad Zakharov ---- - libc/sysdeps/linux/arc/bits/uClibc_arch_features.h | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h b/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h -index 5160724..94e089d 100755 ---- a/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h -+++ b/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h -@@ -41,8 +41,14 @@ - /* The default ';' is a comment on ARC. */ - #define __UCLIBC_ASM_LINE_SEP__ ` - --/* does your target align 64bit values in register pairs ? (32bit arches only) */ --#if defined(__A7__) -+/* does your target align 64bit values in register pairs ? (32bit arches only) -+ * - ARC700 never had any constraint on reg pairs (even if ABI v3) -+ * - Inital HS ABI (v3: non upstream gcc) had 64-bit data aligned in even-odd -+ * reg pairs (thus allowed reg holes when passing such args to calls) -+ * - Upstream gcc (6.x) HS ABI doesn't have that restriction -+ */ -+ -+#if defined(__A7__) || (__GNUC__ > 4) - #undef __UCLIBC_SYSCALL_ALIGN_64BIT__ - #else - #define __UCLIBC_SYSCALL_ALIGN_64BIT__ --- -2.7.4 - diff --git a/bsp/buildroot/package/uclibc/0003-or1k-add-missing-definition-of-ucontext.patch b/bsp/buildroot/package/uclibc/0003-or1k-add-missing-definition-of-ucontext.patch new file mode 100644 index 00000000..7c602281 --- /dev/null +++ b/bsp/buildroot/package/uclibc/0003-or1k-add-missing-definition-of-ucontext.patch @@ -0,0 +1,33 @@ +From 228d03bf0032e5799e9bf04810170c0653ca846d Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Fri, 17 Feb 2017 22:33:49 +0100 +Subject: [PATCH] or1k: add missing definition of ucontext + +Signed-off-by: Waldemar Brodkorb +--- + libc/sysdeps/linux/or1k/sys/ucontext.h | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/libc/sysdeps/linux/or1k/sys/ucontext.h b/libc/sysdeps/linux/or1k/sys/ucontext.h +index b11928e..dd97b60 100644 +--- a/libc/sysdeps/linux/or1k/sys/ucontext.h ++++ b/libc/sysdeps/linux/or1k/sys/ucontext.h +@@ -20,6 +20,14 @@ + + #include + #include +-#include ++#include ++ ++typedef struct ucontext { ++ unsigned long uc_flags; ++ struct ucontext *uc_link; ++ stack_t uc_stack; ++ struct sigcontext uc_mcontext; ++ sigset_t uc_sigmask; /* mask last for extensibility */ ++} ucontext_t; + + #endif /* sys/ucontext.h */ +-- +2.1.4 + diff --git a/bsp/buildroot/package/uclibc/Config.in b/bsp/buildroot/package/uclibc/Config.in index 33969cc1..0628af30 100644 --- a/bsp/buildroot/package/uclibc/Config.in +++ b/bsp/buildroot/package/uclibc/Config.in @@ -1,12 +1,12 @@ if BR2_TOOLCHAIN_BUILDROOT_UCLIBC +comment "uClibc Options" + config BR2_PACKAGE_UCLIBC bool default y select BR2_PACKAGE_LINUX_HEADERS -comment "uClibc Options" - config BR2_UCLIBC_CONFIG string "uClibc configuration file to use?" default "package/uclibc/uClibc-ng.config" @@ -41,6 +41,7 @@ config BR2_TOOLCHAIN_BUILDROOT_LOCALE bool "Enable toolchain locale/i18n support" select BR2_TOOLCHAIN_BUILDROOT_WCHAR select BR2_ENABLE_LOCALE + select BR2_NEEDS_HOST_UTF8_LOCALE help Enable this option if you want your toolchain to support localization and internationalization. @@ -56,12 +57,12 @@ choice select BR2_TOOLCHAIN_HAS_THREADS select BR2_TOOLCHAIN_HAS_THREADS_NPTL depends on BR2_USE_MMU - depends on !BR2_m68k && !BR2_microblaze + depends on !BR2_m68k && !BR2_microblaze && !BR2_or1k config BR2_PTHREADS bool "linuxthreads" select BR2_TOOLCHAIN_HAS_THREADS - depends on BR2_bfin || BR2_m68k || BR2_microblaze || BR2_arm || BR2_armeb || BR2_xtensa + depends on BR2_bfin || BR2_m68k || BR2_microblaze || BR2_or1k || BR2_arm || BR2_armeb || BR2_xtensa config BR2_PTHREADS_NONE bool "none" @@ -95,22 +96,6 @@ config BR2_UCLIBC_INSTALL_UTILS You can save ~32 KiB in target space by disabling them since they're normally not needed. -config BR2_UCLIBC_INSTALL_TEST_SUITE - bool "Compile and install uClibc tests" - help - Enabling this option will compile and install the uClibc test suite. - This is useful if you want to check if the uClibc library is working - for your architecture and/or help developing uClibc. - - The test suite will be installed into /root/uClibc directory. To run - the test suite enter the /root/uClibc/test directory and type - "sh uclibcng-testrunner.sh". - - See the /root/uClibc/test/README for additional information. - - This is not needed at all for normal builds, so you can safely say no - if you do not plan to dig into your C library. - # Mapping from the Buildroot architecture configuration options to the # uClibc architecture names. config BR2_UCLIBC_TARGET_ARCH @@ -121,6 +106,7 @@ config BR2_UCLIBC_TARGET_ARCH default "m68k" if BR2_m68k default "microblaze" if BR2_microblaze default "mips" if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default "or1k" if BR2_or1k default "powerpc" if BR2_powerpc default "sh" if BR2_sh default "sparc" if BR2_sparc @@ -142,12 +128,11 @@ config BR2_UCLIBC_MIPS_ABI default "N32" if BR2_MIPS_NABI32 default "N64" if BR2_MIPS_NABI64 -config BR2_UCLIBC_MIPS_ISA +config BR2_UCLIBC_MIPS_NAN string depends on BR2_UCLIBC_TARGET_ARCH = "mips" - default "MIPS32" if BR2_mips_32 - default "MIPS32R2" if BR2_mips_32r2 - default "MIPS64" if BR2_mips_64 + default "LEGACY" if BR2_MIPS_CPU_MIPS32 || BR2_MIPS_CPU_MIPS64 + default "2008" if BR2_MIPS_CPU_MIPS32R6 || BR2_MIPS_CPU_MIPS64R6 config BR2_UCLIBC_SH_TYPE string diff --git a/bsp/buildroot/package/uclibc/uClibc-ng.config b/bsp/buildroot/package/uclibc/uClibc-ng.config index 2671e067..528bce96 100644 --- a/bsp/buildroot/package/uclibc/uClibc-ng.config +++ b/bsp/buildroot/package/uclibc/uClibc-ng.config @@ -5,8 +5,6 @@ KERNEL_HEADERS="/usr/src/linux/include" # UCLIBC_STATIC_LDCONFIG is not set LDSO_RUNPATH=y LDSO_RUNPATH_OF_EXECUTABLE=y -MALLOC_GLIBC_COMPAT=y -UCLIBC_HAS_OBSTACK=y UCLIBC_HAS_UTMPX=y UCLIBC_HAS_UTMP=y UCLIBC_SUSV2_LEGACY=y diff --git a/bsp/buildroot/package/uclibc/uclibc.hash b/bsp/buildroot/package/uclibc/uclibc.hash index 637d93e9..d2fbd0ae 100644 --- a/bsp/buildroot/package/uclibc/uclibc.hash +++ b/bsp/buildroot/package/uclibc/uclibc.hash @@ -1,2 +1,2 @@ # From http://www.uclibc-ng.org/ -sha256 a2e7207634c19997e8b9f3e712182d80d42aaa85ce3462eff1a9bce812aaf354 uClibc-ng-1.0.17.tar.xz +sha256 f2004c85db8e07e9f1c2e8b7c513fa7c237bc9f9685d8e1bfc89535b8a85449b uClibc-ng-1.0.22.tar.xz diff --git a/bsp/buildroot/package/uclibc/uclibc.mk b/bsp/buildroot/package/uclibc/uclibc.mk index 124bd593..8f6035ec 100644 --- a/bsp/buildroot/package/uclibc/uclibc.mk +++ b/bsp/buildroot/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.17 +UCLIBC_VERSION = 1.0.22 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = http://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPLv2.1+ @@ -113,10 +113,9 @@ define UCLIBC_ARM_ABI_CONFIG $(call KCONFIG_ENABLE_OPT,CONFIG_ARM_EABI,$(@D)/.config) endef -# Thumb1 build is broken with threads with old gcc versions (4.7 and -# 4.8). Since all cores supporting Thumb1 also support ARM, we use ARM -# code in this case. -ifeq ($(BR2_GCC_VERSION_4_7_X)$(BR2_GCC_VERSION_4_8_X):$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_TOOLCHAIN_HAS_THREADS),y:yy) +# Thumb1 build is broken with threads with old gcc versions (< 4.8). Since +# all cores supporting Thumb1 also support ARM, we use ARM code in this case. +ifeq ($(BR2_GCC_VERSION_4_8_X)$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_TOOLCHAIN_HAS_THREADS),yyy) UCLIBC_EXTRA_CFLAGS += -marm endif @@ -164,10 +163,10 @@ define UCLIBC_MIPS_ABI_CONFIG $(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_ABI),$(@D)/.config) endef -UCLIBC_MIPS_ISA = CONFIG_MIPS_ISA_$(call qstrip,$(BR2_UCLIBC_MIPS_ISA)) -define UCLIBC_MIPS_ISA_CONFIG - $(SED) '/CONFIG_MIPS_ISA_.*/d' $(@D)/.config - $(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_ISA),$(@D)/.config) +UCLIBC_MIPS_NAN = CONFIG_MIPS_NAN_$(call qstrip,$(BR2_UCLIBC_MIPS_NAN)) +define UCLIBC_MIPS_NAN_CONFIG + $(SED) '/CONFIG_MIPS_NAN_.*/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_NAN),$(@D)/.config) endef endif # mips @@ -248,14 +247,6 @@ define UCLIBC_ENDIAN_CONFIG endef endif -# -# Largefile -# - -define UCLIBC_LARGEFILE_CONFIG - $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LFS,$(@D)/.config) -endef - # # MMU # @@ -427,7 +418,7 @@ define UCLIBC_KCONFIG_FIXUP_CMDS $(UCLIBC_ARM_NO_CONTEXT_FUNCS) $(UCLIBC_M68K_BINFMT_FLAT) $(UCLIBC_MIPS_ABI_CONFIG) - $(UCLIBC_MIPS_ISA_CONFIG) + $(UCLIBC_MIPS_NAN_CONFIG) $(UCLIBC_SH_TYPE_CONFIG) $(UCLIBC_SPARC_TYPE_CONFIG) $(UCLIBC_POWERPC_TYPE_CONFIG) @@ -446,16 +437,6 @@ define UCLIBC_KCONFIG_FIXUP_CMDS $(UCLIBC_SHARED_LIBS_CONFIG) endef -ifeq ($(BR2_UCLIBC_INSTALL_TEST_SUITE),y) -define UCLIBC_BUILD_TEST_SUITE - $(MAKE) -C $(@D) \ - $(UCLIBC_MAKE_FLAGS) \ - TEST_INSTALLED_UCLIBC=1 \ - UCLIBC_ONLY=1 \ - test_compile test_gen -endef -endif - define UCLIBC_BUILD_CMDS $(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) headers $(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) @@ -464,14 +445,6 @@ define UCLIBC_BUILD_CMDS HOSTCC="$(HOSTCC)" hostutils endef -ifeq ($(BR2_UCLIBC_INSTALL_TEST_SUITE),y) -define UCLIBC_INSTALL_TEST_SUITE - mkdir -p $(TARGET_DIR)/root/uClibc - cp -rdpf $(@D)/test $(TARGET_DIR)/root/uClibc - find $(TARGET_DIR)/root/uClibc -name \*.o -exec rm {} \; -endef -endif - ifeq ($(BR2_UCLIBC_INSTALL_UTILS),y) define UCLIBC_INSTALL_UTILS_TARGET $(MAKE1) -C $(@D) \ @@ -490,8 +463,6 @@ define UCLIBC_INSTALL_TARGET_CMDS RUNTIME_PREFIX=/ \ install_runtime $(UCLIBC_INSTALL_UTILS_TARGET) - $(UCLIBC_BUILD_TEST_SUITE) - $(UCLIBC_INSTALL_TEST_SUITE) $(UCLIBC_INSTALL_LDSO_SYMLINKS) endef diff --git a/bsp/buildroot/package/udisks/0002-Fix-systemd-service-file.patch b/bsp/buildroot/package/udisks/0002-Fix-systemd-service-file.patch new file mode 100644 index 00000000..ea347aef --- /dev/null +++ b/bsp/buildroot/package/udisks/0002-Fix-systemd-service-file.patch @@ -0,0 +1,33 @@ +From bf8b4362cef24a6f747e4329305a4939c8f585d1 Mon Sep 17 00:00:00 2001 +From: David King +Date: Thu, 2 Jul 2015 13:49:22 +0100 +Subject: [PATCH] Fix systemd service file + +udisks-daemon is installed to $(libexecdir), not $(prefix)/lib/udisks. + +https://bugzilla.redhat.com/show_bug.cgi?id=1238664 +https://bugs.freedesktop.org/show_bug.cgi?id=91191 + +[This patch has been backported from upstream: +https://cgit.freedesktop.org/udisks/commit/?h=udisks1&id=bf8b4362cef24a6f747e4329305a4939c8f585d1] +Signed-off-by: Pieterjan Camerlynck +--- + data/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/Makefile.am b/data/Makefile.am +index 411ea0f..08af5f4 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -31,7 +31,7 @@ systemdservicedir = $(systemdsystemunitdir) + systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) + + $(systemdservice_DATA): $(systemdservice_in_files) Makefile +- @sed -e "s|\@libexecdir\@|$(prefix)/lib/udisks|" $< > $@ ++ @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ + endif + + udevrulesdir = $(slashlibdir)/udev/rules.d +-- +2.7.4 + diff --git a/bsp/buildroot/package/udisks/Config.in b/bsp/buildroot/package/udisks/Config.in index 8b8fd288..029860fc 100644 --- a/bsp/buildroot/package/udisks/Config.in +++ b/bsp/buildroot/package/udisks/Config.in @@ -4,6 +4,7 @@ config BR2_PACKAGE_UDISKS depends on BR2_TOOLCHAIN_HAS_THREADS # dbus-glib -> glib2 depends on BR2_USE_MMU # lvm2 depends on !BR2_STATIC_LIBS # lvm2 + depends on !BR2_TOOLCHAIN_USES_MUSL # lvm2 select BR2_PACKAGE_DBUS select BR2_PACKAGE_DBUS_GLIB depends on BR2_USE_WCHAR # dbus-glib -> glib2 @@ -39,7 +40,7 @@ comment "udisks needs udev /dev management" depends on BR2_USE_MMU depends on !BR2_PACKAGE_HAS_UDEV -comment "udisks needs a toolchain w/ wchar, threads, dynamic library" +comment "udisks needs a glibc or uClibc toolchain w/ wchar, threads, dynamic library" depends on BR2_USE_MMU depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ - BR2_STATIC_LIBS + BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL diff --git a/bsp/buildroot/package/udisks/udisks.mk b/bsp/buildroot/package/udisks/udisks.mk index eea79e56..4d3ede71 100644 --- a/bsp/buildroot/package/udisks/udisks.mk +++ b/bsp/buildroot/package/udisks/udisks.mk @@ -8,6 +8,8 @@ UDISKS_VERSION = 1.0.5 UDISKS_SITE = http://hal.freedesktop.org/releases UDISKS_LICENSE = GPLv2+ UDISKS_LICENSE_FILES = COPYING +# For 0002-Fix-systemd-service-file.patch +UDISKS_AUTORECONF = YES UDISKS_DEPENDENCIES = \ sg3_utils \ diff --git a/bsp/buildroot/package/udpxy/Config.in b/bsp/buildroot/package/udpxy/Config.in new file mode 100644 index 00000000..f442a2f2 --- /dev/null +++ b/bsp/buildroot/package/udpxy/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_UDPXY + bool "udpxy" + depends on BR2_USE_MMU + help + udpxy is a UDP-to-HTTP multicast traffic relay daemon: it + forwards UDP traffic from a given multicast subscription to + the requesting HTTP client. + + http://www.udpxy.com/ diff --git a/bsp/buildroot/package/udpxy/udpxy.hash b/bsp/buildroot/package/udpxy/udpxy.hash new file mode 100644 index 00000000..4042a41d --- /dev/null +++ b/bsp/buildroot/package/udpxy/udpxy.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 6ce33b1d14a1aeab4bd2566aca112e41943df4d002a7678d9a715108e6b714bd udpxy.1.0.23-9-prod.tar.gz diff --git a/bsp/buildroot/package/udpxy/udpxy.mk b/bsp/buildroot/package/udpxy/udpxy.mk new file mode 100644 index 00000000..dd8c91fc --- /dev/null +++ b/bsp/buildroot/package/udpxy/udpxy.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# udpxy +# +################################################################################# + +UDPXY_VERSION = 1.0.23-9-prod +UDPXY_SOURCE = udpxy.$(UDPXY_VERSION).tar.gz +UDPXY_SITE = http://www.udpxy.com/download/1_23 +UDPXY_LICENSE = GPLv3+ +UDPXY_LICENSE_FILES = README + +define UDPXY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define UDPXY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr \ + -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/uhttpd/0001-Remove-Werror.patch b/bsp/buildroot/package/uhttpd/0001-Remove-Werror.patch new file mode 100644 index 00000000..67028cfa --- /dev/null +++ b/bsp/buildroot/package/uhttpd/0001-Remove-Werror.patch @@ -0,0 +1,33 @@ +From ac52380eeca27e1e2e7eb5fb9d39059dbe58b919 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 7 Dec 2016 22:48:27 +0100 +Subject: [PATCH] Remove -Werror + +-Werror might cause build failures with newer versions of gcc or C + libraries, not tested by upstream, for example: + + # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" + ^ +cc1: all warnings being treated as errors + +Signed-off-by: Thomas Petazzoni +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7ae8ba4..825342f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -5,7 +5,7 @@ PROJECT(uhttpd C) + INCLUDE (CheckFunctionExists) + + SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +-ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -Os -Wall -Werror -Wmissing-declarations --std=gnu99 -g3) ++ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -Os -Wall -Wmissing-declarations --std=gnu99 -g3) + + OPTION(TLS_SUPPORT "TLS support" ON) + OPTION(LUA_SUPPORT "Lua support" ON) +-- +2.7.4 + diff --git a/bsp/buildroot/package/uhttpd/Config.in b/bsp/buildroot/package/uhttpd/Config.in new file mode 100644 index 00000000..e463b930 --- /dev/null +++ b/bsp/buildroot/package/uhttpd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_UHTTPD + bool "uhttpd" + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBUBOX + select BR2_PACKAGE_JSON_C + help + uHTTPd is a tiny single threaded HTTP server with TLS, CGI and Lua + support. It is intended as a drop-in replacement for the Busybox + HTTP daemon. + + https://wiki.openwrt.org/doc/howto/http.uhttpd + +comment "uhttpd needs a toolchain w/ dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/bsp/buildroot/package/uhttpd/uhttpd.hash b/bsp/buildroot/package/uhttpd/uhttpd.hash new file mode 100644 index 00000000..59e54ad4 --- /dev/null +++ b/bsp/buildroot/package/uhttpd/uhttpd.hash @@ -0,0 +1,2 @@ +# No hash for this git snapshot +none xxx uhttpd-59e0c739634f46a164d939e54416287b91ff8a9b.tar.gz diff --git a/bsp/buildroot/package/uhttpd/uhttpd.mk b/bsp/buildroot/package/uhttpd/uhttpd.mk new file mode 100644 index 00000000..be0d7d63 --- /dev/null +++ b/bsp/buildroot/package/uhttpd/uhttpd.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# uhttpd +# +################################################################################ + +UHTTPD_VERSION = 59e0c739634f46a164d939e54416287b91ff8a9b +UHTTPD_SITE = http://git.openwrt.org/project/uhttpd.git +UHTTPD_SITE_METHOD = git +UHTTPD_LICENSE = ISC +UHTTPD_LICENSE_FILES = uhttpd.h +UHTTPD_DEPENDENCIES = libubox json-c + +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +UHTTPD_DEPENDENCIES += lua +UHTTPD_CONF_OPTS += -DLUA_SUPPORT=ON +else +UHTTPD_CONF_OPTS += -DLUA_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_USTREAM_SSL),y) +UHTTPD_DEPENDENCIES += ustream-ssl +UHTTPD_CONF_OPTS += -DTLS_SUPPORT=ON +else +UHTTPD_CONF_OPTS += -DTLS_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_UBUS),y) +UHTTPD_DEPENDENCIES += ubus +UHTTPD_CONF_OPTS += -DUBUS_SUPPORT=ON +else +UHTTPD_CONF_OPTS += -DUBUS_SUPPORT=OFF +endif + +$(eval $(cmake-package)) diff --git a/bsp/buildroot/package/unixodbc/unixodbc.hash b/bsp/buildroot/package/unixodbc/unixodbc.hash index a5c2d115..e99169c1 100644 --- a/bsp/buildroot/package/unixodbc/unixodbc.hash +++ b/bsp/buildroot/package/unixodbc/unixodbc.hash @@ -1,2 +1,4 @@ -# From ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.2.tar.gz.md5 -md5 5e4528851eda5d3d4aed249b669bd05b unixODBC-2.3.2.tar.gz +# From ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz.md5 +md5 bd25d261ca1808c947cb687e2034be81 unixODBC-2.3.4.tar.gz +# Locally computed +sha256 2e1509a96bb18d248bf08ead0d74804957304ff7c6f8b2e5965309c632421e39 unixODBC-2.3.4.tar.gz diff --git a/bsp/buildroot/package/unixodbc/unixodbc.mk b/bsp/buildroot/package/unixodbc/unixodbc.mk index 067c1ca6..280fe579 100644 --- a/bsp/buildroot/package/unixodbc/unixodbc.mk +++ b/bsp/buildroot/package/unixodbc/unixodbc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UNIXODBC_VERSION = 2.3.2 +UNIXODBC_VERSION = 2.3.4 UNIXODBC_SOURCE = unixODBC-$(UNIXODBC_VERSION).tar.gz UNIXODBC_SITE = ftp://ftp.unixodbc.org/pub/unixODBC UNIXODBC_INSTALL_STAGING = YES @@ -20,6 +20,13 @@ else UNIXODBC_CONF_OPTS += --disable-iconv endif +ifeq ($(BR2_PACKAGE_LIBTOOL),y) +UNIXODBC_CONF_OPTS += --without-included-ltdl +UNIXODBC_DEPENDENCIES += libtool +else +UNIXODBC_CONF_OPTS += --with-included-ltdl +endif + ifeq ($(BR2_PACKAGE_READLINE),y) UNIXODBC_CONF_OPTS += --enable-readline UNIXODBC_DEPENDENCIES += readline diff --git a/bsp/buildroot/package/unrar/unrar.hash b/bsp/buildroot/package/unrar/unrar.hash index e6a146c0..36450e05 100644 --- a/bsp/buildroot/package/unrar/unrar.hash +++ b/bsp/buildroot/package/unrar/unrar.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 e4f05190d9e379449a04c22baffc24cc2f03164a4738befe601b1325440db0c6 unrarsrc-5.4.3.tar.gz +sha256 e470c584332422893fb52e049f2cbd99e24dc6c6da971008b4e2ae4284f8796c unrarsrc-5.4.5.tar.gz diff --git a/bsp/buildroot/package/unrar/unrar.mk b/bsp/buildroot/package/unrar/unrar.mk index e49fe6c3..f5a95eac 100644 --- a/bsp/buildroot/package/unrar/unrar.mk +++ b/bsp/buildroot/package/unrar/unrar.mk @@ -4,20 +4,20 @@ # ################################################################################ -UNRAR_VERSION = 5.4.3 +UNRAR_VERSION = 5.4.5 UNRAR_SOURCE = unrarsrc-$(UNRAR_VERSION).tar.gz UNRAR_SITE = http://www.rarlab.com/rar UNRAR_LICENSE = unrar UNRAR_LICENSE_FILES = license.txt define UNRAR_BUILD_CMDS - $(MAKE) CXX="$(TARGET_CXX)" STRIP="/bin/true" \ + $(TARGET_MAKE_ENV) $(MAKE) CXX="$(TARGET_CXX)" STRIP="/bin/true" \ CXXFLAGS="$(TARGET_CXXFLAGS) -pthread" \ LDFLAGS="$(TARGET_LDFLAGS) -pthread" -C $(@D) endef define UNRAR_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR)/usr install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR)/usr install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/upmpdcli/Config.in b/bsp/buildroot/package/upmpdcli/Config.in index e17330c8..48720347 100644 --- a/bsp/buildroot/package/upmpdcli/Config.in +++ b/bsp/buildroot/package/upmpdcli/Config.in @@ -2,8 +2,10 @@ config BR2_PACKAGE_UPMPDCLI bool "upmpdcli" depends on BR2_USE_MMU # fork() depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_HAS_THREADS # libupnpp -> libupnp - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + depends on BR2_TOOLCHAIN_HAS_THREADS # libupnpp, libmicrohttpd + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBMICROHTTPD select BR2_PACKAGE_LIBMPDCLIENT select BR2_PACKAGE_LIBUPNPP help @@ -13,6 +15,6 @@ config BR2_PACKAGE_UPMPDCLI http://www.lesbonscomptes.com/upmpdcli/ -comment "upmpdcli needs a toolchain w/ C++, threads, gcc >= 4.6" +comment "upmpdcli needs a toolchain w/ C++, threads, gcc >= 4.7" depends on BR2_USE_MMU - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/bsp/buildroot/package/upmpdcli/upmpdcli.hash b/bsp/buildroot/package/upmpdcli/upmpdcli.hash index 27a75cc0..bcd78318 100644 --- a/bsp/buildroot/package/upmpdcli/upmpdcli.hash +++ b/bsp/buildroot/package/upmpdcli/upmpdcli.hash @@ -1,2 +1,2 @@ -# Hashes from: http://www.lesbonscomptes.com/upmpdcli/downloads/upmpdcli-1.1.3.tar.gz.sha256 -sha256 2df3e6593f18c097b6247fb8da919b94701bf083b219056b006d68e6dcef75b5 upmpdcli-1.1.3.tar.gz +# From http://www.lesbonscomptes.com/upmpdcli/downloads/upmpdcli-1.2.12.tar.gz.sha256: +sha256 20d97c2e5ff6911e1e1538edb1487823479802cba6bd4f4c4a74035edf61cb26 upmpdcli-1.2.12.tar.gz diff --git a/bsp/buildroot/package/upmpdcli/upmpdcli.mk b/bsp/buildroot/package/upmpdcli/upmpdcli.mk index 1a7c790c..83efa053 100644 --- a/bsp/buildroot/package/upmpdcli/upmpdcli.mk +++ b/bsp/buildroot/package/upmpdcli/upmpdcli.mk @@ -4,23 +4,11 @@ # ################################################################################ -UPMPDCLI_VERSION = 1.1.3 +UPMPDCLI_VERSION = 1.2.12 UPMPDCLI_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads UPMPDCLI_LICENSE = GPLv2+ UPMPDCLI_LICENSE_FILES = COPYING -UPMPDCLI_DEPENDENCIES = libmpdclient libupnpp - -ifeq ($(BR2_STATIC_LIBS),y) -# Upmpdcli forgets to take the dependencies of libupnpp into -# consideration, breaking static linking, so help it. -# Libupnpp unfortunately doesn't provide a .pc file, so manually -# handle the dependencies here. -# The build system doesn't expand LIBS from the configure step, so -# manually pass it to make. -UPMPDCLI_DEPENDENCIES += host-pkgconf -UPMPDCLI_MAKE_OPTS = \ - LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs expat libcurl libupnp`" -endif +UPMPDCLI_DEPENDENCIES = host-pkgconf libmpdclient libupnpp libmicrohttpd jsoncpp # Upmpdcli only runs if user upmpdcli exists define UPMPDCLI_USERS diff --git a/bsp/buildroot/package/upower/0001-daemon-fix-get_critical_action.patch b/bsp/buildroot/package/upower/0001-daemon-fix-get_critical_action.patch new file mode 100644 index 00000000..02fc55c4 --- /dev/null +++ b/bsp/buildroot/package/upower/0001-daemon-fix-get_critical_action.patch @@ -0,0 +1,34 @@ +From 28cee8e2845b094488c337c4ecfa84ada0b6be60 Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Tue, 23 Feb 2016 09:51:07 +0100 +Subject: [PATCH] daemon: fix get_critical_action() + +Fix copy&paste error from e7e9156f that called the wrong _complete_ function +for up_daemon_get_critical_action(). + +https://bugs.freedesktop.org/show_bug.cgi?id=94262 + +[rebase on 0.99.4] +Signed-off-by: Romain Naour +--- + src/up-daemon.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/up-daemon.c b/src/up-daemon.c +index be14cbe..e95f904 100644 +--- a/src/up-daemon.c ++++ b/src/up-daemon.c +@@ -435,8 +435,8 @@ up_daemon_get_critical_action (UpExportedDaemon *skeleton, + GDBusMethodInvocation *invocation, + UpDaemon *daemon) + { +- up_exported_daemon_complete_get_display_device (skeleton, invocation, +- up_backend_get_critical_action (daemon->priv->backend)); ++ up_exported_daemon_complete_get_critical_action (skeleton, invocation, ++ up_backend_get_critical_action (daemon->priv->backend)); + return TRUE; + } + +-- +2.9.3 + diff --git a/bsp/buildroot/package/upower/Config.in b/bsp/buildroot/package/upower/Config.in new file mode 100644 index 00000000..8d9e84e6 --- /dev/null +++ b/bsp/buildroot/package/upower/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_UPOWER + bool "upower" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_THREADS # libgudev, libusb + depends on BR2_USE_MMU # libgudev + depends on BR2_USE_WCHAR # libgudev + select BR2_PACKAGE_LIBGUDEV + select BR2_PACKAGE_LIBUSB + help + UPower is an abstraction for enumerating power devices, listening + to device events and querying history and statistics. Any + application or service on the system can access the + org.freedesktop.UPower service via the system message bus. + + Note: upowerd require CONFIG_TIMER_STATS enabled in the Linux + kernel. + + https://upower.freedesktop.org/ + +comment "upower needs udev /dev management" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV + +comment "upower needs a toolchain w/ threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/bsp/buildroot/package/upower/upower.hash b/bsp/buildroot/package/upower/upower.hash new file mode 100644 index 00000000..0df67b44 --- /dev/null +++ b/bsp/buildroot/package/upower/upower.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9ca325a6ccef505529b268ebbbd9becd0ce65a65f6ac7ee31e2e5b17648037b0 upower-0.99.4.tar.xz diff --git a/bsp/buildroot/package/upower/upower.mk b/bsp/buildroot/package/upower/upower.mk new file mode 100644 index 00000000..471eb419 --- /dev/null +++ b/bsp/buildroot/package/upower/upower.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# upower +# +################################################################################ + +UPOWER_VERSION = 0.99.4 +UPOWER_SOURCE = upower-$(UPOWER_VERSION).tar.xz +UPOWER_SITE = https://upower.freedesktop.org/releases +UPOWER_LICENSE = GPLv2+ +UPOWER_LICENSE_FILES = COPYING + +# libupower-glib.so +UPOWER_INSTALL_STAGING = YES + +UPOWER_DEPENDENCIES = \ + host-intltool \ + host-pkgconf \ + libgudev \ + libusb \ + udev + +UPOWER_CONF_OPTS = --disable-man-pages --disable-tests + +$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/urg/0001-select-h.patch b/bsp/buildroot/package/urg/0001-select-h.patch index 09d15304..1d09bb57 100644 --- a/bsp/buildroot/package/urg/0001-select-h.patch +++ b/bsp/buildroot/package/urg/0001-select-h.patch @@ -1,11 +1,39 @@ ---- urg-0.8.18/src/c/connection/serial_ctrl_lin.c 2010-11-22 01:48:01.000000000 +0000 -+++ urg-0.8.18.mod/src/c/connection/serial_ctrl_lin.c 2013-05-21 20:56:35.822025969 +0100 -@@ -17,7 +17,7 @@ - #include +From 08c7ebec7c58fbc9c1cc0542863b34119c75c91f Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 15 Sep 2016 06:19:57 +0200 +Subject: [PATCH] Serial driver: add missing header to C and C++ serial driver + +Fixes: + http://autobuild.buildroot.net/results/cd7/cd76699188d2ee99b5f2d32b6a797de0d832a192/ + +Signed-off-by: Samuel Martin +--- + src/c/connection/serial_ctrl_lin.c | 1 + + src/cpp/connection/SerialDevice_lin.cpp | 1 + + 2 files changed, 2 insertions(+) + +Index: b/src/c/connection/serial_ctrl_lin.c +=================================================================== +--- a/src/c/connection/serial_ctrl_lin.c ++++ b/src/c/connection/serial_ctrl_lin.c +@@ -18,6 +18,7 @@ #include #include -- + +#include //#include enum { +Index: b/src/cpp/connection/SerialDevice_lin.cpp +=================================================================== +--- a/src/cpp/connection/SerialDevice_lin.cpp ++++ b/src/cpp/connection/SerialDevice_lin.cpp +@@ -13,7 +13,7 @@ + #include + #include + #include +- ++#include + + class RawSerialDevice + { diff --git a/bsp/buildroot/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch b/bsp/buildroot/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch new file mode 100644 index 00000000..e3db8980 --- /dev/null +++ b/bsp/buildroot/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch @@ -0,0 +1,99 @@ +urg: fix 'narrowing conversion' with gcc6 + +Fixes: + http://autobuild.buildroot.net/results/d0c/d0cd11163753db69a14c02e941dbda40e5f98bba/ + +Signed-off-by: Samuel Martin + +--- a/src/cpp/urg/ScipHandler.cpp 2016-09-11 16:11:16.083995214 +0200 ++++ b/src/cpp/urg/ScipHandler.cpp 2016-09-11 16:11:24.380832543 +0200 +@@ -120,7 +120,7 @@ struct ScipHandler::pImpl + + // QT ‚Ì”­s + int return_code = -1; +- char qt_expected_response[] = { 0, -1 }; ++ char qt_expected_response[] = { 0, (char)-1 }; + // return_code ‚ðŽg‚¢‚½‚¢‚½‚ßAsetLaserOutput() ‚ð—p‚¢‚¸‚É QT ‚ð‘—M‚·‚é + if (response(return_code, "QT\n", qt_expected_response)) { + laser_state_ = LaserOff; +@@ -139,7 +139,7 @@ struct ScipHandler::pImpl + + } else if (return_code == Scip11Response) { + // SCIP1.1 ƒvƒƒgƒRƒ‹‚Ìꇂ̂ÝASCIP2.0 ‚ð‘—M‚·‚é +- char scip20_expected_response[] = { 0, -1 }; ++ char scip20_expected_response[] = { 0, (char)-1 }; + if (! response(return_code, "SCIP2.0\n", scip20_expected_response)) { + error_message_ = + "SCIP1.1 protocol is not supported. Please update URG firmware, or reconnect after a few seconds because sensor is booting."; +@@ -150,7 +150,7 @@ struct ScipHandler::pImpl + + } else if (return_code == 0xE) { + // TM ƒ‚[ƒh‚Ƃ݂ȂµATM2 ‚ð”­s‚·‚é +- char tm2_expected_response[] = { 0, -1 }; ++ char tm2_expected_response[] = { 0, (char)-1 }; + if (response(return_code, "TM2\n", tm2_expected_response)) { + laser_state_ = LaserOff; + return changeBothBaudrate(baudrate); +@@ -202,7 +202,7 @@ struct ScipHandler::pImpl + snprintf(send_buffer, 10, "SS%06ld\n", baudrate); + int return_code = -1; + // !!! Šù‚ÉÝ’è‘Îۂ̃{[ƒŒ[ƒgA‚Ìꇂ̖߂è’l‚ð ss_expected... ‚ɒljÁ‚·‚é +- char ss_expected_response[] = { 0, 0x3, 0x4, 0xf, -1 }; ++ char ss_expected_response[] = { 0, 0x3, 0x4, 0xf, (char)-1 }; + if (! response(return_code, send_buffer, ss_expected_response)) { + error_message_ = "Baudrate change fail."; + return false; +@@ -216,7 +216,7 @@ struct ScipHandler::pImpl + { + // PP ‚Ì‘—M‚ƃf[ƒ^‚ÌŽóM + int return_code = -1; +- char pp_expected_response[] = { 0, -1 }; ++ char pp_expected_response[] = { 0, (char)-1 }; + vector lines; + if (! response(return_code, "PP\n", pp_expected_response, &lines)) { + error_message_ = "PP fail."; +@@ -356,7 +356,7 @@ struct ScipHandler::pImpl + + if (on) { + int return_code = -1; +- char expected_response[] = { 0, -1 }; ++ char expected_response[] = { 0, (char)-1 }; + if (! response(return_code, "BM\n", expected_response)) { + error_message_ = "BM fail."; + return false; +@@ -369,7 +369,7 @@ struct ScipHandler::pImpl + if (! mx_capturing_) { + // Á“”‚·‚邽‚ß‚Ì QT ‚Å‚ÍA‰ž“š‚ð‘҂‚ׂ« + int return_code = -1; +- char qt_expected_response[] = { 0, -1 }; ++ char qt_expected_response[] = { 0, (char)-1 }; + if (! response(return_code, "QT\n", qt_expected_response)) { + return false; + } +@@ -777,7 +777,7 @@ bool ScipHandler::loadParameter(RangeSen + bool ScipHandler::versionLines(vector& lines) + { + int return_code = -1; +- char expected_response[] = { 0, -1 }; ++ char expected_response[] = { 0, (char)-1 }; + if (! pimpl->response(return_code, "VV\n", expected_response, &lines)) { + return false; + } +@@ -792,7 +792,7 @@ bool ScipHandler::setRawTimestampMode(bo + + // TM0 or TM2 ‚Ì‘—M + int return_code = -1; +- char expected_response[] = { 0, -1 }; ++ char expected_response[] = { 0, (char)-1 }; + if (! pimpl->response(return_code, send_command, expected_response)) { + pimpl->error_message_ = (on) ? "TM0 fail." : "TM2 fail."; + return false; +@@ -809,7 +809,7 @@ bool ScipHandler::rawTimestamp(int* time + { + // TM1 ‚Ì’l‚ð•Ô‚· + int return_code = -1; +- char expected_response[] = { 0, -1 }; ++ char expected_response[] = { 0, (char)-1 }; + vector lines; + if (! pimpl->response(return_code, "TM1\n", expected_response, &lines)) { + pimpl->error_message_ = "TM1 fail."; diff --git a/bsp/buildroot/package/urg/Config.in b/bsp/buildroot/package/urg/Config.in index 9d57645d..c6026242 100644 --- a/bsp/buildroot/package/urg/Config.in +++ b/bsp/buildroot/package/urg/Config.in @@ -4,7 +4,7 @@ config BR2_PACKAGE_URG help Library to control Hokuyo's URG series sensors. - http://www.hokuyo-aut.jp/02sensor/07scanner/download/urg_programs_en/ + https://sourceforge.net/p/urgnetwork/wiki/Home/ comment "urg needs a toolchain w/ C++" depends on !BR2_INSTALL_LIBSTDCPP diff --git a/bsp/buildroot/package/urg/urg.hash b/bsp/buildroot/package/urg/urg.hash index 5764a140..41749d72 100644 --- a/bsp/buildroot/package/urg/urg.hash +++ b/bsp/buildroot/package/urg/urg.hash @@ -1,2 +1,4 @@ +# from http://pkgs.fedoraproject.org/repo/pkgs/urg/urg-0.8.18.zip/ +md5 93f90d2ccc36e784407c5282ef6bd2cb urg-0.8.18.zip # Locally calculated sha256 b2cab7e539c90c60fc99a2350a42b5d5390ff952b694b196c3cbb54623cfee7f urg-0.8.18.zip diff --git a/bsp/buildroot/package/urg/urg.mk b/bsp/buildroot/package/urg/urg.mk index 41ac4f41..5d49aeb4 100644 --- a/bsp/buildroot/package/urg/urg.mk +++ b/bsp/buildroot/package/urg/urg.mk @@ -5,7 +5,7 @@ ################################################################################ URG_VERSION = 0.8.18 -URG_SITE = http://www.hokuyo-aut.jp/02sensor/07scanner/download/urg_programs_en +URG_SITE = http://pkgs.fedoraproject.org/repo/pkgs/urg/urg-0.8.18.zip/md5/93f90d2ccc36e784407c5282ef6bd2cb URG_SOURCE = urg-$(URG_VERSION).zip URG_LICENSE = LGPLv3 URG_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/usb_modeswitch/usb_modeswitch.hash b/bsp/buildroot/package/usb_modeswitch/usb_modeswitch.hash index 075ef63b..807b63f0 100644 --- a/bsp/buildroot/package/usb_modeswitch/usb_modeswitch.hash +++ b/bsp/buildroot/package/usb_modeswitch/usb_modeswitch.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 f93e940c2eb0c585a5d2210177338e68a9b24f409e351e4a854132453246b894 usb-modeswitch-2.3.0.tar.bz2 +sha256 17dc32bf10df8e370f2369b5137d34dfd8f2347faaa51524c5f21c922f42e212 usb-modeswitch-2.4.0.tar.bz2 diff --git a/bsp/buildroot/package/usb_modeswitch/usb_modeswitch.mk b/bsp/buildroot/package/usb_modeswitch/usb_modeswitch.mk index ac41a80c..e196db58 100644 --- a/bsp/buildroot/package/usb_modeswitch/usb_modeswitch.mk +++ b/bsp/buildroot/package/usb_modeswitch/usb_modeswitch.mk @@ -4,7 +4,7 @@ # ################################################################################ -USB_MODESWITCH_VERSION = 2.3.0 +USB_MODESWITCH_VERSION = 2.4.0 USB_MODESWITCH_SOURCE = usb-modeswitch-$(USB_MODESWITCH_VERSION).tar.bz2 USB_MODESWITCH_SITE = http://www.draisberghof.de/usb_modeswitch USB_MODESWITCH_DEPENDENCIES = libusb diff --git a/bsp/buildroot/package/usbredir/usbredir.mk b/bsp/buildroot/package/usbredir/usbredir.mk index 926a1fff..6765a9ba 100644 --- a/bsp/buildroot/package/usbredir/usbredir.mk +++ b/bsp/buildroot/package/usbredir/usbredir.mk @@ -7,14 +7,14 @@ USBREDIR_VERSION = 0.7.1 USBREDIR_SOURCE = usbredir-$(USBREDIR_VERSION).tar.bz2 USBREDIR_SITE = http://spice-space.org/download/usbredir -USBREDIR_LICENSE = LGPLv2.1+ +USBREDIR_LICENSE = LGPLv2.1+ (libraries) USBREDIR_LICENSE_FILES = COPYING.LIB USBREDIR_INSTALL_STAGING = YES USBREDIR_DEPENDENCIES = host-pkgconf libusb ifeq ($(BR2_PACKAGE_USBREDIR_SERVER),y) -USBREDIR_LICENSE += (for the library), GPLv2+ (for the server) +USBREDIR_LICENSE := $(USBREDIR_LICENSE), GPLv2+ (program) USBREDIR_LICENSE_FILES += COPYING else # BR2_PACKAGE_USBREDIR_SERVER != y diff --git a/bsp/buildroot/package/ushare/0003-ushare-c-include-config-h-before-checking-for-CONFIG-NLS.patch b/bsp/buildroot/package/ushare/0003-ushare-c-include-config-h-before-checking-for-CONFIG-NLS.patch new file mode 100644 index 00000000..e97c3dea --- /dev/null +++ b/bsp/buildroot/package/ushare/0003-ushare-c-include-config-h-before-checking-for-CONFIG-NLS.patch @@ -0,0 +1,42 @@ +ushare.c: include config.h before checking for CONFIG_NLS + +When NLS support is enabled, we get following build errors: + + ushare.c: In function 'setup_i18n': + ushare.c:745:3: warning: implicit declaration of function 'setlocale' [-Wimplicit-function-declaration] + setlocale (LC_ALL, ""); + ^ + ushare.c:745:14: error: 'LC_ALL' undeclared (first use in this function) + setlocale (LC_ALL, ""); + ^ + ushare.c:745:14: note: each undeclared identifier is reported only once for each function it appears in + make[2]: *** [ushare.o] Error 1 + +When NLS support is enabled, configure script creates macro in config.h. +We check for CONFIG_NLS before including config.h which results in above +build errors as locale.h doesn't get included. + +This patch fixes above build error by including config.h before we check for +CONFIG_NLS. + +This build error is detected by Buildroot autobuilder +http://autobuild.buildroot.net/results/19d/19d67dd43e5a313c77e4be97ecb9811ffa52f797/ + +Signed-off-by: Rahul Bedarkar + +--- ushare-1.1a/src/ushare.c.old 2016-09-20 19:04:00.915239326 +0530 ++++ ushare-1.1a/src/ushare.c 2016-09-20 19:04:24.707239276 +0530 +@@ -56,11 +56,12 @@ + #include + #include + ++#include "config.h" ++ + #if (defined(HAVE_SETLOCALE) && defined(CONFIG_NLS)) + # include + #endif + +-#include "config.h" + #include "ushare.h" + #include "services.h" + #include "http.h" diff --git a/bsp/buildroot/package/ushare/ushare.mk b/bsp/buildroot/package/ushare/ushare.mk index 25f880c3..62d269c4 100644 --- a/bsp/buildroot/package/ushare/ushare.mk +++ b/bsp/buildroot/package/ushare/ushare.mk @@ -26,11 +26,11 @@ define USHARE_CONFIGURE_CMDS endef define USHARE_BUILD_CMDS - $(MAKE) LDFLAGS="$(TARGET_LDFLAGS) $(USHARE_LDFLAGS)" -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE) LDFLAGS="$(TARGET_LDFLAGS) $(USHARE_LDFLAGS)" -C $(@D) endef define USHARE_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install rm -f $(TARGET_DIR)/etc/init.d/ushare endef diff --git a/bsp/buildroot/package/ustr/ustr.mk b/bsp/buildroot/package/ustr/ustr.mk index 1d629ab8..715914ca 100644 --- a/bsp/buildroot/package/ustr/ustr.mk +++ b/bsp/buildroot/package/ustr/ustr.mk @@ -4,6 +4,8 @@ # ################################################################################ +# When bumping the version to a new upstream release, be sure to remove +# the ldconfig hack, below. USTR_VERSION = 1.0.4 USTR_SOURCE = ustr-$(USTR_VERSION).tar.bz2 USTR_SITE = http://www.and.org/ustr/$(USTR_VERSION) @@ -23,7 +25,8 @@ USTR_INSTALL_STAGING = YES # 'all-shared' to the default 'all' rule. USTR_MAKE_OPTS = all all-shared -USTR_MAKE_OPTS += LDCONFIG=/bin/true +USTR_CONF_OPTS += LDCONFIG=/bin/true +HOST_USTR_CONF_OPTS += LDCONFIG=/bin/true $(eval $(autotools-package)) $(eval $(host-autotools-package)) diff --git a/bsp/buildroot/package/ustream-ssl/Config.in b/bsp/buildroot/package/ustream-ssl/Config.in new file mode 100644 index 00000000..540e4368 --- /dev/null +++ b/bsp/buildroot/package/ustream-ssl/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_USTREAM_SSL + bool "ustream-ssl" + depends on !BR2_STATIC_LIBS #libubox + select BR2_PACKAGE_LIBUBOX + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS + help + ustream SSL wrapper + + https://git.openwrt.org/?p=project/ustream-ssl.git;a=summary + +comment "ustream-ssl needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/bsp/buildroot/package/ustream-ssl/ustream-ssl.mk b/bsp/buildroot/package/ustream-ssl/ustream-ssl.mk new file mode 100644 index 00000000..b83d129a --- /dev/null +++ b/bsp/buildroot/package/ustream-ssl/ustream-ssl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ustream-ssl +# +################################################################################ + +USTREAM_SSL_VERSION = ec80adaa1b47f28d426fa19c692011ce60b992d6 +USTREAM_SSL_SITE = git://git.openwrt.org/project/ustream-ssl.git +USTREAM_SSL_LICENSE = ISC +USTREAM_SSL_LICENSE_FILES = ustream-ssl.h +USTREAM_SSL_INSTALL_STAGING = YES +USTREAM_SSL_DEPENDENCIES = libubox + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +USTREAM_SSL_DEPENDENCIES += mbedtls +USTREAM_SSL_CONF_OPTS += -DMBEDTLS=ON +else +USTREAM_SSL_DEPENDENCIES += openssl +endif + +$(eval $(cmake-package)) diff --git a/bsp/buildroot/package/util-linux/0001-build-sys-fix-uClibc-ng-scanf-check.patch b/bsp/buildroot/package/util-linux/0001-build-sys-fix-uClibc-ng-scanf-check.patch deleted file mode 100644 index 801b72b2..00000000 --- a/bsp/buildroot/package/util-linux/0001-build-sys-fix-uClibc-ng-scanf-check.patch +++ /dev/null @@ -1,34 +0,0 @@ -From bac7fbdb2d141879526ca4342d56d2c749ba8af5 Mon Sep 17 00:00:00 2001 -From: Waldemar Brodkorb -Date: Fri, 3 Jun 2016 04:23:28 +0200 -Subject: [PATCH] build-sys: fix uClibc-ng scanf check - -uClibc-ng tries to be compatible with GNU libc and defines -__GLIBC__ and pretend to be version 2.2. -We once changed it to 2.10, but then some hard to fix problems -in different software packages (gcc) occured. -It would be better if we disable the special GNU libc checks -for uClibc-ng here. uClibc-ng implements the required scanf -functionality. - -Signed-off-by: Waldemar Brodkorb ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 3ba723f..ec197ee 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -581,7 +581,7 @@ AC_CACHE_VAL([scanf_cv_alloc_modifier], - #include - #include - -- #ifdef __GLIBC__ -+ #if defined(__GLIBC__) && !defined(__UCLIBC__) - - #if !(__GLIBC_PREREQ(2, 7)) - #error %m is not available --- -2.1.4 - diff --git a/bsp/buildroot/package/util-linux/0001-build-sys-use-lm-for-scriptreplay-if-necessary.patch b/bsp/buildroot/package/util-linux/0001-build-sys-use-lm-for-scriptreplay-if-necessary.patch new file mode 100644 index 00000000..cbf1a819 --- /dev/null +++ b/bsp/buildroot/package/util-linux/0001-build-sys-use-lm-for-scriptreplay-if-necessary.patch @@ -0,0 +1,30 @@ +From 02283be90292b2f57183aa930c4d69375f1d905d Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Wed, 18 Jan 2017 13:17:21 +0100 +Subject: [PATCH] build-sys: use -lm for scriptreplay if necessary + +Reported-by: Bert van Hall +Addresses: https://github.com/karelzak/util-linux/pull/397 +Signed-off-by: Karel Zak +(cherry picked from commit feda4342df1ced25df3d200ed23469e740196c86) +Signed-off-by: Carlos Santos +--- + term-utils/Makemodule.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/term-utils/Makemodule.am b/term-utils/Makemodule.am +index 1b7c5fc..ad1bb1f 100644 +--- a/term-utils/Makemodule.am ++++ b/term-utils/Makemodule.am +@@ -21,7 +21,7 @@ if BUILD_SCRIPTREPLAY + usrbin_exec_PROGRAMS += scriptreplay + dist_man_MANS += term-utils/scriptreplay.1 + scriptreplay_SOURCES = term-utils/scriptreplay.c +-scriptreplay_LDADD = $(LDADD) libcommon.la ++scriptreplay_LDADD = $(LDADD) libcommon.la $(MATH_LIBS) + endif # BUILD_SCRIPTREPLAY + + +-- +2.7.4 + diff --git a/bsp/buildroot/package/util-linux/Config.in b/bsp/buildroot/package/util-linux/Config.in index 657bcdd7..e957f848 100644 --- a/bsp/buildroot/package/util-linux/Config.in +++ b/bsp/buildroot/package/util-linux/Config.in @@ -1,6 +1,5 @@ menuconfig BR2_PACKAGE_UTIL_LINUX bool "util-linux" - depends on BR2_USE_WCHAR select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE help Various useful/essential linux libraries and utilities. @@ -12,22 +11,30 @@ menuconfig BR2_PACKAGE_UTIL_LINUX if BR2_PACKAGE_UTIL_LINUX config BR2_PACKAGE_UTIL_LINUX_LIBBLKID - select BR2_PACKAGE_UTIL_LINUX_LIBUUID - depends on BR2_USE_MMU # fork bool "libblkid" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBUUID help Install libblkid. -config BR2_PACKAGE_UTIL_LINUX_LIBMOUNT +config BR2_PACKAGE_UTIL_LINUX_LIBFDISK + bool "libfdisk" + depends on BR2_USE_MMU # fork() select BR2_PACKAGE_UTIL_LINUX_LIBBLKID - depends on BR2_USE_MMU # util-linux/libblkid + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Install libfdisk. + +config BR2_PACKAGE_UTIL_LINUX_LIBMOUNT bool "libmount" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID help Install libmount. config BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS bool "libsmartcols" - depends on BR2_USE_MMU # fork + depends on BR2_USE_MMU # fork() help Install libsmartcols. @@ -37,19 +44,30 @@ config BR2_PACKAGE_UTIL_LINUX_LIBUUID Install libuuid. config BR2_PACKAGE_UTIL_LINUX_BINARIES - bool "install utilities" + bool "basic set" depends on BR2_USE_MMU # fork() select BR2_PACKAGE_UTIL_LINUX_LIBBLKID select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBFDISK select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS select BR2_PACKAGE_UTIL_LINUX_LIBUUID help Install the basic set of util-linux binaries. -if BR2_PACKAGE_UTIL_LINUX_BINARIES + blkdiscard, blkid, blockdev, chcpu, col, colcrt, colrm, + column, ctrlaltdel, dmesg, fdisk, findfs, findmnt, flock, + fsfreeze, fstrim, getopt, hexdump, ipcmk, isosize, ldattach, + look, lsblk, lscpu, lsipc, lslocks, lsns, mcookie, mkfs, + mkswap, namei, prlimit, readprofile, renice, rev, rtcwake, + script, scriptreplay, setarch, setsid, sfdisk, swaplabel, + swapoff, swapon, tailf, uuidgen, whereis, wipefs + + The setarch utility also installs architecture-specific + symlinks like linux32, linux64, uname26, i386 and x86_64. config BR2_PACKAGE_UTIL_LINUX_AGETTY bool "agetty" + depends on BR2_USE_MMU # fork() help Alternative linux getty @@ -58,6 +76,11 @@ config BR2_PACKAGE_UTIL_LINUX_BFS help SCO bfs filesystem support +config BR2_PACKAGE_UTIL_LINUX_CAL + bool "cal" + help + Display a calendar, or some part of it + config BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH bool "chfn/chsh" depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam @@ -76,10 +99,14 @@ config BR2_PACKAGE_UTIL_LINUX_CRAMFS bool "cramfs utilities" select BR2_PACKAGE_ZLIB help - Build fsck.cramfs and mkfs.cramfs + Utilities for compressed ROM file system (fsck.cramfs, mkfs.cramfs) config BR2_PACKAGE_UTIL_LINUX_EJECT bool "eject" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBUUID help Eject removable media @@ -93,13 +120,12 @@ config BR2_PACKAGE_UTIL_LINUX_FDFORMAT help Low-level format a floppy disk -config BR2_PACKAGE_UTIL_LINUX_FINDFS - bool "findfs" - help - Find a filesystem by label or UUID - config BR2_PACKAGE_UTIL_LINUX_FSCK bool "fsck" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBUUID help Check and repair a linux filesystem @@ -108,6 +134,16 @@ config BR2_PACKAGE_UTIL_LINUX_HWCLOCK help Query or set the hardware clock (RTC) +config BR2_PACKAGE_UTIL_LINUX_IPCRM + bool "ipcrm" + help + Remove certain IPC resources + +config BR2_PACKAGE_UTIL_LINUX_IPCS + bool "ipcs" + help + Show information on IPC facilities + config BR2_PACKAGE_UTIL_LINUX_KILL bool "kill" help @@ -125,27 +161,37 @@ config BR2_PACKAGE_UTIL_LINUX_LINE config BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS bool "login utilities" + depends on BR2_USE_MMU # fork() (login, runuser, su, sulogin) depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam depends on !BR2_STATIC_LIBS depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam depends on BR2_USE_MMU # linux-pam select BR2_PACKAGE_LINUX_PAM help - Build login utilities (last, login, su, sulogin) + Login utilities (last, login, runuser, su, sulogin) comment "login utilities needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library" depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL +config BR2_PACKAGE_UTIL_LINUX_LOGGER + bool "logger" + help + Enter messages into the system log + config BR2_PACKAGE_UTIL_LINUX_LOSETUP bool "losetup" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS help Set up and control loop devices -config BR2_PACKAGE_UTIL_LINUX_LSBLK - bool "lsblk" +config BR2_PACKAGE_UTIL_LINUX_LSLOGINS + bool "lslogins" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS help - List block devices. + Display information about known users in the system config BR2_PACKAGE_UTIL_LINUX_MESG bool "mesg" @@ -159,17 +205,26 @@ config BR2_PACKAGE_UTIL_LINUX_MINIX config BR2_PACKAGE_UTIL_LINUX_MORE bool "more" + depends on BR2_USE_MMU # fork() select BR2_PACKAGE_NCURSES help File perusal filter for crt viewing config BR2_PACKAGE_UTIL_LINUX_MOUNT bool "mount/umount" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBUUID help Mount/unmount filesystems config BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT bool "mountpoint" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBUUID help See if a directory is a mountpoint @@ -185,17 +240,29 @@ config BR2_PACKAGE_UTIL_LINUX_NOLOGIN config BR2_PACKAGE_UTIL_LINUX_NSENTER bool "nsenter" + depends on BR2_USE_MMU # fork() depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 help - Enter the namespaces of another process. + Enter the namespaces of another process comment "nsenter needs a toolchain w/ headers >= 3.0" depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 +config BR2_PACKAGE_UTIL_LINUX_PG + bool "pg" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + Browse pagewise through text files + config BR2_PACKAGE_UTIL_LINUX_PARTX bool "partition utilities" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + select BR2_PACKAGE_UTIL_LINUX_LIBUUID help - Partition tools (addpart, delpart, partx) + Partition utilities (addpart, delpart, partx) config BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT bool "pivot_root" @@ -218,7 +285,7 @@ config BR2_PACKAGE_UTIL_LINUX_RESET Reset the terminal config BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS - bool "schedutils" + bool "scheduling utilities" help Scheduling utilities (chrt, ionice, taskset) @@ -236,6 +303,7 @@ config BR2_PACKAGE_UTIL_LINUX_SETTERM config BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT bool "switch_root" + depends on BR2_USE_MMU # fork() help Switch to another filesystem as the root of the mount tree @@ -253,6 +321,7 @@ config BR2_PACKAGE_UTIL_LINUX_UL config BR2_PACKAGE_UTIL_LINUX_UNSHARE bool "unshare" + depends on BR2_USE_MMU # fork() help Run program with some namespaces unshared from parent @@ -263,21 +332,27 @@ config BR2_PACKAGE_UTIL_LINUX_UTMPDUMP config BR2_PACKAGE_UTIL_LINUX_UUIDD bool "uuidd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBUUID help UUID generation daemon config BR2_PACKAGE_UTIL_LINUX_VIPW bool "vipw" + depends on BR2_USE_MMU # fork() help Edit the password, group, shadow-password or shadow-group file config BR2_PACKAGE_UTIL_LINUX_WALL bool "wall" + depends on BR2_USE_MMU # fork() help Send a message to everybody's terminal config BR2_PACKAGE_UTIL_LINUX_WDCTL bool "wdctl" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS help Shows hardware watchdog status @@ -288,12 +363,9 @@ config BR2_PACKAGE_UTIL_LINUX_WRITE config BR2_PACKAGE_UTIL_LINUX_ZRAMCTL bool "zramctl" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS help Set up and control zram devices endif - -endif - -comment "util-linux needs a toolchain w/ wchar" - depends on !BR2_USE_WCHAR diff --git a/bsp/buildroot/package/util-linux/su.pam b/bsp/buildroot/package/util-linux/su.pam index f000c39d..84b18605 100644 --- a/bsp/buildroot/package/util-linux/su.pam +++ b/bsp/buildroot/package/util-linux/su.pam @@ -7,7 +7,9 @@ account required pam_unix.so password required pam_unix.so nullok +# session required pam_selinux.so close session required pam_limits.so session required pam_env.so session required pam_unix.so session optional pam_lastlog.so +# session required pam_selinux.so open diff --git a/bsp/buildroot/package/util-linux/util-linux.hash b/bsp/buildroot/package/util-linux/util-linux.hash index ca581025..71b4982f 100644 --- a/bsp/buildroot/package/util-linux/util-linux.hash +++ b/bsp/buildroot/package/util-linux/util-linux.hash @@ -1,2 +1,2 @@ -# From https://www.kernel.org/pub/linux/utils/util-linux/v2.28/sha256sums.asc -sha256 395847e2a18a2c317170f238892751e73a57104565344f8644090c8b091014bb util-linux-2.28.tar.xz +# From https://www.kernel.org/pub/linux/utils/util-linux/v2.29/sha256sums.asc +sha256 accea4d678209f97f634f40a93b7e9fcad5915d1f4749f6c47bee6bf110fe8e3 util-linux-2.29.2.tar.xz diff --git a/bsp/buildroot/package/util-linux/util-linux.mk b/bsp/buildroot/package/util-linux/util-linux.mk index 9c7bd871..05e13989 100644 --- a/bsp/buildroot/package/util-linux/util-linux.mk +++ b/bsp/buildroot/package/util-linux/util-linux.mk @@ -4,16 +4,18 @@ # ################################################################################ -UTIL_LINUX_VERSION = 2.28 +UTIL_LINUX_VERSION_MAJOR = 2.29 +UTIL_LINUX_VERSION = $(UTIL_LINUX_VERSION_MAJOR).2 UTIL_LINUX_SOURCE = util-linux-$(UTIL_LINUX_VERSION).tar.xz -UTIL_LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/util-linux/v$(UTIL_LINUX_VERSION) +UTIL_LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/util-linux/v$(UTIL_LINUX_VERSION_MAJOR) + +# 0001-build-sys-use-lm-for-scriptreplay-if-necessary.patch +UTIL_LINUX_AUTORECONF = YES # README.licensing claims that some files are GPLv2-only, but this is not true. # Some files are GPLv3+ but only in tests. -UTIL_LINUX_LICENSE = GPLv2+, BSD-4c, libblkid and libmount LGPLv2.1+, libuuid BSD-3c +UTIL_LINUX_LICENSE = GPLv2+, BSD-4c, LGPLv2.1+ (libblkid, libfdisk, libmount), BSD-3c (libuuid) UTIL_LINUX_LICENSE_FILES = README.licensing Documentation/licenses/COPYING.GPLv2 Documentation/licenses/COPYING.UCB Documentation/licenses/COPYING.LGPLv2.1 Documentation/licenses/COPYING.BSD-3 -# For 0001-build-sys-fix-uClibc-ng-scanf-check.patch -UTIL_LINUX_AUTORECONF = YES UTIL_LINUX_INSTALL_STAGING = YES UTIL_LINUX_DEPENDENCIES = host-pkgconf # uClibc needs NTP_LEGACY for sys/timex.h -> ntp_gettime() support @@ -44,19 +46,51 @@ endif ifeq ($(BR2_PACKAGE_NCURSES),y) UTIL_LINUX_DEPENDENCIES += ncurses +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +UTIL_LINUX_CONF_OPTS += --with-ncursesw +UTIL_LINUX_CONF_ENV += NCURSESW5_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) else -UTIL_LINUX_CONF_OPTS += --without-ncurses +UTIL_LINUX_CONF_OPTS += --without-ncursesw --with-ncurses --disable-widechar +UTIL_LINUX_CONF_ENV += NCURSES5_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +endif +else +ifeq ($(BR2_USE_WCHAR),y) +UTIL_LINUX_CONF_OPTS += --enable-widechar +else +UTIL_LINUX_CONF_OPTS += --disable-widechar +endif +UTIL_LINUX_CONF_OPTS += --without-ncursesw --without-ncurses endif ifeq ($(BR2_NEEDS_GETTEXT_IF_LOCALE),y) UTIL_LINUX_DEPENDENCIES += gettext -UTIL_LINUX_MAKE_OPTS += LIBS=-lintl +UTIL_LINUX_LIBS += -lintl endif ifeq ($(BR2_PACKAGE_LIBCAP_NG),y) UTIL_LINUX_DEPENDENCIES += libcap-ng endif +# Unfortunately, the util-linux does LIBS="" at the end of its +# configure script. So we have to pass the proper LIBS value when +# calling the configure script to make configure tests pass properly, +# and then pass it again at build time. +UTIL_LINUX_CONF_ENV += LIBS="$(UTIL_LINUX_LIBS)" +UTIL_LINUX_MAKE_OPTS += LIBS="$(UTIL_LINUX_LIBS)" + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +UTIL_LINUX_DEPENDENCIES += libselinux +UTIL_LINUX_CONF_OPTS += --with-selinux +define UTIL_LINUX_SELINUX_PAMFILES_TWEAK + $(foreach f,su su-l, + $(SED) 's/^# \(.*pam_selinux.so.*\)$$/\1/' \ + $(TARGET_DIR)/etc/pam.d/$(f) + ) +endef +else +UTIL_LINUX_CONF_OPTS += --without-selinux +endif + # Used by cramfs utils UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib) @@ -65,26 +99,31 @@ UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_LINUX_PAM),linux-pam) # Disable/Enable utilities UTIL_LINUX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_UTIL_LINUX_BINARIES),--enable-all-programs,--disable-all-programs) \ $(if $(BR2_PACKAGE_UTIL_LINUX_AGETTY),--enable-agetty,--disable-agetty) \ $(if $(BR2_PACKAGE_UTIL_LINUX_BFS),--enable-bfs,--disable-bfs) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_CAL),--enable-cal,--disable-cal) \ $(if $(BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH),--enable-chfn-chsh,--disable-chfn-chsh) \ $(if $(BR2_PACKAGE_UTIL_LINUX_CRAMFS),--enable-cramfs,--disable-cramfs) \ $(if $(BR2_PACKAGE_UTIL_LINUX_EJECT),--enable-eject,--disable-eject) \ $(if $(BR2_PACKAGE_UTIL_LINUX_FALLOCATE),--enable-fallocate,--disable-fallocate) \ $(if $(BR2_PACKAGE_UTIL_LINUX_FDFORMAT),--enable-fdformat,--disable-fdformat) \ - $(if $(BR2_PACKAGE_UTIL_LINUX_FINDFS),--enable-findfs,--disable-findfs) \ $(if $(BR2_PACKAGE_UTIL_LINUX_FSCK),--enable-fsck,--disable-fsck) \ $(if $(BR2_PACKAGE_UTIL_LINUX_HWCLOCK),--enable-hwclock,--disable-hwclock) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_IPCRM),--enable-ipcrm,--disable-ipcrm) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_IPCS),--enable-ipcs,--disable-ipcs) \ $(if $(BR2_PACKAGE_UTIL_LINUX_KILL),--enable-kill,--disable-kill) \ $(if $(BR2_PACKAGE_UTIL_LINUX_LAST),--enable-last,--disable-last) \ $(if $(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),--enable-libblkid,--disable-libblkid) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),--enable-libfdisk,--disable-libfdisk) \ $(if $(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),--enable-libmount,--disable-libmount) \ $(if $(BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS),--enable-libsmartcols,--disable-libsmartcols) \ $(if $(BR2_PACKAGE_UTIL_LINUX_LIBUUID),--enable-libuuid,--disable-libuuid) \ $(if $(BR2_PACKAGE_UTIL_LINUX_LINE),--enable-line,--disable-line) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LOGGER),--enable-logger,--disable-logger) \ $(if $(BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS),--enable-last --enable-login --enable-runuser --enable-su --enable-sulogin,--disable-last --disable-login --disable-runuser --disable-su --disable-sulogin) \ $(if $(BR2_PACKAGE_UTIL_LINUX_LOSETUP),--enable-losetup,--disable-losetup) \ - $(if $(BR2_PACKAGE_UTIL_LINUX_LSBLK),--enable-lsblk,--disable-lsblk) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LSLOGINS),--enable-lslogins,--disable-lslogins) \ $(if $(BR2_PACKAGE_UTIL_LINUX_MESG),--enable-mesg,--disable-mesg) \ $(if $(BR2_PACKAGE_UTIL_LINUX_MINIX),--enable-minix,--disable-minix) \ $(if $(BR2_PACKAGE_UTIL_LINUX_MORE),--enable-more,--disable-more) \ @@ -94,6 +133,7 @@ UTIL_LINUX_CONF_OPTS += \ $(if $(BR2_PACKAGE_UTIL_LINUX_NOLOGIN),--enable-nologin,--disable-nologin) \ $(if $(BR2_PACKAGE_UTIL_LINUX_NSENTER),--enable-nsenter,--disable-nsenter) \ $(if $(BR2_PACKAGE_UTIL_LINUX_PARTX),--enable-partx,--disable-partx) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_PG),--enable-pg,--disable-pg) \ $(if $(BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT),--enable-pivot_root,--disable-pivot_root) \ $(if $(BR2_PACKAGE_UTIL_LINUX_RAW),--enable-raw,--disable-raw) \ $(if $(BR2_PACKAGE_UTIL_LINUX_RENAME),--enable-rename,--disable-rename) \ @@ -113,14 +153,17 @@ UTIL_LINUX_CONF_OPTS += \ $(if $(BR2_PACKAGE_UTIL_LINUX_WRITE),--enable-write,--disable-write) \ $(if $(BR2_PACKAGE_UTIL_LINUX_ZRAMCTL),--enable-zramctl,--disable-zramctl) -# In the host version of util-linux, we so far only require libuuid, -# and none of the util-linux utilities, so we disable all of them, unless -# BR2_PACKAGE_HOST_UTIL_LINUX is set +# In the host version of util-linux, we only require libuuid and +# libmount (plus libblkid as an indirect dependency of libmount). +# So disable all of the programs, unless BR2_PACKAGE_HOST_UTIL_LINUX is set HOST_UTIL_LINUX_CONF_OPTS += \ + --enable-libblkid \ + --enable-libmount \ --enable-libuuid \ - --disable-libblkid --disable-libmount \ - --without-ncurses + --without-ncurses \ + --without-ncursesw \ + --without-tinfo ifeq ($(BR2_PACKAGE_HOST_UTIL_LINUX),y) HOST_UTIL_LINUX_CONF_OPTS += --disable-makeinstall-chown @@ -130,12 +173,6 @@ else HOST_UTIL_LINUX_CONF_OPTS += --disable-all-programs endif -# Avoid building the tools if they are disabled since we can't install on -# a per-directory basis. -ifeq ($(BR2_PACKAGE_UTIL_LINUX_BINARIES),) -UTIL_LINUX_CONF_OPTS += --disable-all-programs -endif - # Install libmount Python bindings ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y) UTIL_LINUX_CONF_OPTS += --with-python @@ -149,6 +186,21 @@ else UTIL_LINUX_CONF_OPTS += --without-python endif +ifeq ($(BR2_PACKAGE_READLINE),y) +UTIL_LINUX_CONF_OPTS += --with-readline +UTIL_LINUX_LIBS += $(if $(BR2_STATIC_LIBS),-lcurses) +UTIL_LINUX_DEPENDENCIES += readline +else +UTIL_LINUX_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +UTIL_LINUX_CONF_OPTS += --with-audit +UTIL_LINUX_DEPENDENCIES += audit +else +UTIL_LINUX_CONF_OPTS += --without-audit +endif + # Install PAM configuration files ifeq ($(BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS),y) define UTIL_LINUX_INSTALL_PAMFILES @@ -156,6 +208,7 @@ define UTIL_LINUX_INSTALL_PAMFILES $(TARGET_DIR)/etc/pam.d/su $(INSTALL) -m 0644 package/util-linux/su.pam \ $(TARGET_DIR)/etc/pam.d/su-l + $(UTIL_LINUX_SELINUX_PAMFILES_TWEAK) endef endif @@ -182,9 +235,3 @@ endif $(eval $(autotools-package)) $(eval $(host-autotools-package)) - -# MKINSTALLDIRS comes from tweaked m4/nls.m4, but autoreconf uses staging -# one, so it disappears -UTIL_LINUX_INSTALL_STAGING_OPTS += MKINSTALLDIRS=$(@D)/config/mkinstalldirs -UTIL_LINUX_INSTALL_TARGET_OPTS += MKINSTALLDIRS=$(@D)/config/mkinstalldirs -HOST_UTIL_LINUX_INSTALL_OPTS += MKINSTALLDIRS=$(@D)/config/mkinstalldirs diff --git a/bsp/buildroot/package/ux500-firmware/ux500-firmware.mk b/bsp/buildroot/package/ux500-firmware/ux500-firmware.mk index 7e947f35..428ed342 100644 --- a/bsp/buildroot/package/ux500-firmware/ux500-firmware.mk +++ b/bsp/buildroot/package/ux500-firmware/ux500-firmware.mk @@ -8,13 +8,13 @@ UX500_FIRMWARE_VERSION = 1.1.3-6 UX500_FIRMWARE_SOURCE = ux500-firmware_$(UX500_FIRMWARE_VERSION)linaro1.tar.gz UX500_FIRMWARE_SITE = https://launchpad.net/~igloocommunity-maintainers/+archive/snowball/+files UX500_FIRMWARE_LICENSE = Snowball click-wrap license -UX500_FIRMWARE_LICENSE_FILES = license.txt +UX500_FIRMWARE_LICENSE_FILES = license.txt UX500_FIRMWARE_REDISTRIBUTE = NO # The CG2900 linux driver has to load firmware named CG29XX_* but the firmware # filenames contained in this package are CG2900_* hence the code below define UX500_FIRMWARE_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install for f in $(TARGET_DIR)/lib/firmware/CG2900* ; do \ mv $$f $${f/CG2900/CG29XX}; \ done diff --git a/bsp/buildroot/package/vala/vala.hash b/bsp/buildroot/package/vala/vala.hash index 93019643..ca5873c5 100644 --- a/bsp/buildroot/package/vala/vala.hash +++ b/bsp/buildroot/package/vala/vala.hash @@ -1,2 +1,2 @@ -# From https://download.gnome.org/sources/vala/0.32/vala-0.32.0.sha256sum -sha256 07a2aa4ede040789b4b5af817a42249d703bfe8affccb7732ca2b53d00c1fb6e vala-0.32.0.tar.xz +# From https://download.gnome.org/sources/vala/0.34/vala-0.34.4.sha256sum +sha256 6b17bd339414563ebc51f64b0b837919ea7552d8a8ffa71cdc837d25c9696b83 vala-0.34.4.tar.xz diff --git a/bsp/buildroot/package/vala/vala.mk b/bsp/buildroot/package/vala/vala.mk index b236c54f..dadfdfc1 100644 --- a/bsp/buildroot/package/vala/vala.mk +++ b/bsp/buildroot/package/vala/vala.mk @@ -4,8 +4,8 @@ # ################################################################################ -VALA_VERSION_MAJOR = 0.32 -VALA_VERSION = $(VALA_VERSION_MAJOR).0 +VALA_VERSION_MAJOR = 0.34 +VALA_VERSION = $(VALA_VERSION_MAJOR).4 VALA_SITE = http://download.gnome.org/sources/vala/$(VALA_VERSION_MAJOR) VALA_SOURCE = vala-$(VALA_VERSION).tar.xz VALA_LICENSE = LGPLv2.1+ diff --git a/bsp/buildroot/package/valgrind/0003-mips-replace-addi-with-addiu.patch b/bsp/buildroot/package/valgrind/0003-mips-replace-addi-with-addiu.patch deleted file mode 100644 index 624f6fa3..00000000 --- a/bsp/buildroot/package/valgrind/0003-mips-replace-addi-with-addiu.patch +++ /dev/null @@ -1,137 +0,0 @@ -mips: replace addi with addiu - -ADDI instruction has been removed in R6 so let's use ADDIU instead. - -This patch has been sent upstream: - - https://bugs.kde.org/show_bug.cgi?id=356112 - -Signed-off-by: Vicente Olivert Riera - -Index: valgrind/coregrind/m_dispatch/dispatch-mips32-linux.S -=================================================================== ---- valgrind/coregrind/m_dispatch/dispatch-mips32-linux.S (revision 15740) -+++ valgrind/coregrind/m_dispatch/dispatch-mips32-linux.S (working copy) -@@ -196,7 +196,7 @@ - addu $13, $13, $14 - - lw $12, 0($13) /* t3 = VG_(tt_fast)[hash] :: ULong* */ -- addi $13, $13, 4 -+ addiu $13, $13, 4 - lw $25, 0($13) /* little-endian, so comparing 1st 32bit word */ - nop - -Index: valgrind/coregrind/m_dispatch/dispatch-mips64-linux.S -=================================================================== ---- valgrind/coregrind/m_dispatch/dispatch-mips64-linux.S (revision 15740) -+++ valgrind/coregrind/m_dispatch/dispatch-mips64-linux.S (working copy) -@@ -196,7 +196,7 @@ - daddu $13, $13, $14 - - ld $12, 0($13) /* t3 = VG_(tt_fast)[hash] :: ULong* */ -- daddi $13, $13, 8 -+ daddiu $13, $13, 8 - ld $25, 0($13) /* little-endian, so comparing 1st 32bit word */ - nop - -Index: valgrind/coregrind/m_libcsetjmp.c -=================================================================== ---- valgrind/coregrind/m_libcsetjmp.c (revision 15740) -+++ valgrind/coregrind/m_libcsetjmp.c (working copy) -@@ -594,7 +594,7 @@ - /* Checking whether second argument is zero. */ - " bnez $a1, 1f \n\t" - " nop \n\t" --" addi $a1, $a1, 1 \n\t" /* We must return 1 if val=0. */ -+" addiu $a1, $a1, 1 \n\t" /* We must return 1 if val=0. */ - "1: \n\t" - " move $v0, $a1 \n\t" /* Return value of second argument. */ - " j $ra \n\t" -Index: valgrind/coregrind/m_syswrap/syswrap-mips64-linux.c -=================================================================== ---- valgrind/coregrind/m_syswrap/syswrap-mips64-linux.c (revision 15740) -+++ valgrind/coregrind/m_syswrap/syswrap-mips64-linux.c (working copy) -@@ -173,7 +173,7 @@ - " ld $30, 8($29)\n" - " ld $28, 16($29)\n" - " jr $31\n" --" daddi $29,$29, 32\n" -+" daddiu $29,$29, 32\n" - ".previous\n" - ); - -Index: valgrind/coregrind/m_trampoline.S -=================================================================== ---- valgrind/coregrind/m_trampoline.S (revision 15740) -+++ valgrind/coregrind/m_trampoline.S (working copy) -@@ -1254,8 +1254,8 @@ - //la $a0, string - j strlen_cond - strlen_loop: -- addi $v0, $v0, 1 -- addi $a0, $a0, 1 -+ addiu $v0, $v0, 1 -+ addiu $a0, $a0, 1 - strlen_cond: - lbu $t0, ($a0) - bne $t0, $zero, strlen_loop -Index: valgrind/helgrind/tests/tc08_hbl2.c -=================================================================== ---- valgrind/helgrind/tests/tc08_hbl2.c (revision 15740) -+++ valgrind/helgrind/tests/tc08_hbl2.c (working copy) -@@ -125,11 +125,11 @@ - # define INC(_lval,_lqual) \ - __asm__ __volatile__ ( \ - "L1xyzzy1" _lqual":\n" \ -- " move $t0, %0\n" \ -- " ll $t1, 0($t0)\n" \ -- " addi $t1, $t1, 1\n" \ -- " sc $t1, 0($t0)\n" \ -- " beqz $t1, L1xyzzy1" _lqual \ -+ " move $t0, %0\n" \ -+ " ll $t1, 0($t0)\n" \ -+ " addiu $t1, $t1, 1\n" \ -+ " sc $t1, 0($t0)\n" \ -+ " beqz $t1, L1xyzzy1" _lqual \ - : /*out*/ : /*in*/ "r"(&(_lval)) \ - : /*trash*/ "t0", "t1", "memory" \ - ) -Index: valgrind/VEX/priv/guest_mips_toIR.c -=================================================================== ---- valgrind/VEX/priv/guest_mips_toIR.c (revision 3206) -+++ valgrind/VEX/priv/guest_mips_toIR.c (working copy) -@@ -16794,6 +16794,7 @@ - mkU64(0x0) : mkU32(0x0)))), imm); - break; - -+#if defined(__mips__) && ((defined(__mips_isa_rev) && __mips_isa_rev < 6)) - case 0x08: { /* ADDI */ - DIP("addi r%u, r%u, %u", rt, rs, imm); - IRTemp tmpRs32 = newTemp(Ity_I32); -@@ -16831,6 +16832,8 @@ - putIReg(rt, mkWidenFrom32(ty, mkexpr(t0), True)); - break; - } -+#endif -+ - case 0x09: /* ADDIU */ - DIP("addiu r%u, r%u, %u", rt, rs, imm); - if (mode64) { -@@ -16888,7 +16891,8 @@ - mkU32(extend_s_16to32(imm))))); - break; - -- case 0x18: { /* Doubleword Add Immidiate - DADD; MIPS64 */ -+#if defined(__mips__) && ((defined(__mips_isa_rev) && __mips_isa_rev < 6)) -+ case 0x18: { /* Doubleword Add Immidiate - DADDI; MIPS64 */ - DIP("daddi r%u, r%u, %u", rt, rs, imm); - IRTemp tmpRs64 = newTemp(Ity_I64); - assign(tmpRs64, getIReg(rs)); -@@ -16926,6 +16930,7 @@ - putIReg(rt, mkexpr(t0)); - break; - } -+#endif - - case 0x19: /* Doubleword Add Immidiate Unsigned - DADDIU; MIPS64 */ - DIP("daddiu r%u, r%u, %u", rt, rs, imm); diff --git a/bsp/buildroot/package/valgrind/valgrind.hash b/bsp/buildroot/package/valgrind/valgrind.hash index f2cd6e84..5d7da19a 100644 --- a/bsp/buildroot/package/valgrind/valgrind.hash +++ b/bsp/buildroot/package/valgrind/valgrind.hash @@ -1,2 +1,2 @@ # From http://valgrind.org/downloads/current.html -md5 4ea62074da73ae82e0162d6550d3f129 valgrind-3.11.0.tar.bz2 +md5 6eb03c0c10ea917013a7622e483d61bb valgrind-3.12.0.tar.bz2 diff --git a/bsp/buildroot/package/valgrind/valgrind.mk b/bsp/buildroot/package/valgrind/valgrind.mk index 46ba13eb..ccc6cc39 100644 --- a/bsp/buildroot/package/valgrind/valgrind.mk +++ b/bsp/buildroot/package/valgrind/valgrind.mk @@ -4,22 +4,25 @@ # ################################################################################ -VALGRIND_VERSION = 3.11.0 +VALGRIND_VERSION = 3.12.0 VALGRIND_SITE = http://valgrind.org/downloads VALGRIND_SOURCE = valgrind-$(VALGRIND_VERSION).tar.bz2 -VALGRIND_LICENSE = GPLv2 GFDLv1.2 +VALGRIND_LICENSE = GPLv2, GFDLv1.2 VALGRIND_LICENSE_FILES = COPYING COPYING.DOCS -VALGRIND_CONF_OPTS = --disable-ubsan +VALGRIND_CONF_OPTS = \ + --disable-ubsan \ + --without-mpicc VALGRIND_INSTALL_STAGING = YES # patch 0004-Fixes-for-musl-libc.patch touching configure.ac VALGRIND_AUTORECONF = YES -ifeq ($(BR2_GCC_ENABLE_TLS),y) -VALGRIND_CONF_OPTS += --enable-tls -else -VALGRIND_CONF_OPTS += --disable-tls -endif +# Valgrind must be compiled with no stack protection, so forcefully +# pass -fno-stack-protector to override what Buildroot may have in +# TARGET_CFLAGS if BR2_SSP_* support is enabled. +VALGRIND_CFLAGS = \ + $(TARGET_CFLAGS) \ + -fno-stack-protector # When Valgrind detects a 32-bit MIPS architecture, it forcibly adds # -march=mips32 to CFLAGS; when it detects a 64-bit MIPS architecture, @@ -31,9 +34,11 @@ endif # and pass the right -march option, so they take precedence over # Valgrind's wrongfully detected value. ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) -VALGRIND_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -march=$(BR2_GCC_TARGET_ARCH)" +VALGRIND_CFLAGS += -march=$(BR2_GCC_TARGET_ARCH) endif +VALGRIND_CONF_ENV = CFLAGS="$(VALGRIND_CFLAGS)" + # On ARM, Valgrind only supports ARMv7, and uses the arch part of the # host tuple to determine whether it's being built for ARMv7 or # not. Therefore, we adjust the host tuple to specify we're on diff --git a/bsp/buildroot/package/vde2/vde2.mk b/bsp/buildroot/package/vde2/vde2.mk index b750adbb..3bbfd5f5 100644 --- a/bsp/buildroot/package/vde2/vde2.mk +++ b/bsp/buildroot/package/vde2/vde2.mk @@ -27,11 +27,11 @@ VDE2_AUTORECONF = YES # in future commits. VDE2_CONF_OPTS = \ --disable-cryptcab \ - --disable-experimental \ - --disable-kernel-switch \ + --disable-experimental \ + --disable-kernel-switch \ --disable-pcap \ --disable-profile \ - --disable-python \ + --disable-python \ --enable-tuntap # Package does not build in parallel due to improper make rules @@ -39,11 +39,11 @@ VDE2_MAKE = $(MAKE1) HOST_VDE2_CONF_OPTS = \ --disable-cryptcab \ - --disable-experimental \ - --disable-kernel-switch \ + --disable-experimental \ + --disable-kernel-switch \ --disable-pcap \ --disable-profile \ - --disable-python \ + --disable-python \ --enable-tuntap HOST_VDE2_MAKE = $(MAKE1) diff --git a/bsp/buildroot/package/vdr-plugin-vnsiserver/Config.in b/bsp/buildroot/package/vdr-plugin-vnsiserver/Config.in new file mode 100644 index 00000000..0a0ab8d3 --- /dev/null +++ b/bsp/buildroot/package/vdr-plugin-vnsiserver/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_VDR_PLUGIN_VNSISERVER + bool "vdr-plugin-vnsiserver" + depends on BR2_PACKAGE_VDR + help + VDR plugin to handle KODI clients. + The vdr-plugin-vnsiserver is able to handle serveral KODI + clients connecting via the VNSI addon. + + https://github.com/FernetMenta/vdr-plugin-vnsiserver diff --git a/bsp/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash b/bsp/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash new file mode 100644 index 00000000..cf403f50 --- /dev/null +++ b/bsp/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 fd00fb6d833cad6a32a0d8259bb125abdf1716680650ba24b34bca2201745877 vdr-plugin-vnsiserver-v1.5.0.tar.gz diff --git a/bsp/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk b/bsp/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk new file mode 100644 index 00000000..aaa0859e --- /dev/null +++ b/bsp/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# vdr-plugin-vnsiserver +# +################################################################################ + +VDR_PLUGIN_VNSISERVER_VERSION = v1.5.0 +VDR_PLUGIN_VNSISERVER_SITE = $(call github,FernetMenta,vdr-plugin-vnsiserver,$(VDR_PLUGIN_VNSISERVER_VERSION)) +VDR_PLUGIN_VNSISERVER_LICENSE = GPLv2+ +VDR_PLUGIN_VNSISERVER_LICENSE_FILES = COPYING +VDR_PLUGIN_VNSISERVER_DEPENDENCIES = vdr + +VDR_PLUGIN_VNSISERVER_CXXFLAGS = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11 -fPIC" + +define VDR_PLUGIN_VNSISERVER_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(VDR_PLUGIN_VNSISERVER_CXXFLAGS) +endef + +define VDR_PLUGIN_VNSISERVER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + install DESTDIR=$(TARGET_DIR) LIBDIR=/usr/lib/vdr +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/vdr/0001-getloadavg.patch b/bsp/buildroot/package/vdr/0001-getloadavg.patch new file mode 100644 index 00000000..3937c83d --- /dev/null +++ b/bsp/buildroot/package/vdr/0001-getloadavg.patch @@ -0,0 +1,55 @@ +Fix compilation with uClibc + +Ported from +https://github.com/stschake/buildroot-grasshopper/blob/master/package/torsmo/torsmo-0.18-uclibc-getloadavg.patch + +Signed-off-by: Bernd Kuhls + +diff -uwNr vdr-2.3.1.org/skinlcars.c vdr-2.3.1/skinlcars.c +--- vdr-2.3.1.org/skinlcars.c 2015-09-01 12:07:07.000000000 +0200 ++++ vdr-2.3.1/skinlcars.c 2016-07-31 21:00:11.000000000 +0200 +@@ -1099,6 +1099,44 @@ + } + } + ++/* uclibc and dietlibc do not have this junk -ReneR */ ++#if defined (__UCLIBC__) || defined (__dietlibc__) ++static int getloadavg (double loadavg[], int nelem) ++{ ++ int fd; ++ ++ fd = open ("/proc/loadavg", O_RDONLY); ++ if (fd < 0) ++ return -1; ++ else ++ { ++ char buf[65], *p; ++ ssize_t nread; ++ int i; ++ ++ nread = read (fd, buf, sizeof buf - 1); ++ close (fd); ++ if (nread <= 0) ++ return -1; ++ buf[nread - 1] = '\0'; ++ ++ if (nelem > 3) ++ nelem = 3; ++ p = buf; ++ for (i = 0; i < nelem; ++i) ++ { ++ char *endp; ++ loadavg[i] = strtod (p, &endp); ++ if (endp == p) ++ return -1; ++ p = endp; ++ } ++ ++ return i; ++ } ++} ++#endif ++ + void cSkinLCARSDisplayMenu::DrawLoad(void) + { + if (yb04) { diff --git a/bsp/buildroot/package/vdr/0002-libjpeg.patch b/bsp/buildroot/package/vdr/0002-libjpeg.patch new file mode 100644 index 00000000..dbd1f128 --- /dev/null +++ b/bsp/buildroot/package/vdr/0002-libjpeg.patch @@ -0,0 +1,40 @@ +Fix compilation with libjpeg + +Patch inspired by upstream board: +http://www.vdr-portal.de/board16-video-disk-recorder/board4-vdr-installation/p1189959-vdr-2-05-mit-libjpeg-9a-kommt-nicht-aus/#post1189959 + +Signed-off-by: Bernd Kuhls + +diff -uNr vdr-2.3.1.org/tools.c vdr-2.3.1/tools.c +--- vdr-2.3.1.org/tools.c 2015-09-10 15:17:55.000000000 +0200 ++++ vdr-2.3.1/tools.c 2016-08-01 06:37:44.000000000 +0200 +@@ -1254,15 +1254,15 @@ + } + else { + esyslog("ERROR: out of memory"); +- return false; ++ return FALSE; + } + if (jcd->mem) { + cinfo->dest->next_output_byte = jcd->mem + Used; + cinfo->dest->free_in_buffer = jcd->size - Used; +- return true; ++ return TRUE; + } + } +- return false; ++ return FALSE; + } + + static void JpegCompressTermDestination(j_compress_ptr cinfo) +@@ -1307,8 +1307,8 @@ + cinfo.in_color_space = JCS_RGB; + + jpeg_set_defaults(&cinfo); +- jpeg_set_quality(&cinfo, Quality, true); +- jpeg_start_compress(&cinfo, true); ++ jpeg_set_quality(&cinfo, Quality, TRUE); ++ jpeg_start_compress(&cinfo, TRUE); + + int rs = Width * 3; + JSAMPROW rp[Height]; diff --git a/bsp/buildroot/package/vdr/Config.in b/bsp/buildroot/package/vdr/Config.in new file mode 100644 index 00000000..d283b462 --- /dev/null +++ b/bsp/buildroot/package/vdr/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_VDR + bool "vdr" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_TOOLCHAIN_USES_MUSL # _nl_msg_cat_cntr + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + This project describes how to build your own digital + satellite receiver and Video Disk Recorder. + + http://www.tvdr.de + +comment "vdr needs a glibc or uClibc toolchain w/ C++, dynamic library, NPTL, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_TOOLCHAIN_USES_MUSL || !BR2_USE_WCHAR diff --git a/bsp/buildroot/package/vdr/vdr.hash b/bsp/buildroot/package/vdr/vdr.hash new file mode 100644 index 00000000..edbcd3fc --- /dev/null +++ b/bsp/buildroot/package/vdr/vdr.hash @@ -0,0 +1,4 @@ +# From https://www.linuxtv.org/pipermail/vdr/2016-December/029178.html +md5 6dbb208ea3d59658a18912b49af175b3 vdr-2.3.2.tar.bz2 +# Locally computed +sha256 6c6ab08cf4dadd296e5e4a1c13f793c2e9222ec23103ae7aa9d616619f1496c0 vdr-2.3.2.tar.bz2 diff --git a/bsp/buildroot/package/vdr/vdr.mk b/bsp/buildroot/package/vdr/vdr.mk new file mode 100644 index 00000000..cdfa7e3a --- /dev/null +++ b/bsp/buildroot/package/vdr/vdr.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# vdr +# +################################################################################ + +VDR_VERSION = 2.3.2 +VDR_SOURCE = vdr-$(VDR_VERSION).tar.bz2 +VDR_SITE = ftp://ftp.tvdr.de/vdr/Developer +VDR_LICENSE = GPLv2+ +VDR_LICENSE_FILES = COPYING +VDR_INSTALL_STAGING = YES +VDR_DEPENDENCIES = \ + freetype \ + fontconfig \ + jpeg \ + libcap + +VDR_INCLUDE_DIRS = -I$(STAGING_DIR)/usr/include/freetype2 +VDR_MAKE_FLAGS = \ + NO_KBD=yes \ + PLUGINLIBDIR=/usr/lib/vdr \ + PREFIX=/usr \ + VIDEODIR=/var/lib/vdr + +ifeq ($(BR2_NEEDS_GETTEXT),y) +VDR_DEPENDENCIES += gettext +VDR_LDFLAGS += -lintl +endif + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +VDR_DEPENDENCIES += libfribidi +VDR_INCLUDE_DIRS += -I$(STAGING_DIR)/usr/include/fribidi +VDR_LDFLAGS += -lfribidi +VDR_MAKE_FLAGS += BIDI=1 +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +VDR_DEPENDENCIES += libiconv +VDR_LDFLAGS += -liconv +endif + +VDR_MAKE_ENV = \ + INCLUDES="$(VDR_INCLUDE_DIRS)" \ + LDFLAGS="$(VDR_LDFLAGS)" \ + $(VDR_MAKE_FLAGS) + +define VDR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(VDR_MAKE_ENV) \ + vdr vdr.pc include-dir +endef + +define VDR_INSTALL_STAGING_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(VDR_MAKE_ENV) \ + DESTDIR=$(STAGING_DIR) \ + install-dirs install-bin install-conf install-includes \ + install-pc +endef + +define VDR_INSTALL_TARGET_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(VDR_MAKE_ENV) \ + DESTDIR=$(TARGET_DIR) \ + install-dirs install-bin install-conf +endef + +$(eval $(generic-package)) diff --git a/bsp/buildroot/package/vim/vim.hash b/bsp/buildroot/package/vim/vim.hash index bb2d0139..28c6b97e 100644 --- a/bsp/buildroot/package/vim/vim.hash +++ b/bsp/buildroot/package/vim/vim.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 7c90f16e1d1547a864f4419cd7d066ca4ce822de285b2a718f9274e5241fe2fd vim-v7.4.1902.tar.gz +sha256 6fbe0ec1228f951ba598b48ac8033f41ca4934cc34689a6008685e7c26477ae2 vim-v8.0.0329.tar.gz diff --git a/bsp/buildroot/package/vim/vim.mk b/bsp/buildroot/package/vim/vim.mk index c2f6cac7..ec494608 100644 --- a/bsp/buildroot/package/vim/vim.mk +++ b/bsp/buildroot/package/vim/vim.mk @@ -4,7 +4,7 @@ # ################################################################################ -VIM_VERSION = v7.4.1902 +VIM_VERSION = v8.0.0329 VIM_SITE = $(call github,vim,vim,$(VIM_VERSION)) # Win over busybox vi since vim is more feature-rich VIM_DEPENDENCIES = \ @@ -49,19 +49,19 @@ endif define VIM_INSTALL_TARGET_CMDS cd $(@D)/src; \ - $(MAKE) DESTDIR=$(TARGET_DIR) installvimbin; \ - $(MAKE) DESTDIR=$(TARGET_DIR) installtools; \ - $(MAKE) DESTDIR=$(TARGET_DIR) installlinks + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installvimbin; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installtools; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installlinks endef define VIM_INSTALL_RUNTIME_CMDS cd $(@D)/src; \ - $(MAKE) DESTDIR=$(TARGET_DIR) installrtbase; \ - $(MAKE) DESTDIR=$(TARGET_DIR) installmacros + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installrtbase; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installmacros endef define VIM_REMOVE_DOCS - find $(TARGET_DIR)/usr/share/vim -type f -name "*.txt" -delete + $(RM) -rf $(TARGET_DIR)/usr/share/vim/vim*/doc/ endef # Avoid oopses with vipw/vigr, lack of $EDITOR and 'vi' command expectation diff --git a/bsp/buildroot/package/vlc/0009-ffmpeg-3.0.patch b/bsp/buildroot/package/vlc/0009-ffmpeg-3.0.patch new file mode 100644 index 00000000..892c625c --- /dev/null +++ b/bsp/buildroot/package/vlc/0009-ffmpeg-3.0.patch @@ -0,0 +1,283 @@ +Changes for ffmpeg 3.0 + +This file is a copy of debian/patches/04_ffmpeg-3.0.diff, to be found in +http://www.deb-multimedia.org/pool/main/v/vlc-dmo/vlc-dmo_2.2.4.orig.tar.gz + +Signed-off-by: Bernd Kuhls + +--- a/configure.ac ++++ b/configure.ac +@@ -2324,7 +2324,7 @@ AC_ARG_ENABLE(avcodec, + AS_IF([test "${enable_avcodec}" != "no"], [ + PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 53.34.0 libavutil >= 51.22.0], [ + PKG_CHECK_EXISTS([libavutil < 55],, [ +- AC_MSG_ERROR([libavutil versions 55 and later are not supported.]) ++ AC_MSG_WARN([libavutil versions 55 and later are not supported.]) + ]) + VLC_SAVE_FLAGS + CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}" +@@ -2334,7 +2334,7 @@ AS_IF([test "${enable_avcodec}" != "no"] + VLC_RESTORE_FLAGS + have_avcodec="yes" + ],[ +- AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.]) ++ AC_MSG_WARN([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.]) + ]) + ], [ + have_avcodec="no" +@@ -2383,7 +2383,7 @@ AS_IF([test "${have_vaapi}" = "yes" -a " + case "${avfork}" in + ffmpeg) + PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ +- AC_MSG_ERROR([VA API requires FFmpeg libavcodec < 57.10 or libav.]) ++ AC_MSG_WARN([VA API requires FFmpeg libavcodec < 57.10 or libav.]) + ]) + ;; + esac +@@ -2417,7 +2417,7 @@ AS_IF([test "${enable_dxva2}" != "no"], + case "${avfork}" in + ffmpeg) + PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ +- AC_MSG_ERROR([DXVA2 requires FFmpeg libavcodec < 57.10 or libav.]) ++ AC_MSG_WARN([DXVA2 requires FFmpeg libavcodec < 57.10 or libav.]) + ]) + ;; + esac +@@ -2509,7 +2509,7 @@ AS_IF([test "${enable_avformat}" != "no" + ]) + VLC_RESTORE_FLAGS + ],[ +- AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.]) ++ AC_MSG_WARN([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.]) + ]) + ]) + AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"]) +@@ -2538,7 +2538,7 @@ then + ]) + VLC_RESTORE_FLAGS + ],[ +- AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.]) ++ AC_MSG_WARN([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.]) + ]) + fi + +@@ -3181,7 +3181,7 @@ AS_IF([test "${have_vdpau}" = "yes" -a " + libav) av_vdpau_ver="55.26.0" ;; + ffmpeg) av_vdpau_ver="55.42.100" + PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ +- AC_MSG_ERROR([VDPAU requires FFmpeg libavcodec < 57.10 or libav.]) ++ AC_MSG_WARN([VDPAU requires FFmpeg libavcodec < 57.10 or libav.]) + ]) + ;; + esac +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -39,7 +39,7 @@ + #include + #include + +-#include ++#include + + #include "avcodec.h" + +--- a/modules/codec/avcodec/video.c ++++ b/modules/codec/avcodec/video.c +@@ -108,8 +108,8 @@ static int lavc_GetFrame(struct AVCodecC + static int ffmpeg_GetFrameBuf ( struct AVCodecContext *, AVFrame * ); + static void ffmpeg_ReleaseFrameBuf( struct AVCodecContext *, AVFrame * ); + #endif +-static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *, +- const enum PixelFormat * ); ++static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *, ++ const enum AVPixelFormat * ); + + static uint32_t ffmpeg_CodecTag( vlc_fourcc_t fcc ) + { +@@ -234,7 +234,7 @@ int InitVideoDec( decoder_t *p_dec, AVCo + p_sys->p_codec = p_codec; + p_sys->i_codec_id = i_codec_id; + p_sys->psz_namecodec = psz_namecodec; +- p_sys->p_ff_pic = avcodec_alloc_frame(); ++ p_sys->p_ff_pic = av_frame_alloc(); + p_sys->b_delayed_open = true; + p_sys->p_va = NULL; + vlc_sem_init( &p_sys->sem_mt, 0 ); +@@ -446,7 +446,7 @@ int InitVideoDec( decoder_t *p_dec, AVCo + if( ffmpeg_OpenCodec( p_dec ) < 0 ) + { + msg_Err( p_dec, "cannot open codec (%s)", p_sys->psz_namecodec ); +- avcodec_free_frame( &p_sys->p_ff_pic ); ++ av_frame_free( &p_sys->p_ff_pic ); + vlc_sem_destroy( &p_sys->sem_mt ); + free( p_sys ); + return VLC_EGENERIC; +@@ -826,7 +826,7 @@ void EndVideoDec( decoder_t *p_dec ) + wait_mt( p_sys ); + + if( p_sys->p_ff_pic ) +- avcodec_free_frame( &p_sys->p_ff_pic ); ++ av_frame_free( &p_sys->p_ff_pic ); + + if( p_sys->p_va ) + vlc_va_Delete( p_sys->p_va ); +@@ -1313,8 +1313,8 @@ static void ffmpeg_ReleaseFrameBuf( stru + } + #endif + +-static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context, +- const enum PixelFormat *pi_fmt ) ++static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *p_context, ++ const enum AVPixelFormat *pi_fmt ) + { + decoder_t *p_dec = p_context->opaque; + decoder_sys_t *p_sys = p_dec->p_sys; +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -41,7 +41,7 @@ + #include + + #include +-#include ++#include + + #include "avcodec.h" + #include "avcommon.h" +@@ -311,7 +311,7 @@ int OpenEncoder( vlc_object_t *p_this ) + else if( !GetFfmpegCodec( p_enc->fmt_out.i_codec, &i_cat, &i_codec_id, + &psz_namecodec ) ) + { +- if( FindFfmpegChroma( p_enc->fmt_out.i_codec ) == PIX_FMT_NONE ) ++ if( FindFfmpegChroma( p_enc->fmt_out.i_codec ) == AV_PIX_FMT_NONE ) + return VLC_EGENERIC; /* handed chroma output */ + + i_cat = VIDEO_ES; +@@ -555,7 +555,7 @@ int OpenEncoder( vlc_object_t *p_this ) + + if( p_codec->pix_fmts ) + { +- const enum PixelFormat *p = p_codec->pix_fmts; ++ const enum AVPixelFormat *p = p_codec->pix_fmts; + for( ; *p != -1; p++ ) + { + if( *p == p_context->pix_fmt ) break; +@@ -1017,7 +1017,7 @@ errmsg: + } + } + +- p_sys->frame = avcodec_alloc_frame(); ++ p_sys->frame = av_frame_alloc(); + if( !p_sys->frame ) + { + goto error; +@@ -1048,7 +1048,7 @@ static void vlc_av_packet_Release(block_ + { + vlc_av_packet_t *b = (void *) block; + +- av_free_packet(&b->packet); ++ av_packet_unref(&b->packet); + free(b); + } + +@@ -1088,7 +1088,7 @@ static block_t *EncodeVideo( encoder_t * + AVFrame *frame = NULL; + if( likely(p_pict) ) { + frame = p_sys->frame; +- avcodec_get_frame_defaults( frame ); ++ av_frame_unref( frame ); + for( i_plane = 0; i_plane < p_pict->i_planes; i_plane++ ) + { + p_sys->frame->data[i_plane] = p_pict->p[i_plane].p_pixels; +@@ -1188,7 +1188,7 @@ static block_t *EncodeVideo( encoder_t * + av_pkt.duration / p_sys->p_context->time_base.den, p_sys->p_context ); + if( unlikely(p_block == NULL) ) + { +- av_free_packet( &av_pkt ); ++ av_packet_unref( &av_pkt ); + return NULL; + } + +@@ -1329,7 +1329,7 @@ static block_t *handle_delay_buffer( enc + //How much we need to copy from new packet + const int leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes; + +- avcodec_get_frame_defaults( p_sys->frame ); ++ av_frame_unref( p_sys->frame ); + p_sys->frame->format = p_sys->p_context->sample_fmt; + p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay; + +@@ -1451,7 +1451,7 @@ static block_t *EncodeAudio( encoder_t * + while( ( p_aout_buf->i_nb_samples >= p_sys->i_frame_size ) || + ( p_sys->b_variable && p_aout_buf->i_nb_samples ) ) + { +- avcodec_get_frame_defaults( p_sys->frame ); ++ av_frame_unref( p_sys->frame ); + if( p_sys->b_variable ) + p_sys->frame->nb_samples = p_aout_buf->i_nb_samples; + else +@@ -1514,7 +1514,7 @@ void CloseEncoder( vlc_object_t *p_this + encoder_t *p_enc = (encoder_t *)p_this; + encoder_sys_t *p_sys = p_enc->p_sys; + +- /*FIXME: we should use avcodec_free_frame, but we don't require so new avcodec that has it*/ ++ /*FIXME: we should use av_frame_free, but we don't require so new avcodec that has it*/ + av_freep( &p_sys->frame ); + + vlc_avcodec_lock(); +--- a/modules/demux/avformat/demux.c ++++ b/modules/demux/avformat/demux.c +@@ -734,14 +734,14 @@ static int Demux( demux_t *p_demux ) + } + if( pkt.stream_index < 0 || pkt.stream_index >= p_sys->i_tk ) + { +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 1; + } + const AVStream *p_stream = p_sys->ic->streams[pkt.stream_index]; + if( p_stream->time_base.den <= 0 ) + { + msg_Warn( p_demux, "Invalid time base for the stream %d", pkt.stream_index ); +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 1; + } + if( p_stream->codec->codec_id == AV_CODEC_ID_SSA ) +@@ -749,7 +749,7 @@ static int Demux( demux_t *p_demux ) + p_frame = BuildSsaFrame( &pkt, p_sys->i_ssa_order++ ); + if( !p_frame ) + { +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 1; + } + } +@@ -757,7 +757,7 @@ static int Demux( demux_t *p_demux ) + { + if( ( p_frame = block_Alloc( pkt.size ) ) == NULL ) + { +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 0; + } + memcpy( p_frame->p_buffer, pkt.data, pkt.size ); +@@ -838,7 +838,7 @@ static int Demux( demux_t *p_demux ) + else + block_Release( p_frame ); + +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 1; + } + +--- a/modules/codec/avcodec/vaapi.c ++++ b/modules/codec/avcodec/vaapi.c +@@ -595,7 +595,7 @@ static int Create( vlc_va_t *p_va, AVCod + return err; + + /* Only VLD supported */ +- p_va->pix_fmt = PIX_FMT_VAAPI_VLD; ++ p_va->pix_fmt = AV_PIX_FMT_VAAPI_VLD; + p_va->setup = Setup; + p_va->get = Get; + p_va->release = Release; diff --git a/bsp/buildroot/package/vlc/0010-static-assert.patch b/bsp/buildroot/package/vlc/0010-static-assert.patch new file mode 100644 index 00000000..87fd56bd --- /dev/null +++ b/bsp/buildroot/package/vlc/0010-static-assert.patch @@ -0,0 +1,25 @@ +From: Thomas Guillem +Date: Thu, 30 Apr 2015 13:29:50 +0000 (+0200) +Subject: Fix build when using C99 and C++11 +X-Git-Url: http://git.videolan.org/?p=vlc.git;a=commitdiff_plain;h=51ce6cdaf598754e617900994c1943c6cba6d604 + +Fix build when using C99 and C++11 + +Indeed, C99 doesn't have static_assert and C++11 has it. + +Signed-off-by: Bernd Kuhls +--- + +diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h +index b949d24..ee168d7 100644 +--- a/include/vlc_fixups.h ++++ b/include/vlc_fixups.h +@@ -239,7 +239,7 @@ static inline locale_t newlocale(int mask, const char * locale, locale_t base) + } + #endif + +-#if !defined (HAVE_STATIC_ASSERT) ++#if !defined (HAVE_STATIC_ASSERT) && !defined(__cpp_static_assert) + # define _Static_assert(x, s) ((void) sizeof (struct { unsigned:-!(x); })) + # define static_assert _Static_assert + #endif diff --git a/bsp/buildroot/package/vlc/0011-static-assert.patch b/bsp/buildroot/package/vlc/0011-static-assert.patch new file mode 100644 index 00000000..3ce23e13 --- /dev/null +++ b/bsp/buildroot/package/vlc/0011-static-assert.patch @@ -0,0 +1,28 @@ +From: Thomas Guillem +Date: Mon, 14 Dec 2015 09:08:25 +0000 (+0100) +Subject: compat: fix static_assert +X-Git-Url: http://git.videolan.org/?p=vlc.git;a=commitdiff_plain;h=6faf9066670db6e0d241ead6a3926b2d9cc6a041 + +compat: fix static_assert + +It was not possible to use it outside of functions. + +Signed-off-by: Rémi Denis-Courmont +Signed-off-by: Bernd Kuhls +--- + +diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h +index 213d3f3..bd798d0 100644 +--- a/include/vlc_fixups.h ++++ b/include/vlc_fixups.h +@@ -273,7 +273,9 @@ static inline locale_t newlocale(int mask, const char * locale, locale_t base) + #endif + + #if !defined (HAVE_STATIC_ASSERT) && !defined(__cpp_static_assert) +-# define _Static_assert(x, s) ((void) sizeof (struct { unsigned:-!(x); })) ++# define STATIC_ASSERT_CONCAT_(a, b) a##b ++# define STATIC_ASSERT_CONCAT(a, b) STATIC_ASSERT_CONCAT_(a, b) ++# define _Static_assert(x, s) extern char STATIC_ASSERT_CONCAT(static_assert_, __LINE__)[sizeof(struct { unsigned:-!(x); })] + # define static_assert _Static_assert + #endif + diff --git a/bsp/buildroot/package/vlc/Config.in b/bsp/buildroot/package/vlc/Config.in index 166e7d25..78023fb5 100644 --- a/bsp/buildroot/package/vlc/Config.in +++ b/bsp/buildroot/package/vlc/Config.in @@ -11,6 +11,8 @@ config BR2_PACKAGE_VLC depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + # ARC toolchain issue + depends on !BR2_arc select BR2_PACKAGE_LIBVORBIS if BR2_PACKAGE_OPUS select BR2_PACKAGE_VLC_OPENCV_BACKEND if BR2_PACKAGE_OPENCV select BR2_PACKAGE_VLC_OPENCV3_BACKEND if BR2_PACKAGE_OPENCV3 @@ -34,5 +36,6 @@ config BR2_PACKAGE_VLC_OPENCV3_BACKEND comment "vlc needs a toolchain w/ C++, dynamic library, wchar, threads, headers >= 3.7" depends on BR2_USE_MMU + depends on !BR2_arc depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 diff --git a/bsp/buildroot/package/vlc/vlc.mk b/bsp/buildroot/package/vlc/vlc.mk index 8efbecb7..583edf36 100644 --- a/bsp/buildroot/package/vlc/vlc.mk +++ b/bsp/buildroot/package/vlc/vlc.mk @@ -7,7 +7,7 @@ VLC_VERSION = 2.2.4 VLC_SITE = http://get.videolan.org/vlc/$(VLC_VERSION) VLC_SOURCE = vlc-$(VLC_VERSION).tar.xz -VLC_LICENSE = GPLv2+ LGPLv2.1+ +VLC_LICENSE = GPLv2+, LGPLv2.1+ VLC_LICENSE_FILES = COPYING COPYING.LIB VLC_DEPENDENCIES = host-pkgconf VLC_AUTORECONF = YES @@ -15,6 +15,13 @@ VLC_AUTORECONF = YES # Install vlc libraries in staging. VLC_INSTALL_STAGING = YES +# gcc bug internal compiler error: in merge_overlapping_regs, at +# regrename.c:304. This bug is fixed since gcc 6. +ifeq ($(BR2_microblaze):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:) +VLC_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O0" +VLC_CONF_OPTS += --disable-optimizations +endif + # VLC defines two autoconf functions which are also defined by our own pkg.m4 # from pkgconf. Unfortunately, they are defined in a different way: VLC adds # --enable- options, but pkg.m4 adds --with- options. To make sure we use @@ -56,6 +63,11 @@ VLC_CONF_OPTS += \ --disable-addonmanagermodules \ --enable-run-as-root \ +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +VLC_CONF_ENV += LIBS="-latomic" +endif + # Building static and shared doesn't work, so force static off. ifeq ($(BR2_STATIC_LIBS),) VLC_CONF_OPTS += --disable-static diff --git a/bsp/buildroot/package/vo-aacenc/vo-aacenc.mk b/bsp/buildroot/package/vo-aacenc/vo-aacenc.mk index 23d7e62d..ecdd5849 100644 --- a/bsp/buildroot/package/vo-aacenc/vo-aacenc.mk +++ b/bsp/buildroot/package/vo-aacenc/vo-aacenc.mk @@ -15,6 +15,7 @@ VO_AACENC_CFLAGS = $(TARGET_CFLAGS) # arm specific asm optimizations ifeq ($(BR2_arm),y) +ifeq ($(BR2_ARM_CPU_HAS_ARM),y) # vo-aacenc has ARM assembly code that cannot be compiled in Thumb2 # mode, so we must force the traditional ARM mode. VO_AACENC_CFLAGS += -marm @@ -33,6 +34,10 @@ VO_AACENC_CONF_OPTS += --disable-armv5e endif endif # !neon + +else +VO_AACENC_CONF_OPTS += --disable-armv7neon --disable-armv5e +endif # has-arm endif # arm VO_AACENC_CONF_ENV = \ diff --git a/bsp/buildroot/package/vsftpd/vsftpd.mk b/bsp/buildroot/package/vsftpd/vsftpd.mk index db969f43..fd923460 100644 --- a/bsp/buildroot/package/vsftpd/vsftpd.mk +++ b/bsp/buildroot/package/vsftpd/vsftpd.mk @@ -39,7 +39,7 @@ VSFTPD_LIBS += -lpam endif define VSFTPD_BUILD_CMDS - $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" LIBS="$(VSFTPD_LIBS)" -C $(@D) endef diff --git a/bsp/buildroot/package/waf/waf.hash b/bsp/buildroot/package/waf/waf.hash new file mode 100644 index 00000000..9d610b2c --- /dev/null +++ b/bsp/buildroot/package/waf/waf.hash @@ -0,0 +1,3 @@ +# Locally computed +sha1 33d170c738ed8c92dda2945b445272972f558244 waf-1.9.5 +sha256 101f14e0f47a6410c00b8feda094948516cd3989491c56eb8268907fcd164909 waf-1.9.5 diff --git a/bsp/buildroot/package/waf/waf.mk b/bsp/buildroot/package/waf/waf.mk new file mode 100644 index 00000000..3d61f267 --- /dev/null +++ b/bsp/buildroot/package/waf/waf.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# waf +# +################################################################################ + +WAF_VERSION = 1.9.5 +WAF_SOURCE = waf-$(WAF_VERSION) +WAF_SITE = https://waf.io/ + +define HOST_WAF_EXTRACT_CMDS + $(INSTALL) -D -m 0755 $(DL_DIR)/waf-$(WAF_VERSION) $(@D)/waf +endef + +define HOST_WAF_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/waf $(HOST_DIR)/usr/bin/waf +endef + +$(eval $(host-generic-package)) diff --git a/bsp/buildroot/package/wavemon/wavemon.hash b/bsp/buildroot/package/wavemon/wavemon.hash index e35f6ace..69bd2b4b 100644 --- a/bsp/buildroot/package/wavemon/wavemon.hash +++ b/bsp/buildroot/package/wavemon/wavemon.hash @@ -1,3 +1,2 @@ # Locally calculated -sha256 81ee1f06f8349fee62e98ec5b53dff5b76c4d8fcb439f20cca806255239e3a2a wavemon-v0.8.0.tar.gz -sha256 681b86ef1469df8f7091040258dd01169bea2a7df294185c35bc867725deab2f 01e987a032b81af7bbeba1c439759d750dc1f398.patch +sha256 c9ea57da4f8161401bcaaca17b37bcdf16ffb88baad2370afed2e15a7f71af73 wavemon-v0.8.1.tar.gz diff --git a/bsp/buildroot/package/wavemon/wavemon.mk b/bsp/buildroot/package/wavemon/wavemon.mk index 746d45f3..5a1b7ee0 100644 --- a/bsp/buildroot/package/wavemon/wavemon.mk +++ b/bsp/buildroot/package/wavemon/wavemon.mk @@ -4,15 +4,12 @@ # ################################################################################ -WAVEMON_VERSION = v0.8.0 +WAVEMON_VERSION = v0.8.1 WAVEMON_SITE = $(call github,uoaerg,wavemon,$(WAVEMON_VERSION)) WAVEMON_LICENSE = GPLv3+ WAVEMON_LICENSE_FILES = COPYING WAVEMON_DEPENDENCIES = host-pkgconf libnl ncurses -# Fix musl build issue -WAVEMON_PATCH = https://github.com/uoaerg/wavemon/commit/01e987a032b81af7bbeba1c439759d750dc1f398.patch - # Handwritten Makefile.in, automake isn't used WAVEMON_MAKE_OPTS = CC="$(TARGET_CC)" diff --git a/bsp/buildroot/package/wavpack/Config.in b/bsp/buildroot/package/wavpack/Config.in index 1ef3e420..db7b8934 100644 --- a/bsp/buildroot/package/wavpack/Config.in +++ b/bsp/buildroot/package/wavpack/Config.in @@ -2,7 +2,8 @@ config BR2_PACKAGE_WAVPACK bool "wavpack" select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE help - WavPack is a completely open audio compression format providing - lossless, high-quality lossy, and a unique hybrid compression mode. + WavPack is a completely open audio compression format + providing lossless, high-quality lossy, and a unique + hybrid compression mode. http://www.wavpack.com/ diff --git a/bsp/buildroot/package/wavpack/wavpack.hash b/bsp/buildroot/package/wavpack/wavpack.hash index f15afc25..16ff08cc 100644 --- a/bsp/buildroot/package/wavpack/wavpack.hash +++ b/bsp/buildroot/package/wavpack/wavpack.hash @@ -1,2 +1,3 @@ # locally computed hash -sha256 7d31b34166c33c3109b45c6e4579b472fd05e3ee8ec6d728352961c5cdd1d6b0 wavpack-4.75.2.tar.bz2 +sha256 1939627d5358d1da62bc6158d63f7ed12905552f3a799c799ee90296a7612944 wavpack-5.1.0.tar.bz2 +sha256 3890ab081dc6f8ee02161ace180381327031cc24cc6c3d71668367b7e5f6e4be 876fc3f3907e871d0938ac6c8c5252f5f31abd1f.patch diff --git a/bsp/buildroot/package/wavpack/wavpack.mk b/bsp/buildroot/package/wavpack/wavpack.mk index ae164548..a6135062 100644 --- a/bsp/buildroot/package/wavpack/wavpack.mk +++ b/bsp/buildroot/package/wavpack/wavpack.mk @@ -4,7 +4,7 @@ # ################################################################################ -WAVPACK_VERSION = 4.75.2 +WAVPACK_VERSION = 5.1.0 WAVPACK_SITE = http://www.wavpack.com WAVPACK_SOURCE = wavpack-$(WAVPACK_VERSION).tar.bz2 WAVPACK_INSTALL_STAGING = YES @@ -12,6 +12,9 @@ WAVPACK_DEPENDENCIES = $(if $(BR2_ENABLE_LOCALE),,libiconv) WAVPACK_LICENSE = BSD-3c WAVPACK_LICENSE_FILES = COPYING +# Fetch patch from upstream to remove wchar dependency +WAVPACK_PATCH = https://github.com/dbry/WavPack/commit/876fc3f3907e871d0938ac6c8c5252f5f31abd1f.patch + ifeq ($(BR2_PACKAGE_LIBICONV),y) WAVPACK_CONF_OPTS += LIBS=-liconv endif diff --git a/bsp/buildroot/package/wayland-protocols/wayland-protocols.hash b/bsp/buildroot/package/wayland-protocols/wayland-protocols.hash index 380581b1..a3166980 100644 --- a/bsp/buildroot/package/wayland-protocols/wayland-protocols.hash +++ b/bsp/buildroot/package/wayland-protocols/wayland-protocols.hash @@ -1,2 +1,2 @@ -# From https://lists.freedesktop.org/archives/wayland-devel/2016-May/029014.html -sha256 014a9a23c21ed14f49b1005b3e8efa66d6337d4ceafc97f7b0d6707e7e3df572 wayland-protocols-1.4.tar.xz +# From https://lists.freedesktop.org/archives/wayland-devel/2016-August/030606.html +sha256 635f2a937d318f1fecb97b54074ca211486e38af943868dd0fa82ea38d091c1f wayland-protocols-1.7.tar.xz diff --git a/bsp/buildroot/package/wayland-protocols/wayland-protocols.mk b/bsp/buildroot/package/wayland-protocols/wayland-protocols.mk index 51ee9ee3..54c2ec13 100644 --- a/bsp/buildroot/package/wayland-protocols/wayland-protocols.mk +++ b/bsp/buildroot/package/wayland-protocols/wayland-protocols.mk @@ -4,7 +4,7 @@ # ################################################################################ -WAYLAND_PROTOCOLS_VERSION = 1.4 +WAYLAND_PROTOCOLS_VERSION = 1.7 WAYLAND_PROTOCOLS_SITE = http://wayland.freedesktop.org/releases WAYLAND_PROTOCOLS_SOURCE = wayland-protocols-$(WAYLAND_PROTOCOLS_VERSION).tar.xz WAYLAND_PROTOCOLS_LICENSE = MIT diff --git a/bsp/buildroot/package/wayland/0002-scanner-Use-uint32_t-instead-of-uint.patch b/bsp/buildroot/package/wayland/0002-scanner-Use-uint32_t-instead-of-uint.patch deleted file mode 100644 index 1d05f258..00000000 --- a/bsp/buildroot/package/wayland/0002-scanner-Use-uint32_t-instead-of-uint.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 6750b47d9e0d3074d2e56aa36c476493f533d696 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Fri, 15 Jul 2016 16:23:48 -0700 -Subject: [PATCH 1/1] scanner: Use uint32_t instead of uint - -uint32_t is C99 defined stdint type - -Signed-off-by: Khem Raj -Reviewed-by: Daniel Stone -[Rahul Bedarkar: Backported from: 6750b47d9e0d3074d2e56aa36c476493f533d696] -Signed-off-by: Rahul Bedarkar ---- - src/scanner.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/scanner.c b/src/scanner.c -index 6e2c3a3..ebae4cc 100644 ---- a/src/scanner.c -+++ b/src/scanner.c -@@ -819,7 +819,7 @@ find_enumeration(struct protocol *protocol, - struct interface *i; - struct enumeration *e; - char *enum_name; -- uint idx = 0, j; -+ uint32_t idx = 0, j; - - for (j = 0; j + 1 < strlen(enum_attribute); j++) { - if (enum_attribute[j] == '.') { --- -2.6.2 - diff --git a/bsp/buildroot/package/wayland/wayland.hash b/bsp/buildroot/package/wayland/wayland.hash index be1b6b5f..9a58c56b 100644 --- a/bsp/buildroot/package/wayland/wayland.hash +++ b/bsp/buildroot/package/wayland/wayland.hash @@ -1,2 +1,2 @@ -# From https://lists.freedesktop.org/archives/wayland-devel/2016-June/029163.html -sha256 9540925f7928becfdf5e3b84c70757f6589bf1ceef09bea78784d8e4772c0db0 wayland-1.11.0.tar.xz +# From https://lists.freedesktop.org/archives/wayland-devel/2016-September/031121.html +sha256 d6b4135cba0188abcb7275513c72dede751d6194f6edc5b82183a3ba8b821ab1 wayland-1.12.0.tar.xz diff --git a/bsp/buildroot/package/wayland/wayland.mk b/bsp/buildroot/package/wayland/wayland.mk index d4b4664f..a8623943 100644 --- a/bsp/buildroot/package/wayland/wayland.mk +++ b/bsp/buildroot/package/wayland/wayland.mk @@ -4,7 +4,7 @@ # ################################################################################ -WAYLAND_VERSION = 1.11.0 +WAYLAND_VERSION = 1.12.0 WAYLAND_SITE = http://wayland.freedesktop.org/releases WAYLAND_SOURCE = wayland-$(WAYLAND_VERSION).tar.xz WAYLAND_LICENSE = MIT diff --git a/bsp/buildroot/package/webkit/0001-build-fix-for-32-bit-autotools.patch b/bsp/buildroot/package/webkit/0001-build-fix-for-32-bit-autotools.patch deleted file mode 100644 index d7765ead..00000000 --- a/bsp/buildroot/package/webkit/0001-build-fix-for-32-bit-autotools.patch +++ /dev/null @@ -1,34 +0,0 @@ -Add missing symbol for WebCore::TextIterator::getLocationAndLengthFromRange - -Signed-off-by: Markos Chandras - -From f5bb58f9096061f00c948e668335811d364ba360 Mon Sep 17 00:00:00 2001 -From: "kov@webkit.org" -Date: Thu, 7 Feb 2013 13:48:46 +0000 -Subject: [PATCH] Unreviewed build fix after r141196 for 32 bits autotools. - -* Source/autotools/symbols.filter: restore 32 bits version of the -WebCore::TextIterator::getLocationAndLengthFromRange(WebCore::Node*, -WebCore::Range const*, unsigned int&, unsigned int&) symbol. - -git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142105 268f45cc-cd09-0410-ab3c-d52691b4dbfc ---- - ChangeLog | 8 ++++++++ - Source/autotools/symbols.filter | 1 + - 2 files changed, 9 insertions(+) - -diff --git a/Source/autotools/symbols.filter b/Source/autotools/symbols.filter -index 9d730b3..2edefaf 100644 ---- a/Source/autotools/symbols.filter -+++ b/Source/autotools/symbols.filter -@@ -57,6 +57,7 @@ _ZN7WebCore11HistoryItem16setDocumentStateERKN3WTF6VectorINS1_6StringELj0EEE; - _ZN7WebCore11HistoryItem16setDocumentStateERKN3WTF6VectorINS1_6StringELm0EEE; - _ZN7WebCore11MemoryCache14resourceForURLERKNS_4KURLE; - _ZN7WebCore12TextIterator26rangeFromLocationAndLengthEPNS_13ContainerNodeEiib; -+_ZN7WebCore12TextIterator29getLocationAndLengthFromRangeEPNS_4NodeEPKNS_5RangeERjS6_; - _ZN7WebCore12TextIterator29getLocationAndLengthFromRangeEPNS_4NodeEPKNS_5RangeERmS6_; - _ZN7WebCore12PrintContext20pageNumberForElementEPNS_7ElementERKNS_9FloatSizeE; - _ZN7WebCore13createWrapperEPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectEPNS_4NodeE; --- -1.8.3.2 - diff --git a/bsp/buildroot/package/webkit/0002-build-fix-for-gtklauncher.patch b/bsp/buildroot/package/webkit/0002-build-fix-for-gtklauncher.patch deleted file mode 100644 index 9a840b62..00000000 --- a/bsp/buildroot/package/webkit/0002-build-fix-for-gtklauncher.patch +++ /dev/null @@ -1,51 +0,0 @@ -Make gstreamer support conditional - -Signed-off-by: Markos Chandras - -From f1055f61bce46eccf8dc0aa017113a08d3d71944 Mon Sep 17 00:00:00 2001 -From: "commit-queue@webkit.org" - -Date: Fri, 15 Mar 2013 07:13:51 +0000 -Subject: [PATCH] Build fix for Tools/GtkLauncher/Programs_GtkLauncher-main.o - if gstreamer is not installed https://bugs.webkit.org/show_bug.cgi?id=112394 - -Patch by Tobias Mueller on 2013-03-15 -Reviewed by Philippe Normand. - -* GtkLauncher/main.c: -(main): Guard using the gstreamer function with #ifdef WTF_USE_GSTREAMER - -git-svn-id: http://svn.webkit.org/repository/webkit/trunk@145881 268f45cc-cd09-0410-ab3c-d52691b4dbfc ---- - Tools/ChangeLog | 10 ++++++++++ - Tools/GtkLauncher/main.c | 5 ++++- - 2 files changed, 14 insertions(+), 1 deletion(-) - -diff --git a/Tools/GtkLauncher/main.c b/Tools/GtkLauncher/main.c -index 32baf4a..84c8833 100644 ---- a/Tools/GtkLauncher/main.c -+++ b/Tools/GtkLauncher/main.c -@@ -28,7 +28,9 @@ - #include "autotoolsconfig.h" - #include "LauncherInspectorWindow.h" - #include -+#ifdef WTF_USE_GSTREAMER - #include -+#endif - #include - #include - #include -@@ -489,8 +491,9 @@ int main(int argc, char* argv[]) - GOptionContext *context = g_option_context_new(0); - g_option_context_add_main_entries(context, commandLineOptions, 0); - g_option_context_add_group(context, gtk_get_option_group(TRUE)); -+#ifdef WTF_USE_GSTREAMER - g_option_context_add_group(context, gst_init_get_option_group()); -- -+#endif - webkitSettings = webkit_web_settings_new(); - g_object_set(webkitSettings, "enable-developer-extras", TRUE, NULL); - if (!addWebSettingsGroupToContext(context, webkitSettings)) { --- -1.8.3.2 - diff --git a/bsp/buildroot/package/webkit/0003-detect-harfbuzz-icu.patch b/bsp/buildroot/package/webkit/0003-detect-harfbuzz-icu.patch deleted file mode 100644 index dc93c67e..00000000 --- a/bsp/buildroot/package/webkit/0003-detect-harfbuzz-icu.patch +++ /dev/null @@ -1,28 +0,0 @@ -harfbuzz-icu detections based on the following upstream commits - -- 5f3ae29ffb29c499c1825578ba7f3ffcbf1aa8b9 -- ad2a23ec44b692bde43a13b658990770caa8dfc5 -- 22b4786377142424bfb6562ff029997acd0846d1 - -Signed-off-by: Markos Chandras - -Index: webkit-1.11.5/configure.ac -=================================================================== ---- webkit-1.11.5.orig/configure.ac -+++ webkit-1.11.5/configure.ac -@@ -938,6 +938,15 @@ PKG_CHECK_MODULES([FREETYPE], - freetype2 >= $FREETYPE2_REQUIRED_VERSION - harfbuzz]) - fi -+# HarfBuzz 0.9.18 splits harbuzz-icu into a separate library. -+# Since we support earlier HarfBuzz versions we keep this conditional for now. -+m4_define([harfbuzz_required_version], [0.9.7]) -+if $PKG_CONFIG --atleast-version 0.9.18 harfbuzz; then -+ PKG_CHECK_MODULES([HARFBUZZ_ICU], [harfbuzz-icu >= $harfbuzz_required_version]) -+ FREETYPE_CFLAGS+=" $HARFBUZZ_ICU_CFLAGS" -+ FREETYPE_LIBS+=" $HARFBUZZ_ICU_LIBS" -+fi -+ - AC_SUBST([FREETYPE_CFLAGS]) - AC_SUBST([FREETYPE_LIBS]) - diff --git a/bsp/buildroot/package/webkit/0004-disable-docrebase.patch b/bsp/buildroot/package/webkit/0004-disable-docrebase.patch deleted file mode 100644 index 2692d617..00000000 --- a/bsp/buildroot/package/webkit/0004-disable-docrebase.patch +++ /dev/null @@ -1,27 +0,0 @@ -This patch prevents documentation from being rebased or installed. This -prevents an error when gtk-doc --rebase is called. - -Signed-off-by: Spenser Gilliland -Signed-off-by: Markos Chandras - -Index: webkit-1.11.5/Tools/GNUmakefile.am -=================================================================== ---- webkit-1.11.5.orig/Tools/GNUmakefile.am -+++ webkit-1.11.5/Tools/GNUmakefile.am -@@ -308,6 +308,8 @@ EXTRA_DIST += \ - Tools/Scripts/webkit-build-directory \ - Tools/Scripts/webkitdirs.pm - -+if ENABLE_GTK_DOC -+ - docs: docs-build.stamp - .PHONY : docs - DISTCLEANFILES += docs-build.stamp -@@ -412,7 +414,6 @@ if ENABLE_WEBKIT2 - rm -rf $${installdir} - endif - --if ENABLE_GTK_DOC - all: docs-build.stamp - endif - diff --git a/bsp/buildroot/package/webkit/0005-disable-tests.patch b/bsp/buildroot/package/webkit/0005-disable-tests.patch deleted file mode 100644 index 6fa6daae..00000000 --- a/bsp/buildroot/package/webkit/0005-disable-tests.patch +++ /dev/null @@ -1,80 +0,0 @@ -This prevents the Webkit test suites from being built. - -Signed-off-by: Spenser Gilliland ----- -Index: webkit-1.9.6/GNUmakefile.am -=================================================================== ---- webkit-1.9.6.orig/GNUmakefile.am 2012-08-06 03:17:24.000000000 -0500 -+++ webkit-1.9.6/GNUmakefile.am 2013-05-28 10:08:53.645129501 -0500 -@@ -282,11 +282,14 @@ - include Tools/DumpRenderTree/gtk/GNUmakefile.ImageDiff.am - - include Source/WebKit2/GNUmakefile.am --include Source/WebKit2/UIProcess/API/gtk/tests/GNUmakefile.am - include Tools/MiniBrowser/gtk/GNUmakefile.am -+ -+if ENABLE_TESTS -+include Source/WebKit2/UIProcess/API/gtk/tests/GNUmakefile.am - include Tools/WebKitTestRunner/GNUmakefile.am - include Source/ThirdParty/gtest/GNUmakefile.am - include Tools/TestWebKitAPI/GNUmakefile.am -+endif # ENABLE_TESTS - # [GTK] Refactor the translations now that we have webkit2 - # https://bugs.webkit.org/show_bug.cgi?id=55153 - -Index: webkit-1.9.6/Source/WebKit/gtk/GNUmakefile.am -=================================================================== ---- webkit-1.9.6.orig/Source/WebKit/gtk/GNUmakefile.am 2012-07-19 05:02:29.000000000 -0500 -+++ webkit-1.9.6/Source/WebKit/gtk/GNUmakefile.am 2013-05-28 10:09:49.277130516 -0500 -@@ -413,6 +413,7 @@ - dist_resources_DATA = \ - $(shell ls $(srcdir)/Source/WebKit/gtk/resources/*.html) - -+if ENABLE_TESTS - # Build unit tests - webkit_tests_cflags = \ - -fno-strict-aliasing \ -@@ -613,6 +614,8 @@ - Programs_unittests_testcopyandpaste_LDADD = $(webkit_tests_ldadd) - Programs_unittests_testcopyandpaste_LDFLAGS = $(webkit_tests_ldflags) - -+endif # ENABLE_TESTS -+ - # Project-wide clean rules - # Files that will be cleaned - CLEANFILES += \ -Index: webkit-1.9.6/configure.ac -=================================================================== ---- webkit-1.9.6.orig/configure.ac 2012-08-06 08:45:10.000000000 -0500 -+++ webkit-1.9.6/configure.ac 2013-05-28 10:07:55.817128445 -0500 -@@ -516,6 +516,14 @@ - AC_SUBST(CAIRO_CFLAGS) - AC_SUBST(CAIRO_LIBS) - -+# check wheter to build tests -+AC_MSG_CHECKING([wheter to build tests]) -+AC_ARG_ENABLE(tests, -+ AC_HELP_STRING([--enable-tests], -+ [turn on tests [default=no]]), -+ [],[enable_debug="no"]) -+AC_MSG_RESULT([$enable_tests]) -+ - # check whether to build with debugging enabled - AC_MSG_CHECKING([whether to do a debug build]) - AC_ARG_ENABLE(debug, -@@ -1423,6 +1431,7 @@ - AM_CONDITIONAL([USE_FARSTREAM], [test "$have_farstream" = "yes"]) - - # WebKit feature conditionals -+AM_CONDITIONAL([ENABLE_TESTS],[test "$enable_tests" = "yes"]) - AM_CONDITIONAL([ENABLE_DEBUG],[test "$enable_debug_features" = "yes"]) - AM_CONDITIONAL([ENABLE_UNSTABLE_FEATURES],[test "$enable_unstable_features" = "yes"]) - AM_CONDITIONAL([ENABLE_WEBGL],[test "$enable_webgl" = "yes"]) -@@ -1534,6 +1543,7 @@ - WebKit was configured with the following options: - - Build configuration: -+ Enable tests (slow) : $enable_tests - Enable debugging (slow) : $enable_debug - Compile with debug symbols (slow) : $enable_debug_symbols - Enable debug features (slow) : $enable_debug_features diff --git a/bsp/buildroot/package/webkit/0006-execinfo_h.patch b/bsp/buildroot/package/webkit/0006-execinfo_h.patch deleted file mode 100644 index f5508a1c..00000000 --- a/bsp/buildroot/package/webkit/0006-execinfo_h.patch +++ /dev/null @@ -1,20 +0,0 @@ -Fixes uclibc build as uclibc does not include backtrace functionality - -Signed-of-by: Spenser Gilliland -Signed-of-by: Markos Chandras - -Index: webkit-1.11.5/Source/WTF/wtf/Assertions.cpp -=================================================================== ---- webkit-1.11.5.orig/Source/WTF/wtf/Assertions.cpp -+++ webkit-1.11.5/Source/WTF/wtf/Assertions.cpp -@@ -61,8 +61,10 @@ - #if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID) - #include - #include -+#if !defined(__UCLIBC__) - #include - #endif -+#endif - - #if OS(ANDROID) - #include "android/log.h" diff --git a/bsp/buildroot/package/webkit/0007-mips-dfg.patch b/bsp/buildroot/package/webkit/0007-mips-dfg.patch deleted file mode 100644 index 39259514..00000000 --- a/bsp/buildroot/package/webkit/0007-mips-dfg.patch +++ /dev/null @@ -1,1490 +0,0 @@ -Upstream patch for DFG implementation for MIPS - -Signed-off-by: Markos Chandras - -From c921d19863ccf66bdd0ffa5d38eaf05efab6b136 Mon Sep 17 00:00:00 2001 -From: "commit-queue@webkit.org" - -Date: Mon, 18 Feb 2013 19:25:23 +0000 -Subject: [PATCH] MIPS DFG implementation. - https://bugs.webkit.org/show_bug.cgi?id=101328 - -Patch by Balazs Kilvady on 2013-02-18 -Reviewed by Oliver Hunt. - -DFG implementation for MIPS. - -Source/JavaScriptCore: - -* assembler/MIPSAssembler.h: -(JSC::MIPSAssembler::MIPSAssembler): -(JSC::MIPSAssembler::sllv): -(JSC::MIPSAssembler::movd): -(MIPSAssembler): -(JSC::MIPSAssembler::negd): -(JSC::MIPSAssembler::labelForWatchpoint): -(JSC::MIPSAssembler::label): -(JSC::MIPSAssembler::vmov): -(JSC::MIPSAssembler::linkDirectJump): -(JSC::MIPSAssembler::maxJumpReplacementSize): -(JSC::MIPSAssembler::revertJumpToMove): -(JSC::MIPSAssembler::replaceWithJump): -* assembler/MacroAssembler.h: -(MacroAssembler): -(JSC::MacroAssembler::poke): -* assembler/MacroAssemblerMIPS.h: -(JSC::MacroAssemblerMIPS::add32): -(MacroAssemblerMIPS): -(JSC::MacroAssemblerMIPS::and32): -(JSC::MacroAssemblerMIPS::lshift32): -(JSC::MacroAssemblerMIPS::mul32): -(JSC::MacroAssemblerMIPS::or32): -(JSC::MacroAssemblerMIPS::rshift32): -(JSC::MacroAssemblerMIPS::urshift32): -(JSC::MacroAssemblerMIPS::sub32): -(JSC::MacroAssemblerMIPS::xor32): -(JSC::MacroAssemblerMIPS::store32): -(JSC::MacroAssemblerMIPS::jump): -(JSC::MacroAssemblerMIPS::branchAdd32): -(JSC::MacroAssemblerMIPS::branchMul32): -(JSC::MacroAssemblerMIPS::branchSub32): -(JSC::MacroAssemblerMIPS::branchNeg32): -(JSC::MacroAssemblerMIPS::call): -(JSC::MacroAssemblerMIPS::loadDouble): -(JSC::MacroAssemblerMIPS::moveDouble): -(JSC::MacroAssemblerMIPS::swapDouble): -(JSC::MacroAssemblerMIPS::subDouble): -(JSC::MacroAssemblerMIPS::mulDouble): -(JSC::MacroAssemblerMIPS::divDouble): -(JSC::MacroAssemblerMIPS::negateDouble): -(JSC::MacroAssemblerMIPS::branchEqual): -(JSC::MacroAssemblerMIPS::branchNotEqual): -(JSC::MacroAssemblerMIPS::branchTruncateDoubleToInt32): -(JSC::MacroAssemblerMIPS::branchTruncateDoubleToUint32): -(JSC::MacroAssemblerMIPS::truncateDoubleToInt32): -(JSC::MacroAssemblerMIPS::truncateDoubleToUint32): -(JSC::MacroAssemblerMIPS::branchDoubleNonZero): -(JSC::MacroAssemblerMIPS::branchDoubleZeroOrNaN): -(JSC::MacroAssemblerMIPS::invert): -(JSC::MacroAssemblerMIPS::replaceWithJump): -(JSC::MacroAssemblerMIPS::maxJumpReplacementSize): -* dfg/DFGAssemblyHelpers.h: -(AssemblyHelpers): -(JSC::DFG::AssemblyHelpers::preserveReturnAddressAfterCall): -(JSC::DFG::AssemblyHelpers::restoreReturnAddressBeforeReturn): -(JSC::DFG::AssemblyHelpers::debugCall): -* dfg/DFGCCallHelpers.h: -(CCallHelpers): -(JSC::DFG::CCallHelpers::setupArguments): -(JSC::DFG::CCallHelpers::setupArgumentsWithExecState): -* dfg/DFGFPRInfo.h: -(DFG): -(FPRInfo): -(JSC::DFG::FPRInfo::toRegister): -(JSC::DFG::FPRInfo::toIndex): -(JSC::DFG::FPRInfo::debugName): -* dfg/DFGGPRInfo.h: -(DFG): -(GPRInfo): -(JSC::DFG::GPRInfo::toRegister): -(JSC::DFG::GPRInfo::toIndex): -(JSC::DFG::GPRInfo::debugName): -* dfg/DFGSpeculativeJIT.h: -(SpeculativeJIT): -* jit/JSInterfaceJIT.h: -(JSInterfaceJIT): -* runtime/JSGlobalData.h: -(JSC::ScratchBuffer::allocationSize): -(ScratchBuffer): - -Source/WTF: - -* wtf/Platform.h: - -git-svn-id: http://svn.webkit.org/repository/webkit/trunk@143247 268f45cc-cd09-0410-ab3c-d52691b4dbfc ---- - Source/JavaScriptCore/ChangeLog | 90 ++++ - Source/JavaScriptCore/assembler/MIPSAssembler.h | 109 ++++- - Source/JavaScriptCore/assembler/MacroAssembler.h | 7 + - .../JavaScriptCore/assembler/MacroAssemblerMIPS.h | 480 +++++++++++++++++++-- - Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h | 19 +- - Source/JavaScriptCore/dfg/DFGCCallHelpers.h | 92 ++-- - Source/JavaScriptCore/dfg/DFGFPRInfo.h | 68 +++ - Source/JavaScriptCore/dfg/DFGGPRInfo.h | 67 +++ - Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h | 4 +- - Source/JavaScriptCore/jit/JSInterfaceJIT.h | 4 + - Source/JavaScriptCore/runtime/JSGlobalData.h | 6 +- - Source/WTF/ChangeLog | 11 + - Source/WTF/wtf/Platform.h | 4 + - 13 files changed, 888 insertions(+), 73 deletions(-) - -diff --git a/Source/JavaScriptCore/assembler/MIPSAssembler.h b/Source/JavaScriptCore/assembler/MIPSAssembler.h -index 026f87e..7f553bb 100644 ---- a/Source/JavaScriptCore/assembler/MIPSAssembler.h -+++ b/Source/JavaScriptCore/assembler/MIPSAssembler.h -@@ -152,6 +152,8 @@ public: - typedef SegmentedVector Jumps; - - MIPSAssembler() -+ : m_indexOfLastWatchpoint(INT_MIN) -+ , m_indexOfTailOfLastWatchpoint(INT_MIN) - { - } - -@@ -325,7 +327,7 @@ public: - emitInst(0x00000000 | (rd << OP_SH_RD) | (rt << OP_SH_RT) | ((shamt & 0x1f) << OP_SH_SHAMT)); - } - -- void sllv(RegisterID rd, RegisterID rt, int rs) -+ void sllv(RegisterID rd, RegisterID rt, RegisterID rs) - { - emitInst(0x00000004 | (rd << OP_SH_RD) | (rt << OP_SH_RT) | (rs << OP_SH_RS)); - } -@@ -527,6 +529,16 @@ public: - emitInst(0x46200004 | (fd << OP_SH_FD) | (fs << OP_SH_FS)); - } - -+ void movd(FPRegisterID fd, FPRegisterID fs) -+ { -+ emitInst(0x46200006 | (fd << OP_SH_FD) | (fs << OP_SH_FS)); -+ } -+ -+ void negd(FPRegisterID fd, FPRegisterID fs) -+ { -+ emitInst(0x46200007 | (fd << OP_SH_FD) | (fs << OP_SH_FS)); -+ } -+ - void truncwd(FPRegisterID fd, FPRegisterID fs) - { - emitInst(0x4620000d | (fd << OP_SH_FD) | (fs << OP_SH_FS)); -@@ -619,9 +631,24 @@ public: - return m_buffer.label(); - } - -+ AssemblerLabel labelForWatchpoint() -+ { -+ AssemblerLabel result = m_buffer.label(); -+ if (static_cast(result.m_offset) != m_indexOfLastWatchpoint) -+ result = label(); -+ m_indexOfLastWatchpoint = result.m_offset; -+ m_indexOfTailOfLastWatchpoint = result.m_offset + maxJumpReplacementSize(); -+ return result; -+ } -+ - AssemblerLabel label() - { -- return m_buffer.label(); -+ AssemblerLabel result = m_buffer.label(); -+ while (UNLIKELY(static_cast(result.m_offset) < m_indexOfTailOfLastWatchpoint)) { -+ nop(); -+ result = m_buffer.label(); -+ } -+ return result; - } - - AssemblerLabel align(int alignment) -@@ -664,14 +691,24 @@ public: - // Assembly helpers for moving data between fp and registers. - void vmov(RegisterID rd1, RegisterID rd2, FPRegisterID rn) - { -+#if WTF_MIPS_ISA_REV(2) && WTF_MIPS_FP64 -+ mfc1(rd1, rn); -+ mfhc1(rd2, rn); -+#else - mfc1(rd1, rn); - mfc1(rd2, FPRegisterID(rn + 1)); -+#endif - } - - void vmov(FPRegisterID rd, RegisterID rn1, RegisterID rn2) - { -+#if WTF_MIPS_ISA_REV(2) && WTF_MIPS_FP64 -+ mtc1(rn1, rd); -+ mthc1(rn2, rd); -+#else - mtc1(rn1, rd); - mtc1(rn2, FPRegisterID(rd + 1)); -+#endif - } - - static unsigned getCallReturnOffset(AssemblerLabel call) -@@ -688,6 +725,35 @@ public: - // writable region of memory; to modify the code in an execute-only execuable - // pool the 'repatch' and 'relink' methods should be used. - -+ static size_t linkDirectJump(void* code, void* to) -+ { -+ MIPSWord* insn = reinterpret_cast(reinterpret_cast(code)); -+ size_t ops = 0; -+ int32_t slotAddr = reinterpret_cast(insn) + 4; -+ int32_t toAddr = reinterpret_cast(to); -+ -+ if ((slotAddr & 0xf0000000) != (toAddr & 0xf0000000)) { -+ // lui -+ *insn = 0x3c000000 | (MIPSRegisters::t9 << OP_SH_RT) | ((toAddr >> 16) & 0xffff); -+ ++insn; -+ // ori -+ *insn = 0x34000000 | (MIPSRegisters::t9 << OP_SH_RT) | (MIPSRegisters::t9 << OP_SH_RS) | (toAddr & 0xffff); -+ ++insn; -+ // jr -+ *insn = 0x00000008 | (MIPSRegisters::t9 << OP_SH_RS); -+ ++insn; -+ ops = 4 * sizeof(MIPSWord); -+ } else { -+ // j -+ *insn = 0x08000000 | ((toAddr & 0x0fffffff) >> 2); -+ ++insn; -+ ops = 2 * sizeof(MIPSWord); -+ } -+ // nop -+ *insn = 0x00000000; -+ return ops; -+ } -+ - void linkJump(AssemblerLabel from, AssemblerLabel to) - { - ASSERT(to.isSet()); -@@ -825,29 +891,36 @@ public: - #endif - } - -- static void revertJumpToMove(void* instructionStart, RegisterID rt, int imm) -+ static ptrdiff_t maxJumpReplacementSize() - { -- MIPSWord* insn = static_cast(instructionStart) + 1; -- ASSERT((*insn & 0xfc000000) == 0x34000000); -- *insn = (*insn & 0xfc1f0000) | (imm & 0xffff); -- cacheFlush(insn, sizeof(MIPSWord)); -+ return sizeof(MIPSWord) * 4; - } - -- static void replaceWithJump(void* instructionStart, void* to) -+ static void revertJumpToMove(void* instructionStart, RegisterID rt, int imm) - { -- MIPSWord* instruction = reinterpret_cast(instructionStart); -- intptr_t jumpTo = reinterpret_cast(to); -+ MIPSWord* insn = static_cast(instructionStart); -+ size_t codeSize = 2 * sizeof(MIPSWord); - - // lui -- instruction[0] = 0x3c000000 | (MIPSRegisters::t9 << OP_SH_RT) | ((jumpTo >> 16) & 0xffff); -+ *insn = 0x3c000000 | (rt << OP_SH_RT) | ((imm >> 16) & 0xffff); -+ ++insn; - // ori -- instruction[1] = 0x34000000 | (MIPSRegisters::t9 << OP_SH_RT) | (MIPSRegisters::t9 << OP_SH_RS) | (jumpTo & 0xffff); -- // jr -- instruction[2] = 0x00000008 | (MIPSRegisters::t9 << OP_SH_RS); -- // nop -- instruction[3] = 0x0; -+ *insn = 0x34000000 | (rt << OP_SH_RS) | (rt << OP_SH_RT) | (imm & 0xffff); -+ ++insn; -+ // if jr $t9 -+ if (*insn == 0x03200008) { -+ *insn = 0x00000000; -+ codeSize += sizeof(MIPSWord); -+ } -+ cacheFlush(insn, codeSize); -+ } - -- cacheFlush(instruction, sizeof(MIPSWord) * 4); -+ static void replaceWithJump(void* instructionStart, void* to) -+ { -+ ASSERT(!(bitwise_cast(instructionStart) & 3)); -+ ASSERT(!(bitwise_cast(to) & 3)); -+ size_t ops = linkDirectJump(instructionStart, to); -+ cacheFlush(instructionStart, ops); - } - - static void replaceWithLoad(void* instructionStart) -@@ -1023,6 +1096,8 @@ private: - - AssemblerBuffer m_buffer; - Jumps m_jumps; -+ int m_indexOfLastWatchpoint; -+ int m_indexOfTailOfLastWatchpoint; - }; - - } // namespace JSC -diff --git a/Source/JavaScriptCore/assembler/MacroAssembler.h b/Source/JavaScriptCore/assembler/MacroAssembler.h -index 60a93db..1f0c3de 100644 ---- a/Source/JavaScriptCore/assembler/MacroAssembler.h -+++ b/Source/JavaScriptCore/assembler/MacroAssembler.h -@@ -200,6 +200,13 @@ public: - } - #endif - -+#if CPU(MIPS) -+ void poke(FPRegisterID src, int index = 0) -+ { -+ ASSERT(!(index & 1)); -+ storeDouble(src, addressForPoke(index)); -+ } -+#endif - - // Backwards banches, these are currently all implemented using existing forwards branch mechanisms. - void branchPtr(RelationalCondition cond, RegisterID op1, TrustedImmPtr imm, Label target) -diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h -index 43ad434..4f14960 100644 ---- a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h -+++ b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h -@@ -114,6 +114,11 @@ public: - m_assembler.addu(dest, dest, src); - } - -+ void add32(RegisterID op1, RegisterID op2, RegisterID dest) -+ { -+ m_assembler.addu(dest, op1, op2); -+ } -+ - void add32(TrustedImm32 imm, RegisterID dest) - { - add32(imm, dest, dest); -@@ -267,6 +272,11 @@ public: - m_assembler.andInsn(dest, dest, src); - } - -+ void and32(RegisterID op1, RegisterID op2, RegisterID dest) -+ { -+ m_assembler.andInsn(dest, op1, op2); -+ } -+ - void and32(TrustedImm32 imm, RegisterID dest) - { - if (!imm.m_value && !m_fixedWidth) -@@ -283,9 +293,16 @@ public: - } - } - -- void lshift32(TrustedImm32 imm, RegisterID dest) -+ void and32(TrustedImm32 imm, RegisterID src, RegisterID dest) - { -- m_assembler.sll(dest, dest, imm.m_value); -+ if (!imm.m_value && !m_fixedWidth) -+ move(MIPSRegisters::zero, dest); -+ else if (imm.m_value > 0 && imm.m_value < 65535 && !m_fixedWidth) -+ m_assembler.andi(dest, src, imm.m_value); -+ else { -+ move(imm, immTempRegister); -+ m_assembler.andInsn(dest, src, immTempRegister); -+ } - } - - void lshift32(RegisterID shiftAmount, RegisterID dest) -@@ -293,11 +310,33 @@ public: - m_assembler.sllv(dest, dest, shiftAmount); - } - -+ void lshift32(RegisterID src, RegisterID shiftAmount, RegisterID dest) -+ { -+ m_assembler.sllv(dest, src, shiftAmount); -+ } -+ -+ void lshift32(TrustedImm32 imm, RegisterID dest) -+ { -+ move(imm, immTempRegister); -+ m_assembler.sllv(dest, dest, immTempRegister); -+ } -+ -+ void lshift32(RegisterID src, TrustedImm32 imm, RegisterID dest) -+ { -+ move(imm, immTempRegister); -+ m_assembler.sllv(dest, src, immTempRegister); -+ } -+ - void mul32(RegisterID src, RegisterID dest) - { - m_assembler.mul(dest, dest, src); - } - -+ void mul32(RegisterID op1, RegisterID op2, RegisterID dest) -+ { -+ m_assembler.mul(dest, op1, op2); -+ } -+ - void mul32(TrustedImm32 imm, RegisterID src, RegisterID dest) - { - if (!imm.m_value && !m_fixedWidth) -@@ -348,6 +387,24 @@ public: - m_assembler.orInsn(dest, dest, dataTempRegister); - } - -+ void or32(TrustedImm32 imm, RegisterID src, RegisterID dest) -+ { -+ if (!imm.m_value && !m_fixedWidth) -+ return; -+ -+ if (imm.m_value > 0 && imm.m_value < 65535 && !m_fixedWidth) { -+ m_assembler.ori(dest, src, imm.m_value); -+ return; -+ } -+ -+ /* -+ li dataTemp, imm -+ or dest, src, dataTemp -+ */ -+ move(imm, dataTempRegister); -+ m_assembler.orInsn(dest, src, dataTempRegister); -+ } -+ - void or32(RegisterID src, AbsoluteAddress dest) - { - load32(dest.m_ptr, dataTempRegister); -@@ -360,6 +417,11 @@ public: - m_assembler.srav(dest, dest, shiftAmount); - } - -+ void rshift32(RegisterID src, RegisterID shiftAmount, RegisterID dest) -+ { -+ m_assembler.srav(dest, src, shiftAmount); -+ } -+ - void rshift32(TrustedImm32 imm, RegisterID dest) - { - m_assembler.sra(dest, dest, imm.m_value); -@@ -375,16 +437,31 @@ public: - m_assembler.srlv(dest, dest, shiftAmount); - } - -+ void urshift32(RegisterID src, RegisterID shiftAmount, RegisterID dest) -+ { -+ m_assembler.srlv(dest, src, shiftAmount); -+ } -+ - void urshift32(TrustedImm32 imm, RegisterID dest) - { - m_assembler.srl(dest, dest, imm.m_value); - } - -+ void urshift32(RegisterID src, TrustedImm32 imm, RegisterID dest) -+ { -+ m_assembler.srl(dest, src, imm.m_value); -+ } -+ - void sub32(RegisterID src, RegisterID dest) - { - m_assembler.subu(dest, dest, src); - } - -+ void sub32(RegisterID op1, RegisterID op2, RegisterID dest) -+ { -+ m_assembler.subu(dest, op1, op2); -+ } -+ - void sub32(TrustedImm32 imm, RegisterID dest) - { - if (imm.m_value >= -32767 && imm.m_value <= 32768 -@@ -495,6 +572,11 @@ public: - m_assembler.xorInsn(dest, dest, src); - } - -+ void xor32(RegisterID op1, RegisterID op2, RegisterID dest) -+ { -+ m_assembler.xorInsn(dest, op1, op2); -+ } -+ - void xor32(TrustedImm32 imm, RegisterID dest) - { - if (imm.m_value == -1) { -@@ -510,6 +592,21 @@ public: - m_assembler.xorInsn(dest, dest, immTempRegister); - } - -+ void xor32(TrustedImm32 imm, RegisterID src, RegisterID dest) -+ { -+ if (imm.m_value == -1) { -+ m_assembler.nor(dest, src, MIPSRegisters::zero); -+ return; -+ } -+ -+ /* -+ li immTemp, imm -+ xor dest, dest, immTemp -+ */ -+ move(imm, immTempRegister); -+ m_assembler.xorInsn(dest, src, immTempRegister); -+ } -+ - void sqrtDouble(FPRegisterID src, FPRegisterID dst) - { - m_assembler.sqrtd(dst, src); -@@ -989,6 +1086,44 @@ public: - } - } - -+ void store32(TrustedImm32 imm, BaseIndex address) -+ { -+ if (address.offset >= -32768 && address.offset <= 32767 && !m_fixedWidth) { -+ /* -+ sll addrTemp, address.index, address.scale -+ addu addrTemp, addrTemp, address.base -+ sw src, address.offset(addrTemp) -+ */ -+ m_assembler.sll(addrTempRegister, address.index, address.scale); -+ m_assembler.addu(addrTempRegister, addrTempRegister, address.base); -+ if (!imm.m_value) -+ m_assembler.sw(MIPSRegisters::zero, addrTempRegister, address.offset); -+ else { -+ move(imm, immTempRegister); -+ m_assembler.sw(immTempRegister, addrTempRegister, address.offset); -+ } -+ } else { -+ /* -+ sll addrTemp, address.index, address.scale -+ addu addrTemp, addrTemp, address.base -+ lui immTemp, (address.offset + 0x8000) >> 16 -+ addu addrTemp, addrTemp, immTemp -+ sw src, (address.offset & 0xffff)(at) -+ */ -+ m_assembler.sll(addrTempRegister, address.index, address.scale); -+ m_assembler.addu(addrTempRegister, addrTempRegister, address.base); -+ m_assembler.lui(immTempRegister, (address.offset + 0x8000) >> 16); -+ m_assembler.addu(addrTempRegister, addrTempRegister, immTempRegister); -+ if (!imm.m_value && !m_fixedWidth) -+ m_assembler.sw(MIPSRegisters::zero, addrTempRegister, address.offset); -+ else { -+ move(imm, immTempRegister); -+ m_assembler.sw(immTempRegister, addrTempRegister, address.offset); -+ } -+ } -+ } -+ -+ - void store32(RegisterID src, const void* address) - { - /* -@@ -1336,6 +1471,15 @@ public: - m_fixedWidth = false; - } - -+ void jump(AbsoluteAddress address) -+ { -+ m_fixedWidth = true; -+ load32(address.m_ptr, MIPSRegisters::t9); -+ m_assembler.jr(MIPSRegisters::t9); -+ m_assembler.nop(); -+ m_fixedWidth = false; -+ } -+ - void moveDoubleToInts(FPRegisterID src, RegisterID dest1, RegisterID dest2) - { - m_assembler.vmov(dest1, dest2, src); -@@ -1404,6 +1548,53 @@ public: - return Jump(); - } - -+ Jump branchAdd32(ResultCondition cond, RegisterID op1, RegisterID op2, RegisterID dest) -+ { -+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); -+ if (cond == Overflow) { -+ /* -+ move dataTemp, op1 -+ xor cmpTemp, dataTemp, op2 -+ bltz cmpTemp, No_overflow # diff sign bit -> no overflow -+ addu dest, dataTemp, op2 -+ xor cmpTemp, dest, dataTemp -+ bgez cmpTemp, No_overflow # same sign big -> no overflow -+ nop -+ b Overflow -+ nop -+ nop -+ nop -+ nop -+ nop -+ No_overflow: -+ */ -+ move(op1, dataTempRegister); -+ m_assembler.xorInsn(cmpTempRegister, dataTempRegister, op2); -+ m_assembler.bltz(cmpTempRegister, 10); -+ m_assembler.addu(dest, dataTempRegister, op2); -+ m_assembler.xorInsn(cmpTempRegister, dest, dataTempRegister); -+ m_assembler.bgez(cmpTempRegister, 7); -+ m_assembler.nop(); -+ return jump(); -+ } -+ if (cond == Signed) { -+ add32(op1, op2, dest); -+ // Check if dest is negative. -+ m_assembler.slt(cmpTempRegister, dest, MIPSRegisters::zero); -+ return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); -+ } -+ if (cond == Zero) { -+ add32(op1, op2, dest); -+ return branchEqual(dest, MIPSRegisters::zero); -+ } -+ if (cond == NonZero) { -+ add32(op1, op2, dest); -+ return branchNotEqual(dest, MIPSRegisters::zero); -+ } -+ ASSERT(0); -+ return Jump(); -+ } -+ - Jump branchAdd32(ResultCondition cond, TrustedImm32 imm, RegisterID dest) - { - move(imm, immTempRegister); -@@ -1417,6 +1608,111 @@ public: - return branchAdd32(cond, immTempRegister, dest); - } - -+ Jump branchAdd32(ResultCondition cond, TrustedImm32 imm, AbsoluteAddress dest) -+ { -+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); -+ if (cond == Overflow) { -+ /* -+ move dataTemp, dest -+ xori cmpTemp, dataTemp, imm -+ bltz cmpTemp, No_overflow # diff sign bit -> no overflow -+ addiu dataTemp, dataTemp, imm -+ move dest, dataTemp -+ xori cmpTemp, dataTemp, imm -+ bgez cmpTemp, No_overflow # same sign big -> no overflow -+ nop -+ b Overflow -+ nop -+ nop -+ nop -+ nop -+ nop -+ No_overflow: -+ */ -+ if (imm.m_value >= -32768 && imm.m_value <= 32767 && !m_fixedWidth) { -+ load32(dest.m_ptr, dataTempRegister); -+ m_assembler.xori(cmpTempRegister, dataTempRegister, imm.m_value); -+ m_assembler.bltz(cmpTempRegister, 10); -+ m_assembler.addiu(dataTempRegister, dataTempRegister, imm.m_value); -+ store32(dataTempRegister, dest.m_ptr); -+ m_assembler.xori(cmpTempRegister, dataTempRegister, imm.m_value); -+ m_assembler.bgez(cmpTempRegister, 7); -+ m_assembler.nop(); -+ } else { -+ load32(dest.m_ptr, dataTempRegister); -+ move(imm, immTempRegister); -+ m_assembler.xorInsn(cmpTempRegister, dataTempRegister, immTempRegister); -+ m_assembler.bltz(cmpTempRegister, 10); -+ m_assembler.addiu(dataTempRegister, dataTempRegister, immTempRegister); -+ store32(dataTempRegister, dest.m_ptr); -+ m_assembler.xori(cmpTempRegister, dataTempRegister, immTempRegister); -+ m_assembler.bgez(cmpTempRegister, 7); -+ m_assembler.nop(); -+ } -+ return jump(); -+ } -+ move(imm, immTempRegister); -+ load32(dest.m_ptr, dataTempRegister); -+ add32(immTempRegister, dataTempRegister); -+ store32(dataTempRegister, dest.m_ptr); -+ if (cond == Signed) { -+ // Check if dest is negative. -+ m_assembler.slt(cmpTempRegister, dataTempRegister, MIPSRegisters::zero); -+ return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); -+ } -+ if (cond == Zero) -+ return branchEqual(dataTempRegister, MIPSRegisters::zero); -+ if (cond == NonZero) -+ return branchNotEqual(dataTempRegister, MIPSRegisters::zero); -+ ASSERT(0); -+ return Jump(); -+ } -+ -+ Jump branchMul32(ResultCondition cond, RegisterID src1, RegisterID src2, RegisterID dest) -+ { -+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); -+ if (cond == Overflow) { -+ /* -+ mult src, dest -+ mfhi dataTemp -+ mflo dest -+ sra addrTemp, dest, 31 -+ beq dataTemp, addrTemp, No_overflow # all sign bits (bit 63 to bit 31) are the same -> no overflow -+ nop -+ b Overflow -+ nop -+ nop -+ nop -+ nop -+ nop -+ No_overflow: -+ */ -+ m_assembler.mult(src1, src2); -+ m_assembler.mfhi(dataTempRegister); -+ m_assembler.mflo(dest); -+ m_assembler.sra(addrTempRegister, dest, 31); -+ m_assembler.beq(dataTempRegister, addrTempRegister, 7); -+ m_assembler.nop(); -+ return jump(); -+ } -+ if (cond == Signed) { -+ mul32(src1, src2, dest); -+ // Check if dest is negative. -+ m_assembler.slt(cmpTempRegister, dest, MIPSRegisters::zero); -+ return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); -+ } -+ if (cond == Zero) { -+ mul32(src1, src2, dest); -+ return branchEqual(dest, MIPSRegisters::zero); -+ } -+ if (cond == NonZero) { -+ mul32(src1, src2, dest); -+ return branchNotEqual(dest, MIPSRegisters::zero); -+ } -+ ASSERT(0); -+ return Jump(); -+ } -+ - Jump branchMul32(ResultCondition cond, RegisterID src, RegisterID dest) - { - ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); -@@ -1465,8 +1761,7 @@ public: - Jump branchMul32(ResultCondition cond, TrustedImm32 imm, RegisterID src, RegisterID dest) - { - move(imm, immTempRegister); -- move(src, dest); -- return branchMul32(cond, immTempRegister, dest); -+ return branchMul32(cond, immTempRegister, src, dest); - } - - Jump branchSub32(ResultCondition cond, RegisterID src, RegisterID dest) -@@ -1525,8 +1820,60 @@ public: - Jump branchSub32(ResultCondition cond, RegisterID src, TrustedImm32 imm, RegisterID dest) - { - move(imm, immTempRegister); -- move(src, dest); -- return branchSub32(cond, immTempRegister, dest); -+ return branchSub32(cond, src, immTempRegister, dest); -+ } -+ -+ Jump branchSub32(ResultCondition cond, RegisterID op1, RegisterID op2, RegisterID dest) -+ { -+ ASSERT((cond == Overflow) || (cond == Signed) || (cond == Zero) || (cond == NonZero)); -+ if (cond == Overflow) { -+ /* -+ move dataTemp, op1 -+ xor cmpTemp, dataTemp, op2 -+ bgez cmpTemp, No_overflow # same sign bit -> no overflow -+ subu dest, dataTemp, op2 -+ xor cmpTemp, dest, dataTemp -+ bgez cmpTemp, No_overflow # same sign bit -> no overflow -+ nop -+ b Overflow -+ nop -+ nop -+ nop -+ nop -+ nop -+ No_overflow: -+ */ -+ move(op1, dataTempRegister); -+ m_assembler.xorInsn(cmpTempRegister, dataTempRegister, op2); -+ m_assembler.bgez(cmpTempRegister, 10); -+ m_assembler.subu(dest, dataTempRegister, op2); -+ m_assembler.xorInsn(cmpTempRegister, dest, dataTempRegister); -+ m_assembler.bgez(cmpTempRegister, 7); -+ m_assembler.nop(); -+ return jump(); -+ } -+ if (cond == Signed) { -+ sub32(op1, op2, dest); -+ // Check if dest is negative. -+ m_assembler.slt(cmpTempRegister, dest, MIPSRegisters::zero); -+ return branchNotEqual(cmpTempRegister, MIPSRegisters::zero); -+ } -+ if (cond == Zero) { -+ sub32(op1, op2, dest); -+ return branchEqual(dest, MIPSRegisters::zero); -+ } -+ if (cond == NonZero) { -+ sub32(op1, op2, dest); -+ return branchNotEqual(dest, MIPSRegisters::zero); -+ } -+ ASSERT(0); -+ return Jump(); -+ } -+ -+ Jump branchNeg32(ResultCondition cond, RegisterID srcDest) -+ { -+ m_assembler.li(dataTempRegister, -1); -+ return branchMul32(cond, dataTempRegister, srcDest); - } - - Jump branchOr32(ResultCondition cond, RegisterID src, RegisterID dest) -@@ -1578,7 +1925,8 @@ public: - - Call call(RegisterID target) - { -- m_assembler.jalr(target); -+ move(target, MIPSRegisters::t9); -+ m_assembler.jalr(MIPSRegisters::t9); - m_assembler.nop(); - return Call(m_assembler.label(), Call::None); - } -@@ -1822,7 +2170,7 @@ public: - lui immTemp, (address.offset + 0x8000) >> 16 - addu addrTemp, addrTemp, immTemp - lwc1 dest, (address.offset & 0xffff)(at) -- lwc1 dest+4, (address.offset & 0xffff + 4)(at) -+ lwc1 dest+1, (address.offset & 0xffff + 4)(at) - */ - m_assembler.sll(addrTempRegister, address.index, address.scale); - m_assembler.addu(addrTempRegister, addrTempRegister, address.base); -@@ -2009,6 +2357,19 @@ public: - #endif - } - -+ void moveDouble(FPRegisterID src, FPRegisterID dest) -+ { -+ if (src != dest || m_fixedWidth) -+ m_assembler.movd(dest, src); -+ } -+ -+ void swapDouble(FPRegisterID fr1, FPRegisterID fr2) -+ { -+ moveDouble(fr1, fpTempRegister); -+ moveDouble(fr2, fr1); -+ moveDouble(fpTempRegister, fr2); -+ } -+ - void addDouble(FPRegisterID src, FPRegisterID dest) - { - m_assembler.addd(dest, dest, src); -@@ -2036,6 +2397,11 @@ public: - m_assembler.subd(dest, dest, src); - } - -+ void subDouble(FPRegisterID op1, FPRegisterID op2, FPRegisterID dest) -+ { -+ m_assembler.subd(dest, op1, op2); -+ } -+ - void subDouble(Address src, FPRegisterID dest) - { - loadDouble(src, fpTempRegister); -@@ -2053,11 +2419,32 @@ public: - m_assembler.muld(dest, dest, fpTempRegister); - } - -+ void mulDouble(FPRegisterID op1, FPRegisterID op2, FPRegisterID dest) -+ { -+ m_assembler.muld(dest, op1, op2); -+ } -+ - void divDouble(FPRegisterID src, FPRegisterID dest) - { - m_assembler.divd(dest, dest, src); - } - -+ void divDouble(FPRegisterID op1, FPRegisterID op2, FPRegisterID dest) -+ { -+ m_assembler.divd(dest, op1, op2); -+ } -+ -+ void divDouble(Address src, FPRegisterID dest) -+ { -+ loadDouble(src, fpTempRegister); -+ m_assembler.divd(dest, dest, fpTempRegister); -+ } -+ -+ void negateDouble(FPRegisterID src, FPRegisterID dest) -+ { -+ m_assembler.negd(dest, src); -+ } -+ - void convertInt32ToDouble(RegisterID src, FPRegisterID dest) - { - m_assembler.mtc1(src, fpTempRegister); -@@ -2117,6 +2504,8 @@ public: - - Jump branchEqual(RegisterID rs, RegisterID rt) - { -+ m_assembler.nop(); -+ m_assembler.nop(); - m_assembler.appendJump(); - m_assembler.beq(rs, rt, 0); - m_assembler.nop(); -@@ -2126,6 +2515,8 @@ public: - - Jump branchNotEqual(RegisterID rs, RegisterID rt) - { -+ m_assembler.nop(); -+ m_assembler.nop(); - m_assembler.appendJump(); - m_assembler.bne(rs, rt, 0); - m_assembler.nop(); -@@ -2192,11 +2583,33 @@ public: - // If the result is not representable as a 32 bit value, branch. - // May also branch for some values that are representable in 32 bits - // (specifically, in this case, INT_MAX 0x7fffffff). -- Jump branchTruncateDoubleToInt32(FPRegisterID src, RegisterID dest) -+ enum BranchTruncateType { BranchIfTruncateFailed, BranchIfTruncateSuccessful }; -+ Jump branchTruncateDoubleToInt32(FPRegisterID src, RegisterID dest, BranchTruncateType branchType = BranchIfTruncateFailed) -+ { -+ m_assembler.truncwd(fpTempRegister, src); -+ m_assembler.mfc1(dest, fpTempRegister); -+ return branch32(branchType == BranchIfTruncateFailed ? Equal : NotEqual, dest, TrustedImm32(0x7fffffff)); -+ } -+ -+ Jump branchTruncateDoubleToUint32(FPRegisterID src, RegisterID dest, BranchTruncateType branchType = BranchIfTruncateFailed) -+ { -+ m_assembler.truncwd(fpTempRegister, src); -+ m_assembler.mfc1(dest, fpTempRegister); -+ return branch32(branchType == BranchIfTruncateFailed ? Equal : NotEqual, dest, TrustedImm32(0)); -+ } -+ -+ // Result is undefined if the value is outside of the integer range. -+ void truncateDoubleToInt32(FPRegisterID src, RegisterID dest) -+ { -+ m_assembler.truncwd(fpTempRegister, src); -+ m_assembler.mfc1(dest, fpTempRegister); -+ } -+ -+ // Result is undefined if src > 2^31 -+ void truncateDoubleToUint32(FPRegisterID src, RegisterID dest) - { - m_assembler.truncwd(fpTempRegister, src); - m_assembler.mfc1(dest, fpTempRegister); -- return branch32(Equal, dest, TrustedImm32(0x7fffffff)); - } - - // Convert 'src' to an integer, and places the resulting 'dest'. -@@ -2218,28 +2631,43 @@ public: - - Jump branchDoubleNonZero(FPRegisterID reg, FPRegisterID scratch) - { --#if WTF_MIPS_ISA_REV(2) && WTF_MIPS_FP64 -- m_assembler.mtc1(MIPSRegisters::zero, scratch); -- m_assembler.mthc1(MIPSRegisters::zero, scratch); --#else -- m_assembler.mtc1(MIPSRegisters::zero, scratch); -- m_assembler.mtc1(MIPSRegisters::zero, FPRegisterID(scratch + 1)); --#endif -+ m_assembler.vmov(scratch, MIPSRegisters::zero, MIPSRegisters::zero); - return branchDouble(DoubleNotEqual, reg, scratch); - } - - Jump branchDoubleZeroOrNaN(FPRegisterID reg, FPRegisterID scratch) - { --#if WTF_MIPS_ISA_REV(2) && WTF_MIPS_FP64 -- m_assembler.mtc1(MIPSRegisters::zero, scratch); -- m_assembler.mthc1(MIPSRegisters::zero, scratch); --#else -- m_assembler.mtc1(MIPSRegisters::zero, scratch); -- m_assembler.mtc1(MIPSRegisters::zero, FPRegisterID(scratch + 1)); --#endif -+ m_assembler.vmov(scratch, MIPSRegisters::zero, MIPSRegisters::zero); - return branchDouble(DoubleEqualOrUnordered, reg, scratch); - } - -+ // Invert a relational condition, e.g. == becomes !=, < becomes >=, etc. -+ static RelationalCondition invert(RelationalCondition cond) -+ { -+ RelationalCondition r; -+ if (cond == Equal) -+ r = NotEqual; -+ else if (cond == NotEqual) -+ r = Equal; -+ else if (cond == Above) -+ r = BelowOrEqual; -+ else if (cond == AboveOrEqual) -+ r = Below; -+ else if (cond == Below) -+ r = AboveOrEqual; -+ else if (cond == BelowOrEqual) -+ r = Above; -+ else if (cond == GreaterThan) -+ r = LessThanOrEqual; -+ else if (cond == GreaterThanOrEqual) -+ r = LessThan; -+ else if (cond == LessThan) -+ r = GreaterThanOrEqual; -+ else if (cond == LessThanOrEqual) -+ r = GreaterThan; -+ return r; -+ } -+ - void nop() - { - m_assembler.nop(); -@@ -2252,12 +2680,12 @@ public: - - static void replaceWithJump(CodeLocationLabel instructionStart, CodeLocationLabel destination) - { -- RELEASE_ASSERT_NOT_REACHED(); -+ MIPSAssembler::replaceWithJump(instructionStart.dataLocation(), destination.dataLocation()); - } - - static ptrdiff_t maxJumpReplacementSize() - { -- RELEASE_ASSERT_NOT_REACHED(); -+ MIPSAssembler::maxJumpReplacementSize(); - return 0; - } - -diff --git a/Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h b/Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h -index fa0f5e0..573d8dc 100644 ---- a/Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h -+++ b/Source/JavaScriptCore/dfg/DFGAssemblyHelpers.h -@@ -93,6 +93,23 @@ public: - } - #endif - -+#if CPU(MIPS) -+ ALWAYS_INLINE void preserveReturnAddressAfterCall(RegisterID reg) -+ { -+ move(returnAddressRegister, reg); -+ } -+ -+ ALWAYS_INLINE void restoreReturnAddressBeforeReturn(RegisterID reg) -+ { -+ move(reg, returnAddressRegister); -+ } -+ -+ ALWAYS_INLINE void restoreReturnAddressBeforeReturn(Address address) -+ { -+ loadPtr(address, returnAddressRegister); -+ } -+#endif -+ - void emitGetFromCallFrameHeaderPtr(JSStack::CallFrameHeaderEntry entry, GPRReg to) - { - loadPtr(Address(GPRInfo::callFrameRegister, entry * sizeof(Register)), to); -@@ -193,7 +210,7 @@ public: - move(TrustedImmPtr(scratchBuffer->activeLengthPtr()), GPRInfo::regT0); - storePtr(TrustedImmPtr(scratchSize), GPRInfo::regT0); - --#if CPU(X86_64) || CPU(ARM) -+#if CPU(X86_64) || CPU(ARM) || CPU(MIPS) - move(TrustedImmPtr(buffer), GPRInfo::argumentGPR2); - move(TrustedImmPtr(argument), GPRInfo::argumentGPR1); - move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0); -diff --git a/Source/JavaScriptCore/dfg/DFGCCallHelpers.h b/Source/JavaScriptCore/dfg/DFGCCallHelpers.h -index 8adde05..3d99f6f 100644 ---- a/Source/JavaScriptCore/dfg/DFGCCallHelpers.h -+++ b/Source/JavaScriptCore/dfg/DFGCCallHelpers.h -@@ -576,6 +576,39 @@ public: - poke(GPRInfo::nonArgGPR0); - } - #endif // CPU(ARM_HARDFP) -+#elif CPU(MIPS) -+ ALWAYS_INLINE void setupArguments(FPRReg arg1) -+ { -+ moveDouble(arg1, FPRInfo::argumentFPR0); -+ } -+ -+ ALWAYS_INLINE void setupArguments(FPRReg arg1, FPRReg arg2) -+ { -+ if (arg2 != FPRInfo::argumentFPR0) { -+ moveDouble(arg1, FPRInfo::argumentFPR0); -+ moveDouble(arg2, FPRInfo::argumentFPR1); -+ } else if (arg1 != FPRInfo::argumentFPR1) { -+ moveDouble(arg2, FPRInfo::argumentFPR1); -+ moveDouble(arg1, FPRInfo::argumentFPR0); -+ } else { -+ // Swap arg1, arg2. -+ swapDouble(FPRInfo::argumentFPR0, FPRInfo::argumentFPR1); -+ } -+ } -+ -+ ALWAYS_INLINE void setupArgumentsWithExecState(FPRReg arg1, GPRReg arg2) -+ { -+ assembler().vmov(GPRInfo::argumentGPR2, GPRInfo::argumentGPR3, arg1); -+ move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0); -+ poke(arg2, 4); -+ } -+ -+ ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, FPRReg arg3) -+ { -+ setupStubArguments(arg1, arg2); -+ move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR0); -+ poke(arg3, 4); -+ } - #else - #error "DFG JIT not supported on this platform." - #endif -@@ -803,119 +836,126 @@ public: - // These methods are suitable for any calling convention that provides for - // exactly 4 argument registers, e.g. ARMv7. - #if NUMBER_OF_ARGUMENT_REGISTERS == 4 -+ -+#if CPU(MIPS) -+#define POKE_ARGUMENT_OFFSET 4 -+#else -+#define POKE_ARGUMENT_OFFSET 0 -+#endif -+ - ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, GPRReg arg3, GPRReg arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, GPRReg arg3, TrustedImm32 arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, TrustedImmPtr arg2, TrustedImm32 arg3, GPRReg arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, TrustedImmPtr arg2, TrustedImm32 arg3, GPRReg arg4, GPRReg arg5) - { -- poke(arg5, 1); -- poke(arg4); -+ poke(arg5, POKE_ARGUMENT_OFFSET + 1); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, TrustedImm32 arg3, TrustedImm32 arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, TrustedImm32 arg2, GPRReg arg3, GPRReg arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, GPRReg arg3, TrustedImmPtr arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, GPRReg arg3, GPRReg arg4, GPRReg arg5) - { -- poke(arg5, 1); -- poke(arg4); -+ poke(arg5, POKE_ARGUMENT_OFFSET + 1); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, GPRReg arg2, GPRReg arg3, GPRReg arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, GPRReg arg2, GPRReg arg3, TrustedImmPtr arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, GPRReg arg2, TrustedImm32 arg3, TrustedImmPtr arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, GPRReg arg2, TrustedImm32 arg3, GPRReg arg4) - { -- poke(arg4); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, TrustedImm32 arg3, GPRReg arg4, GPRReg arg5) - { -- poke(arg5, 1); -- poke(arg4); -+ poke(arg5, POKE_ARGUMENT_OFFSET + 1); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, TrustedImm32 arg3, GPRReg arg4, TrustedImm32 arg5) - { -- poke(arg5, 1); -- poke(arg4); -+ poke(arg5, POKE_ARGUMENT_OFFSET + 1); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, GPRReg arg2, GPRReg arg3, GPRReg arg4, TrustedImmPtr arg5) - { -- poke(arg5, 1); -- poke(arg4); -+ poke(arg5, POKE_ARGUMENT_OFFSET + 1); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, GPRReg arg2, GPRReg arg3, TrustedImm32 arg4, TrustedImm32 arg5) - { -- poke(arg5, 1); -- poke(arg4); -+ poke(arg5, POKE_ARGUMENT_OFFSET + 1); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, TrustedImm32 arg2, TrustedImm32 arg3, GPRReg arg4, GPRReg arg5) - { -- poke(arg5, 1); -- poke(arg4); -+ poke(arg5, POKE_ARGUMENT_OFFSET + 1); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - - ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, GPRReg arg2, GPRReg arg3, GPRReg arg4, GPRReg arg5) - { -- poke(arg5, 1); -- poke(arg4); -+ poke(arg5, POKE_ARGUMENT_OFFSET + 1); -+ poke(arg4, POKE_ARGUMENT_OFFSET); - setupArgumentsWithExecState(arg1, arg2, arg3); - } - -diff --git a/Source/JavaScriptCore/dfg/DFGFPRInfo.h b/Source/JavaScriptCore/dfg/DFGFPRInfo.h -index 17aaa7d..e18ec06 100644 ---- a/Source/JavaScriptCore/dfg/DFGFPRInfo.h -+++ b/Source/JavaScriptCore/dfg/DFGFPRInfo.h -@@ -164,6 +164,74 @@ public: - - #endif - -+#if CPU(MIPS) -+ -+class FPRInfo { -+public: -+ typedef FPRReg RegisterType; -+ static const unsigned numberOfRegisters = 6; -+ -+ // Temporary registers. -+ static const FPRReg fpRegT0 = MIPSRegisters::f0; -+ static const FPRReg fpRegT1 = MIPSRegisters::f4; -+ static const FPRReg fpRegT2 = MIPSRegisters::f6; -+ static const FPRReg fpRegT3 = MIPSRegisters::f8; -+ static const FPRReg fpRegT4 = MIPSRegisters::f10; -+ static const FPRReg fpRegT5 = MIPSRegisters::f18; -+ -+ static const FPRReg returnValueFPR = MIPSRegisters::f0; -+ -+ static const FPRReg argumentFPR0 = MIPSRegisters::f12; -+ static const FPRReg argumentFPR1 = MIPSRegisters::f14; -+ -+ static FPRReg toRegister(unsigned index) -+ { -+ static const FPRReg registerForIndex[numberOfRegisters] = { -+ fpRegT0, fpRegT1, fpRegT2, fpRegT3, fpRegT4, fpRegT5 }; -+ -+ ASSERT(index < numberOfRegisters); -+ return registerForIndex[index]; -+ } -+ -+ static unsigned toIndex(FPRReg reg) -+ { -+ ASSERT(reg != InvalidFPRReg); -+ ASSERT(reg < 20); -+ static const unsigned indexForRegister[20] = { -+ 0, InvalidIndex, InvalidIndex, InvalidIndex, -+ 1, InvalidIndex, 2, InvalidIndex, -+ 3, InvalidIndex, 4, InvalidIndex, -+ InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, -+ InvalidIndex, InvalidIndex, 5, InvalidIndex, -+ }; -+ unsigned result = indexForRegister[reg]; -+ ASSERT(result != InvalidIndex); -+ return result; -+ } -+ -+ static const char* debugName(FPRReg reg) -+ { -+ ASSERT(reg != InvalidFPRReg); -+ ASSERT(reg < 32); -+ static const char* nameForRegister[32] = { -+ "f0", "f1", "f2", "f3", -+ "f4", "f5", "f6", "f7", -+ "f8", "f9", "f10", "f11", -+ "f12", "f13", "f14", "f15" -+ "f16", "f17", "f18", "f19" -+ "f20", "f21", "f22", "f23" -+ "f24", "f25", "f26", "f27" -+ "f28", "f29", "f30", "f31" -+ }; -+ return nameForRegister[reg]; -+ } -+private: -+ -+ static const unsigned InvalidIndex = 0xffffffff; -+}; -+ -+#endif -+ - typedef RegisterBank::iterator fpr_iterator; - - } } // namespace JSC::DFG -diff --git a/Source/JavaScriptCore/dfg/DFGGPRInfo.h b/Source/JavaScriptCore/dfg/DFGGPRInfo.h -index 3d07556..aa634cd 100644 ---- a/Source/JavaScriptCore/dfg/DFGGPRInfo.h -+++ b/Source/JavaScriptCore/dfg/DFGGPRInfo.h -@@ -461,6 +461,73 @@ private: - - #endif - -+#if CPU(MIPS) -+#define NUMBER_OF_ARGUMENT_REGISTERS 4 -+ -+class GPRInfo { -+public: -+ typedef GPRReg RegisterType; -+ static const unsigned numberOfRegisters = 6; -+ -+ // Temporary registers. -+ static const GPRReg regT0 = MIPSRegisters::v0; -+ static const GPRReg regT1 = MIPSRegisters::v1; -+ static const GPRReg regT2 = MIPSRegisters::t4; -+ static const GPRReg regT3 = MIPSRegisters::t5; -+ static const GPRReg regT4 = MIPSRegisters::t6; -+ static const GPRReg regT5 = MIPSRegisters::t7; -+ // These registers match the baseline JIT. -+ static const GPRReg cachedResultRegister = regT0; -+ static const GPRReg cachedResultRegister2 = regT1; -+ static const GPRReg callFrameRegister = MIPSRegisters::s0; -+ // These constants provide the names for the general purpose argument & return value registers. -+ static const GPRReg argumentGPR0 = MIPSRegisters::a0; -+ static const GPRReg argumentGPR1 = MIPSRegisters::a1; -+ static const GPRReg argumentGPR2 = MIPSRegisters::a2; -+ static const GPRReg argumentGPR3 = MIPSRegisters::a3; -+ static const GPRReg nonArgGPR0 = regT2; -+ static const GPRReg nonArgGPR1 = regT3; -+ static const GPRReg nonArgGPR2 = regT4; -+ static const GPRReg returnValueGPR = regT0; -+ static const GPRReg returnValueGPR2 = regT1; -+ static const GPRReg nonPreservedNonReturnGPR = regT5; -+ -+ static GPRReg toRegister(unsigned index) -+ { -+ ASSERT(index < numberOfRegisters); -+ static const GPRReg registerForIndex[numberOfRegisters] = { regT0, regT1, regT2, regT3, regT4, regT5 }; -+ return registerForIndex[index]; -+ } -+ -+ static unsigned toIndex(GPRReg reg) -+ { -+ ASSERT(reg != InvalidGPRReg); -+ ASSERT(reg < 16); -+ static const unsigned indexForRegister[16] = { InvalidIndex, InvalidIndex, 0, 1, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, 2, 3, 4, 5 }; -+ unsigned result = indexForRegister[reg]; -+ ASSERT(result != InvalidIndex); -+ return result; -+ } -+ -+ static const char* debugName(GPRReg reg) -+ { -+ ASSERT(reg != InvalidGPRReg); -+ ASSERT(reg < 16); -+ static const char* nameForRegister[16] = { -+ "zero", "at", "v0", "v1", -+ "a0", "a1", "a2", "a3", -+ "t0", "t1", "t2", "t3", -+ "t4", "t5", "t6", "t7" -+ }; -+ return nameForRegister[reg]; -+ } -+private: -+ -+ static const unsigned InvalidIndex = 0xffffffff; -+}; -+ -+#endif -+ - typedef RegisterBank::iterator gpr_iterator; - - } } // namespace JSC::DFG -diff --git a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h -index ea33f38..247274b 100644 ---- a/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h -+++ b/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h -@@ -1241,7 +1241,7 @@ public: - - // EncodedJSValue in JSVALUE32_64 is a 64-bit integer. When being compiled in ARM EABI, it must be aligned even-numbered register (r0, r2 or [sp]). - // To avoid assemblies from using wrong registers, let's occupy r1 or r3 with a dummy argument when necessary. --#if COMPILER_SUPPORTS(EABI) && CPU(ARM) -+#if (COMPILER_SUPPORTS(EABI) && CPU(ARM)) || CPU(MIPS) - #define EABI_32BIT_DUMMY_ARG TrustedImm32(0), - #else - #define EABI_32BIT_DUMMY_ARG -@@ -1691,7 +1691,7 @@ public: - } - #endif - --#if !defined(NDEBUG) && !CPU(ARM) -+#if !defined(NDEBUG) && !CPU(ARM) && !CPU(MIPS) - void prepareForExternalCall() - { - // We're about to call out to a "native" helper function. The helper -diff --git a/Source/JavaScriptCore/jit/JSInterfaceJIT.h b/Source/JavaScriptCore/jit/JSInterfaceJIT.h -index 7fdeaf0..48ad6b2 100644 ---- a/Source/JavaScriptCore/jit/JSInterfaceJIT.h -+++ b/Source/JavaScriptCore/jit/JSInterfaceJIT.h -@@ -125,6 +125,10 @@ namespace JSC { - static const RegisterID cachedResultRegister = MIPSRegisters::v0; - static const RegisterID firstArgumentRegister = MIPSRegisters::a0; - -+#if ENABLE(VALUE_PROFILER) -+ static const RegisterID bucketCounterRegister = MIPSRegisters::s3; -+#endif -+ - // regT0 must be v0 for returning a 32-bit value. - static const RegisterID regT0 = MIPSRegisters::v0; - -diff --git a/Source/JavaScriptCore/runtime/JSGlobalData.h b/Source/JavaScriptCore/runtime/JSGlobalData.h -index 5d47ab9..c02f336 100644 ---- a/Source/JavaScriptCore/runtime/JSGlobalData.h -+++ b/Source/JavaScriptCore/runtime/JSGlobalData.h -@@ -141,14 +141,18 @@ namespace JSC { - return result; - } - -- static size_t allocationSize(size_t bufferSize) { return sizeof(size_t) + bufferSize; } -+ static size_t allocationSize(size_t bufferSize) { return sizeof(ScratchBuffer) + bufferSize; } - void setActiveLength(size_t activeLength) { m_activeLength = activeLength; } - size_t activeLength() const { return m_activeLength; }; - size_t* activeLengthPtr() { return &m_activeLength; }; - void* dataBuffer() { return m_buffer; } - - size_t m_activeLength; -+#if CPU(MIPS) && (defined WTF_MIPS_ARCH_REV && WTF_MIPS_ARCH_REV == 2) -+ void* m_buffer[0] __attribute__((aligned(8))); -+#else - void* m_buffer[0]; -+#endif - }; - #if COMPILER(MSVC) - #pragma warning(pop) -diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h -index 1698247..2d90359 100644 ---- a/Source/WTF/wtf/Platform.h -+++ b/Source/WTF/wtf/Platform.h -@@ -818,6 +818,10 @@ - #if CPU(ARM_TRADITIONAL) - #define ENABLE_DFG_JIT 1 - #endif -+/* Enable the DFG JIT on MIPS. */ -+#if CPU(MIPS) -+#define ENABLE_DFG_JIT 1 -+#endif - #endif - - /* If the jit is not available, enable the LLInt C Loop: */ --- -1.8.3.2 - diff --git a/bsp/buildroot/package/webkit/0008-support-bison-3.0.patch b/bsp/buildroot/package/webkit/0008-support-bison-3.0.patch deleted file mode 100644 index c081b207..00000000 --- a/bsp/buildroot/package/webkit/0008-support-bison-3.0.patch +++ /dev/null @@ -1,22 +0,0 @@ -ANGLE doesn't build with bison 3.0 - -Author: allan.jensen@digia.com -​https://bugs.webkit.org/show_bug.cgi?id=119798 -Reviewed by Antti Koivisto. -Make glslang.y compatible with bison 3.0, by using %lex-param -to set YYLEX_PARAM and getting rid of useless YYID macro. - -From upstream: http://trac.webkit.org/changeset/154109 -[Arnout: adapted to our older webkit version] -Signed-off-by: Arnout Vandecaeppelle (Essensium/Mind) ---- -Index: trunk/Source/ThirdParty/ANGLE/src/compiler/glslang.y -=================================================================== ---- trunk/Source/ThirdParty/ANGLE/src/compiler/glslang.y (revision 154108) -+++ trunk/Source/ThirdParty/ANGLE/src/compiler/glslang.y (revision 154109) -@@ -48,4 +48,5 @@ - %pure-parser - %parse-param {TParseContext* context} -+%lex-param {YYLEX_PARAM} - - %union { diff --git a/bsp/buildroot/package/webkit/Config.in b/bsp/buildroot/package/webkit/Config.in deleted file mode 100644 index c139f521..00000000 --- a/bsp/buildroot/package/webkit/Config.in +++ /dev/null @@ -1,53 +0,0 @@ -config BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS - bool - # ARM needs BLX, so v5t+ - default y if (BR2_arm || BR2_armeb) && !BR2_ARM_CPU_ARMV4 - default y if BR2_i386 || BR2_mips || BR2_mipsel || \ - BR2_sparc || BR2_x86_64 - depends on BR2_USE_MMU # libgail -> pango -> libglib2 - depends on BR2_DEPRECATED_SINCE_2015_08 - -# disabled on powerpc due to bug https://bugs.webkit.org/show_bug.cgi?id=113638 - -config BR2_PACKAGE_WEBKIT - bool "webkit" - depends on BR2_DEPRECATED_SINCE_2015_08 - depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_WCHAR # enchant -> libglib2 - depends on BR2_TOOLCHAIN_HAS_THREADS # enchant -> libglib2; icu - depends on BR2_PACKAGE_LIBGTK2 - depends on BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS - depends on !BR2_BINFMT_FLAT # icu - depends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz - select BR2_PACKAGE_CAIRO - select BR2_PACKAGE_CAIRO_PNG - select BR2_PACKAGE_ENCHANT - select BR2_PACKAGE_HARFBUZZ - select BR2_PACKAGE_ICU - select BR2_PACKAGE_JPEG - select BR2_PACKAGE_LIBCURL - select BR2_PACKAGE_LIBGAIL - select BR2_PACKAGE_LIBSECRET - select BR2_PACKAGE_LIBSOUP - select BR2_PACKAGE_LIBXML2 - select BR2_PACKAGE_LIBXSLT - select BR2_PACKAGE_SQLITE - select BR2_PACKAGE_WEBP - select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_XORG7 - select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_HAS_LIBGL - select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_HAS_LIBGL - help - WebKit is an open source, standards compliant web browser engine. - - Note that WebKit does not build with a toolchain using the - old linuxthreads library. - - http://webkit.org/ - -comment "webkit needs libgtk2 and a toolchain w/ C++, wchar, threads" - depends on BR2_DEPRECATED_SINCE_2015_08 - depends on BR2_PACKAGE_WEBKIT_ARCH_SUPPORTS - depends on BR2_TOOLCHAIN_HAS_SYNC_4 - depends on !BR2_PACKAGE_LIBGTK2 || !BR2_INSTALL_LIBSTDCPP || \ - !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS - depends on BR2_USE_MMU diff --git a/bsp/buildroot/package/webkit/webkit.hash b/bsp/buildroot/package/webkit/webkit.hash deleted file mode 100644 index 59a974df..00000000 --- a/bsp/buildroot/package/webkit/webkit.hash +++ /dev/null @@ -1,2 +0,0 @@ -# locally computed -sha256 51f808c96f52729dde6fb2b58752a6f623aeea74ff1ac6d4a1658720c6206fbe webkitgtk-1.11.5.tar.xz diff --git a/bsp/buildroot/package/webkit/webkit.mk b/bsp/buildroot/package/webkit/webkit.mk deleted file mode 100644 index bbde7f4a..00000000 --- a/bsp/buildroot/package/webkit/webkit.mk +++ /dev/null @@ -1,72 +0,0 @@ -################################################################################ -# -# webkit -# -################################################################################ - -WEBKIT_VERSION = 1.11.5 -WEBKIT_SITE = http://www.webkitgtk.org/releases -WEBKIT_SOURCE = webkitgtk-$(WEBKIT_VERSION).tar.xz -WEBKIT_INSTALL_STAGING = YES -WEBKIT_DEPENDENCIES = host-ruby host-flex host-bison host-gperf enchant harfbuzz \ - icu jpeg libcurl libgail libsecret libsoup libxml2 libxslt libgtk2 sqlite webp - -WEBKIT_DEPENDENCIES += \ - $(if $(BR_PACKAGE_XLIB_LIBXCOMPOSITE),xlib_libXcomposite) \ - $(if $(BR_PACKAGE_XLIB_LIBXDAMAGE),xlib_libXdamage) - -# webkit-disable-tests.patch changes configure.ac therefore autoreconf required -WEBKIT_AUTORECONF = YES -WEBKIT_AUTORECONF_OPTS = -I $(@D)/Source/autotools - -# parallel make install deadlocks with make 3.81 -WEBKIT_INSTALL_STAGING_OPTS = -j1 DESTDIR=$(STAGING_DIR) install -WEBKIT_INSTALL_TARGET_OPTS = -j1 DESTDIR=$(TARGET_DIR) install - -# Does not build and it's disabled by default -# in newer releases -define DISABLE_INDEXED_DATABASE - $(SED) '/ENABLE_INDEXED_DATABASE/s:1:0:' \ - $(@D)/Source/WebCore/GNUmakefile.features.am -endef - -WEBKIT_PRE_CONFIGURE_HOOKS += DISABLE_INDEXED_DATABASE - -# Give explicit path to icu-config, and silence gazillions of warnings -# with recent gcc versions. -WEBKIT_CONF_ENV = ac_cv_path_icu_config=$(STAGING_DIR)/usr/bin/icu-config \ - CFLAGS="$(TARGET_CFLAGS) -Wno-cast-align -Wno-sign-compare" \ - CXXFLAGS="$(TARGET_CXXFLAGS) -Wno-cast-align -Wno-sign-compare" \ - AR_FLAGS="cru" - -WEBKIT_CONF_OPTS += \ - --enable-dependency-tracking \ - --with-gtk=2.0 \ - --disable-geolocation \ - --disable-webkit2 \ - --disable-glibtest \ - --disable-video \ - --disable-tests - -# Xorg Dependencies -WEBKIT_CONF_OPTS += --with-target=x11 -WEBKIT_DEPENDENCIES += xlib_libXt - -ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGLES),yy) -WEBKIT_CONF_OPTS += --enable-gles2 -WEBKIT_DEPENDENCIES += libegl libgles -else -WEBKIT_CONF_OPTS += --disable-gles2 -endif - -# gles/egl support is prefered over opengl by webkit configure -ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) -WEBKIT_CONF_OPTS += --with-acceleration-backend=opengl -WEBKIT_DEPENDENCIES += libgl -else -# OpenGL/glx is auto-detected due to the presence of gl.h/glx.h, which is not -# enough, so disable glx and the use of the OpenGL acceleration backend here -WEBKIT_CONF_OPTS += --disable-glx --with-acceleration-backend=none -endif - -$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/webkitgtk/0001-fix-gcc6-builds.patch b/bsp/buildroot/package/webkitgtk/0001-fix-gcc6-builds.patch new file mode 100644 index 00000000..35487ad5 --- /dev/null +++ b/bsp/buildroot/package/webkitgtk/0001-fix-gcc6-builds.patch @@ -0,0 +1,53 @@ +[CMake] Build failure with GCC 6 (fatal error: stdlib.h: No such file or directory) + +https://bugs.webkit.org/show_bug.cgi?id=161697 + +Reviewed by Michael Catanzaro. + +Get the list of system includes from GCC and add it to the CMake +list of implicit includes. This way, CMake will filter any of this +directories from the list of includes when calling the compiler. + +This avoids an issue with GCC 6 that causes build failures when +including the default include path as a system include (-isystem). + +Upstream, from: https://trac.webkit.org/changeset/205672 + +Signed-off-by: Gustavo Zacarias + +Index: trunk/Source/cmake/OptionsCommon.cmake +=================================================================== +--- trunk/Source/cmake/OptionsCommon.cmake (revision 204084) ++++ trunk/Source/cmake/OptionsCommon.cmake (revision 205672) +@@ -36,4 +36,31 @@ + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics") ++endif () ++ ++# Ensure that the default include system directories are added to the list of CMake implicit includes. ++# This workarounds an issue that happens when using GCC 6 and using system includes (-isystem). ++# For more details check: https://bugs.webkit.org/show_bug.cgi?id=161697 ++macro(DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _compiler _flags _result) ++ file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy" "\n") ++ separate_arguments(_buildFlags UNIX_COMMAND "${_flags}") ++ execute_process(COMMAND ${_compiler} ${_buildFlags} -v -E -x ${_lang} -dD dummy ++ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles OUTPUT_QUIET ++ ERROR_VARIABLE _gccOutput) ++ file(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy") ++ if ("${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list") ++ set(${_result} ${CMAKE_MATCH_1}) ++ string(REPLACE "\n" " " ${_result} "${${_result}}") ++ separate_arguments(${_result}) ++ endif () ++endmacro() ++ ++if (CMAKE_COMPILER_IS_GNUCC) ++ DETERMINE_GCC_SYSTEM_INCLUDE_DIRS("c" "${CMAKE_C_COMPILER}" "${CMAKE_C_FLAGS}" SYSTEM_INCLUDE_DIRS) ++ set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES} ${SYSTEM_INCLUDE_DIRS}) ++endif () ++ ++if (CMAKE_COMPILER_IS_GNUCXX) ++ DETERMINE_GCC_SYSTEM_INCLUDE_DIRS("c++" "${CMAKE_CXX_COMPILER}" "${CMAKE_CXX_FLAGS}" SYSTEM_INCLUDE_DIRS) ++ set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES} ${SYSTEM_INCLUDE_DIRS}) + endif () + diff --git a/bsp/buildroot/package/webkitgtk/webkitgtk.hash b/bsp/buildroot/package/webkitgtk/webkitgtk.hash index f74677eb..f01c7f0c 100644 --- a/bsp/buildroot/package/webkitgtk/webkitgtk.hash +++ b/bsp/buildroot/package/webkitgtk/webkitgtk.hash @@ -1,4 +1,4 @@ -# From http://www.webkitgtk.org/releases/webkitgtk-2.12.4.tar.xz.sha1 -sha1 ebfe6015d81129b6a13a9596d065c54e9c1b93f6 webkitgtk-2.12.4.tar.xz +# From http://www.webkitgtk.org/releases/webkitgtk-2.12.5.tar.xz.sha1 +sha1 2d73fd5b47c68c73aea8b3d7b88acc8e62bdb99c webkitgtk-2.12.5.tar.xz # Calculated based on the hash above -sha256 424d3177599abbc1eb1a1ad7928dd280a62006e992f2fada2e059375a9609a77 webkitgtk-2.12.4.tar.xz +sha256 6b147854b864a5f115fadb97b2b6200b2f696db015216a34e7298d11c88b1c40 webkitgtk-2.12.5.tar.xz diff --git a/bsp/buildroot/package/webkitgtk/webkitgtk.mk b/bsp/buildroot/package/webkitgtk/webkitgtk.mk index f5c43345..78433739 100644 --- a/bsp/buildroot/package/webkitgtk/webkitgtk.mk +++ b/bsp/buildroot/package/webkitgtk/webkitgtk.mk @@ -4,7 +4,7 @@ # ################################################################################ -WEBKITGTK_VERSION = 2.12.4 +WEBKITGTK_VERSION = 2.12.5 WEBKITGTK_SITE = http://www.webkitgtk.org/releases WEBKITGTK_SOURCE = webkitgtk-$(WEBKITGTK_VERSION).tar.xz WEBKITGTK_INSTALL_STAGING = YES diff --git a/bsp/buildroot/package/webkitgtk24/0001-fix-ppc32.patch b/bsp/buildroot/package/webkitgtk24/0001-fix-ppc32.patch deleted file mode 100644 index c655a0ec..00000000 --- a/bsp/buildroot/package/webkitgtk24/0001-fix-ppc32.patch +++ /dev/null @@ -1,34 +0,0 @@ -From https://bugs.webkit.org/show_bug.cgi?id=130837 - -Signed-off-by: Gustavo Zacarias - -diff -Nura webkitgtk-2.4.8/Source/WebKit2/Platform/IPC/Connection.h webkitgtk-2.4.8-ppc/Source/WebKit2/Platform/IPC/Connection.h ---- webkitgtk-2.4.8/Source/WebKit2/Platform/IPC/Connection.h 2015-01-07 06:45:43.000000000 -0300 -+++ webkitgtk-2.4.8-ppc/Source/WebKit2/Platform/IPC/Connection.h 2015-04-20 01:55:41.554547510 -0300 -@@ -216,7 +216,11 @@ - - Client* m_client; - bool m_isServer; -+#if CPU(PPC) -+ uint64_t m_syncRequestID; -+#else - std::atomic m_syncRequestID; -+#endif - - bool m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage; - bool m_shouldExitOnSyncMessageSendFailure; -diff -Nura webkitgtk-2.4.8/Source/WebKit2/UIProcess/StatisticsRequest.cpp webkitgtk-2.4.8-ppc/Source/WebKit2/UIProcess/StatisticsRequest.cpp ---- webkitgtk-2.4.8/Source/WebKit2/UIProcess/StatisticsRequest.cpp 2015-01-07 06:45:43.000000000 -0300 -+++ webkitgtk-2.4.8-ppc/Source/WebKit2/UIProcess/StatisticsRequest.cpp 2015-04-20 01:55:41.555547544 -0300 -@@ -44,7 +44,11 @@ - - uint64_t StatisticsRequest::addOutstandingRequest() - { -+#if CPU(PPC) -+ static int64_t uniqueRequestID; -+#else - static std::atomic uniqueRequestID; -+#endif - - uint64_t requestID = ++uniqueRequestID; - m_outstandingRequests.add(requestID); diff --git a/bsp/buildroot/package/webkitgtk24/0003-Pretty-quotes-in-licence-break-Python-stdin.patch b/bsp/buildroot/package/webkitgtk24/0003-Pretty-quotes-in-licence-break-Python-stdin.patch deleted file mode 100644 index df51078b..00000000 --- a/bsp/buildroot/package/webkitgtk24/0003-Pretty-quotes-in-licence-break-Python-stdin.patch +++ /dev/null @@ -1,36 +0,0 @@ -Pretty quotes in licence break Python stdin. - -This patch was submitted upstream in this bug report: - -https://bugs.webkit.org/show_bug.cgi?id=128971 - -[Vincent: tweak the patch to make it apply on Buildroot] - -Signed-off-by: Vicente Olivert Riera - -Pretty quotes in licence break Python stdin. - -https://bugs.webkit.org/show_bug.cgi?id=128971 - ---- a/Source/WebCore/xml/XMLViewer.css 2014-01-23 16:49:58.000000000 +0000 -+++ b/Source/WebCore/xml/XMLViewer.css -@@ -14,7 +14,7 @@ - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS -- * “AS IS†AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. - * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ---- a/Source/WebCore/xml/XMLViewer.js 2014-01-23 16:49:58.000000000 +0000 -+++ b/Source/WebCore/xml/XMLViewer.js -@@ -15,7 +15,7 @@ - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS -- * “AS IS†AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. - * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, diff --git a/bsp/buildroot/package/webkitgtk24/Config.in b/bsp/buildroot/package/webkitgtk24/Config.in deleted file mode 100644 index bba3a2b9..00000000 --- a/bsp/buildroot/package/webkitgtk24/Config.in +++ /dev/null @@ -1,83 +0,0 @@ -config BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS - bool - # ARM needs BLX, so v5t+, BE completely untested so disabled - default y if BR2_arm && !BR2_ARM_CPU_ARMV4 - default y if BR2_i386 || BR2_x86_64 - # Disabled on MIPS big endian due to sigbus - default y if BR2_mipsel || BR2_mips64el - # Disabled on PowerPC pending runtime testing - # Disabled on SuperH because of segfault - depends on BR2_USE_MMU # libglib2 - -comment "webkitgtk24 needs libgtk2 and a toolchain w/ C++, wchar, NPTL, gcc >=4.8" - depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS - depends on BR2_TOOLCHAIN_HAS_SYNC_4 - depends on !BR2_PACKAGE_LIBGTK2 || !BR2_PACKAGE_XORG7 || \ - !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_INSTALL_LIBSTDCPP \ - || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 - depends on BR2_USE_MMU - depends on BR2_DEPRECATED_SINCE_2016_05 - -config BR2_PACKAGE_WEBKITGTK24 - bool "webkitgtk 2.4.x" - depends on BR2_DEPRECATED_SINCE_2016_05 - depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_WCHAR - depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 - depends on (BR2_PACKAGE_LIBGTK2 && BR2_PACKAGE_XORG7) - depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS - depends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz - select BR2_PACKAGE_CAIRO - select BR2_PACKAGE_CAIRO_PNG - select BR2_PACKAGE_ENCHANT - select BR2_PACKAGE_HARFBUZZ - select BR2_PACKAGE_ICU - select BR2_PACKAGE_JPEG - select BR2_PACKAGE_LIBCURL - select BR2_PACKAGE_LIBSECRET - select BR2_PACKAGE_LIBSOUP - select BR2_PACKAGE_LIBXML2 - select BR2_PACKAGE_LIBXSLT - select BR2_PACKAGE_SQLITE - select BR2_PACKAGE_WEBP - select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_XORG7 - select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_HAS_LIBGL || \ - (BR2_PACKAGE_HAS_LIBGLES && BR2_PACKAGE_HAS_LIBEGL) - select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_HAS_LIBGL || \ - (BR2_PACKAGE_HAS_LIBGLES && BR2_PACKAGE_HAS_LIBEGL) - help - WebKit is an open source, standards compliant web browser engine. - - http://www.webkitgtk.org/ - -if BR2_PACKAGE_WEBKITGTK24 - -config BR2_PACKAGE_WEBKITGTK24_HTTPS - bool "HTTPS support" - select BR2_PACKAGE_CA_CERTIFICATES # runtime - select BR2_PACKAGE_LIBSOUP_SSL - help - Enable HTTPS protocol support. - -config BR2_PACKAGE_WEBKITGTK24_MULTIMEDIA - bool "multimedia support" - select BR2_PACKAGE_GSTREAMER1 - select BR2_PACKAGE_GST1_PLUGINS_BASE - select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA - select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP - select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT - select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE - select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK - select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT - select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE - select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME - select BR2_PACKAGE_GST1_PLUGINS_GOOD - select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4 - select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP - select BR2_PACKAGE_GST1_LIBAV - help - This option pulls in all of the required dependencies - to enable basic multimedia (video/audio) support. - -endif diff --git a/bsp/buildroot/package/webkitgtk24/webkitgtk24.hash b/bsp/buildroot/package/webkitgtk24/webkitgtk24.hash deleted file mode 100644 index d3a9cca0..00000000 --- a/bsp/buildroot/package/webkitgtk24/webkitgtk24.hash +++ /dev/null @@ -1,4 +0,0 @@ -# From http://www.webkitgtk.org/releases/webkitgtk-2.4.10.tar.xz.sha1 -sha1 7fe2fe07ed21d00d8a8483d68c13a8c7ff0ff320 webkitgtk-2.4.10.tar.xz -# Calculated based on the hash above -sha256 33fda4b20d7fec2d6e9399ba03ef3f6d2a733c628bd77d397880c44e4bf7c614 webkitgtk-2.4.10.tar.xz diff --git a/bsp/buildroot/package/webkitgtk24/webkitgtk24.mk b/bsp/buildroot/package/webkitgtk24/webkitgtk24.mk deleted file mode 100644 index 4b7d6949..00000000 --- a/bsp/buildroot/package/webkitgtk24/webkitgtk24.mk +++ /dev/null @@ -1,124 +0,0 @@ -################################################################################ -# -# webkitgtk 2.4.x -# -################################################################################ - -WEBKITGTK24_VERSION = 2.4.10 -WEBKITGTK24_SITE = http://www.webkitgtk.org/releases -WEBKITGTK24_SOURCE = webkitgtk-$(WEBKITGTK24_VERSION).tar.xz -WEBKITGTK24_INSTALL_STAGING = YES -WEBKITGTK24_LICENSE = LGPLv2+, BSD-2c -WEBKITGTK24_LICENSE_FILES = \ - Source/WebCore/LICENSE-APPLE \ - Source/WebCore/LICENSE-LGPL-2 -WEBKITGTK24_DEPENDENCIES = host-ruby host-flex host-bison host-gperf \ - host-pkgconf enchant harfbuzz icu jpeg libcurl libgtk2 \ - libsecret libsoup libxml2 libxslt sqlite webp - -WEBKITGTK24_DEPENDENCIES += \ - $(if $(BR_PACKAGE_XLIB_LIBXCOMPOSITE),xlib_libXcomposite) \ - $(if $(BR_PACKAGE_XLIB_LIBXDAMAGE),xlib_libXdamage) - -# make 3.81 loops into oblivion with numjobs > 1 -ifneq ($(findstring x3.81,x$(RUNNING_MAKE_VERSION)),) -WEBKITGTK24_MAKE = $(MAKE1) -endif - -# Give explicit path to icu-config to avoid host leakage -WEBKITGTK24_CONF_ENV = ac_cv_path_icu_config=$(STAGING_DIR)/usr/bin/icu-config - -# Some 32-bit architectures need libatomic support for 64-bit ops -ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -WEBKITGTK24_CONF_ENV += LIBS="-latomic" -endif - -# dependency tracking is to avoid build issues in the GEN/WTF phase -WEBKITGTK24_CONF_OPTS = \ - --enable-dependency-tracking \ - --enable-spellcheck \ - --disable-geolocation \ - --disable-glibtest \ - --disable-gtk-doc-html \ - --disable-wayland-target - -ifeq ($(BR2_PACKAGE_WEBKITGTK24_MULTIMEDIA),y) -WEBKITGTK24_CONF_OPTS += \ - --enable-video \ - --enable-web-audio -WEBKITGTK24_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-base gst1-plugins-good -else -WEBKITGTK24_CONF_OPTS += \ - --disable-video \ - --disable-web-audio -endif - -# OpenGL -ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) -WEBKITGTK24_CONF_OPTS += \ - --enable-accelerated-compositing \ - --enable-glx \ - --enable-webgl \ - --disable-gles2 -WEBKITGTK24_DEPENDENCIES += libgl -# EGL + GLES -else ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGLES),yy) -WEBKITGTK24_CONF_OPTS += \ - --enable-accelerated-compositing \ - --enable-gles2 \ - --enable-webgl \ - --disable-glx -WEBKITGTK24_DEPENDENCIES += libegl libgles -# Some EGL/GLES implementations needs extra help (eg. rpi-userland) -WEBKITGTK24_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) \ - `$(PKG_CONFIG_HOST_BINARY) --cflags egl` \ - `$(PKG_CONFIG_HOST_BINARY) --clfags glesv2`" -# No GL -else -WEBKITGTK24_CONF_OPTS += \ - --disable-accelerated-compositing \ - --disable-gles2 \ - --disable-glx \ - --disable-webgl -endif - -# X11 target with GTK2 (optionally GTK3) -ifeq ($(BR2_PACKAGE_XLIB_LIBXT),y) -WEBKITGTK24_CONF_OPTS += --enable-x11-target -WEBKITGTK24_DEPENDENCIES += xlib_libXt -else -WEBKITGTK24_CONF_OPTS += --disable-x11-target -endif - -# ARM needs NEON for JIT -# i386 & x86_64 don't seem to have any special requirements -ifeq ($(BR2_ARM_CPU_HAS_NEON)$(BR2_i386)$(BR2_x86_64),y) -WEBKITGTK24_CONF_OPTS += --enable-jit -else -WEBKITGTK24_CONF_OPTS += --disable-jit -# Disabling assembly and JIT needs an extra push sometimes (ppc) -# See https://bugs.webkit.org/show_bug.cgi?format=multiple&id=113638 -WEBKITGTK24_CONF_ENV += \ - CPPFLAGS="$(TARGET_CPPFLAGS) -DENABLE_JIT=0 -DENABLE_YARR_JIT=0 -DENABLE_ASSEMBLER=0" -endif - -# webkit1 (old API) uses gtk2, webkit2 (new API) uses gtk3 -# Both can be built simultaneously, prefer "newer" for size/time savings -# gtk2 is mandatory for plugin support -ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) -WEBKITGTK24_CONF_OPTS += \ - --with-gtk=3.0 \ - --disable-webkit1 -WEBKITGTK24_DEPENDENCIES += libgtk3 -define WEBKITGTK24_INSTALL_BROWSER - $(INSTALL) -D -m 0755 $(@D)/Programs/MiniBrowser \ - $(TARGET_DIR)/usr/bin/MiniBrowser -endef -WEBKITGTK24_POST_INSTALL_TARGET_HOOKS += WEBKITGTK24_INSTALL_BROWSER -else -WEBKITGTK24_CONF_OPTS += \ - --with-gtk=2.0 \ - --disable-webkit2 -endif - -$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/webp/webp.hash b/bsp/buildroot/package/webp/webp.hash index 328f263e..bf4ee8fb 100644 --- a/bsp/buildroot/package/webp/webp.hash +++ b/bsp/buildroot/package/webp/webp.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 efbe0d58fda936f2ed99d0b837ed7087d064d6838931f282c4618d2a3f7390c4 libwebp-0.4.3.tar.gz +sha256 b75310c810b3eda222c77f6d6c26b061240e3d9060095de44b2c1bae291ecdef libwebp-0.5.2.tar.gz diff --git a/bsp/buildroot/package/webp/webp.mk b/bsp/buildroot/package/webp/webp.mk index 8d9ca8f7..d579d56c 100644 --- a/bsp/buildroot/package/webp/webp.mk +++ b/bsp/buildroot/package/webp/webp.mk @@ -4,7 +4,7 @@ # ################################################################################ -WEBP_VERSION = 0.4.3 +WEBP_VERSION = 0.5.2 WEBP_SOURCE = libwebp-$(WEBP_VERSION).tar.gz WEBP_SITE = http://downloads.webmproject.org/releases/webp WEBP_LICENSE = BSD-3c diff --git a/bsp/buildroot/package/webrtc-audio-processing/Config.in b/bsp/buildroot/package/webrtc-audio-processing/Config.in index 79a06d8b..02715b08 100644 --- a/bsp/buildroot/package/webrtc-audio-processing/Config.in +++ b/bsp/buildroot/package/webrtc-audio-processing/Config.in @@ -1,6 +1,10 @@ +config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_i386 || BR2_x86_64 + config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING bool "webrtc-audio-processing" - depends on BR2_arm || BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # pthread_condattr_setclock @@ -12,6 +16,6 @@ config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/ comment "webrtc-audio-processing needs a toolchain w/ C++, NPTL, gcc >= 4.8" - depends on BR2_arm || BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/bsp/buildroot/package/weston/0002-libweston-compositor-rdp-fix-no-break-space-U-A0-U8-.patch b/bsp/buildroot/package/weston/0002-libweston-compositor-rdp-fix-no-break-space-U-A0-U8-.patch deleted file mode 100644 index b3911476..00000000 --- a/bsp/buildroot/package/weston/0002-libweston-compositor-rdp-fix-no-break-space-U-A0-U8-.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 7ee8589dd83e52ae6af3ec5247c3403e8ded69a5 Mon Sep 17 00:00:00 2001 -From: "Yann E. MORIN" -Date: Tue, 9 Aug 2016 20:00:29 +0200 -Subject: [PATCH] libweston/compositor-rdp: fix no-break space U+A0 (U8+C2A0) - -There is a UTF-8 no-break space (U+A0, U8+C2A0) in the definition of -macro NSC_RESET in the case of 1.2.2 <= FreeRDP < 2.0. - -This is causing build issues (\302 is 0xC2, \240 is 0xA0): - http://autobuild.buildroot.net/results/f49/f49a9cbb7bdc5d9e05dcf0a20bd83f059e234e74/build-end.log - -Fix that by using a plain, boring space U+20. - -Signed-off-by: "Yann E. MORIN" ---- - libweston/compositor-rdp.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/compositor-rdp.c b/src/compositor-rdp.c -index 11f5f05..ee81300 100644 ---- a/src/compositor-rdp.c -+++ b/src/compositor-rdp.c -@@ -58,7 +58,7 @@ - # define NSC_RESET(C, W, H) nsc_context_reset(C, W, H) - # define RFX_RESET(C, W, H) rfx_context_reset(C, W, H) - #else --# define NSC_RESET(C, W, H) do { nsc_context_reset(C); C->width = W; C->height = H; } while(0) -+# define NSC_RESET(C, W, H) do { nsc_context_reset(C); C->width = W; C->height = H; } while(0) - # define RFX_RESET(C, W, H) do { rfx_context_reset(C); C->width = W; C->height = H; } while(0) - #endif - #define FREERDP_CB_RET_TYPE BOOL --- -2.7.4 - diff --git a/bsp/buildroot/package/weston/0002-shared-platform-include-weston-egl-ext.h-only-if-ENA.patch b/bsp/buildroot/package/weston/0002-shared-platform-include-weston-egl-ext.h-only-if-ENA.patch new file mode 100644 index 00000000..baa3a4fc --- /dev/null +++ b/bsp/buildroot/package/weston/0002-shared-platform-include-weston-egl-ext.h-only-if-ENA.patch @@ -0,0 +1,38 @@ +From e338ced1e04bf4b97322d5eed2b5bdf5b052095a Mon Sep 17 00:00:00 2001 +From: Krzysztof Konopko +Date: Thu, 15 Sep 2016 13:01:49 +0200 +Subject: [PATCH] shared/platform: include weston-egl-ext.h only if ENABLE_EGL + is defined + +Including `weston-egl-ext.h` causes compilation failure for configurations +with EGL disabled. + +Verified with `--disable-egl`, `--disable-x11-compositor` +and `--disable-drm-compositor`. + +Signed-off-by: Krzysztof Konopko +Reviewed-by: Pekka Paalanen +[yann.morin.1998@free.fr: backported from upstream] +Signed-off-by: "Yann E. MORIN" +--- + shared/platform.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/shared/platform.h b/shared/platform.h +index 1eb96fd..30db1a6 100644 +--- a/shared/platform.h ++++ b/shared/platform.h +@@ -33,9 +33,9 @@ + #include + #include + #include +-#endif + + #include "weston-egl-ext.h" ++#endif + + #ifdef __cplusplus + extern "C" { +-- +2.7.4 + diff --git a/bsp/buildroot/package/weston/0003-configure-search-for-lib-with-clock_getres.patch b/bsp/buildroot/package/weston/0003-configure-search-for-lib-with-clock_getres.patch new file mode 100644 index 00000000..a8ad9eaa --- /dev/null +++ b/bsp/buildroot/package/weston/0003-configure-search-for-lib-with-clock_getres.patch @@ -0,0 +1,47 @@ +From e269012c4b919624ca92d80afd1d6a6f5399e041 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 19 Dec 2016 18:07:07 +0100 +Subject: [PATCH] configure: search for lib with clock_getres() + +Like clock_gettime(), clock_getres() is in -lrt for glibc < 2.17. +Add a check for it, like is done for clock_gettime(). + +Signed-off-by: "Yann E. MORIN" +--- +Upstream status: submitted +https://lists.freedesktop.org/archives/wayland-devel/2016-December/032354.html +--- + Makefile.am | 1 + + configure.ac | 3 ++- + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 2219e3d..53f8f51 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -190,6 +190,7 @@ weston_CFLAGS = $(AM_CFLAGS) $(COMPOSITOR_CFLAGS) $(LIBUNWIND_CFLAGS) + weston_LDADD = libshared.la libweston-@LIBWESTON_MAJOR@.la \ + $(COMPOSITOR_LIBS) $(LIBUNWIND_LIBS) \ + $(DLOPEN_LIBS) $(LIBINPUT_BACKEND_LIBS) \ ++ $(CLOCK_GETRES_LIBS) \ + -lm + + weston_SOURCES = \ +diff --git a/configure.ac b/configure.ac +index 1e251bf..604f51b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -88,8 +88,9 @@ PKG_PROG_PKG_CONFIG() + + WESTON_SEARCH_LIBS([DLOPEN], [dl], [dlopen]) + +-# In old glibc versions (< 2.17) clock_gettime() is in librt ++# In old glibc versions (< 2.17) clock_gettime() and clock_getres() are in librt + WESTON_SEARCH_LIBS([CLOCK_GETTIME], [rt], [clock_gettime]) ++WESTON_SEARCH_LIBS([CLOCK_GETRES], [rt], [clock_getres]) + + AC_CHECK_DECL(SFD_CLOEXEC,[], + [AC_MSG_ERROR("SFD_CLOEXEC is needed to compile weston")], +-- +2.7.4 + diff --git a/bsp/buildroot/package/weston/0004-libweston-include-weston-egl-ext.h-in-drm-x11-and-wa.patch b/bsp/buildroot/package/weston/0004-libweston-include-weston-egl-ext.h-in-drm-x11-and-wa.patch new file mode 100644 index 00000000..9012f5f3 --- /dev/null +++ b/bsp/buildroot/package/weston/0004-libweston-include-weston-egl-ext.h-in-drm-x11-and-wa.patch @@ -0,0 +1,58 @@ +From c950667e87dc175bd2741a51460ebd3e29a57c92 Mon Sep 17 00:00:00 2001 +From: Vincent Abriou +Date: Wed, 5 Oct 2016 16:14:07 +0200 +Subject: [PATCH] libweston: include weston-egl-ext.h in drm, x11 and wayland + compositor + +As to what is done for gl-renderer.c, weston-egl-ext.h should be +include in compositor-drm.c, compositor-x11.c and compositor-wayland.c. +This fix building issue with GPU that does not have EGL_PLATFORM_xxx_KHR +in their extension header file eglext.h. + +Signed-off-by: Vincent Abriou +Reviewed-by: Daniel Stone +--- + libweston/compositor-drm.c | 1 + + libweston/compositor-wayland.c | 1 + + libweston/compositor-x11.c | 1 + + 3 files changed, 3 insertions(+) + +diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c +index 567240f..f61e3d9 100644 +--- a/libweston/compositor-drm.c ++++ b/libweston/compositor-drm.c +@@ -52,6 +52,7 @@ + #include "shared/helpers.h" + #include "shared/timespec-util.h" + #include "gl-renderer.h" ++#include "weston-egl-ext.h" + #include "pixman-renderer.h" + #include "libbacklight.h" + #include "libinput-seat.h" +diff --git a/libweston/compositor-wayland.c b/libweston/compositor-wayland.c +index 580c7b5..46fdde1 100644 +--- a/libweston/compositor-wayland.c ++++ b/libweston/compositor-wayland.c +@@ -44,6 +44,7 @@ + #include "compositor.h" + #include "compositor-wayland.h" + #include "gl-renderer.h" ++#include "weston-egl-ext.h" + #include "pixman-renderer.h" + #include "shared/helpers.h" + #include "shared/image-loader.h" +diff --git a/libweston/compositor-x11.c b/libweston/compositor-x11.c +index dadcd10..1c6de08 100644 +--- a/libweston/compositor-x11.c ++++ b/libweston/compositor-x11.c +@@ -56,6 +56,7 @@ + #include "shared/helpers.h" + #include "shared/image-loader.h" + #include "gl-renderer.h" ++#include "weston-egl-ext.h" + #include "pixman-renderer.h" + #include "presentation-time-server-protocol.h" + #include "linux-dmabuf.h" +-- +2.7.4 + diff --git a/bsp/buildroot/package/weston/0005-libweston-fix-building-issue-when-EGL-support-is-not.patch b/bsp/buildroot/package/weston/0005-libweston-fix-building-issue-when-EGL-support-is-not.patch new file mode 100644 index 00000000..6a5b1926 --- /dev/null +++ b/bsp/buildroot/package/weston/0005-libweston-fix-building-issue-when-EGL-support-is-not.patch @@ -0,0 +1,47 @@ +From 7327d5a7a29ad31af871e144ebe053cb1ab478f7 Mon Sep 17 00:00:00 2001 +From: Vincent Abriou +Date: Tue, 11 Oct 2016 13:47:03 +0200 +Subject: [PATCH] libweston: fix building issue when EGL support is not enabled + +weston-egl-ext.h has been include in compositor-xx.c file in order to +define EGL_PLATFORM_xxx_KHR extensions used by the compositors. +But in case EGL support is not enabled, all EGL related definition must +be skipped except EGL_PLATFORM_xxx_KHR that must be still defined to +allow compositor-xx.c to build. + +Signed-off-by: Vincent Abriou +Reviewed-by: Giulio Camuffo +--- + libweston/weston-egl-ext.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/libweston/weston-egl-ext.h b/libweston/weston-egl-ext.h +index 6e36996..70556fd 100644 +--- a/libweston/weston-egl-ext.h ++++ b/libweston/weston-egl-ext.h +@@ -28,6 +28,8 @@ + #ifndef WESTON_EGL_EXT_H + #define WESTON_EGL_EXT_H + ++#ifdef ENABLE_EGL ++ + #ifndef EGL_WL_bind_wayland_display + #define EGL_WL_bind_wayland_display 1 + +@@ -152,5 +154,13 @@ typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLD + #define EGL_PLATFORM_X11_KHR 0x31D5 + #endif + ++#else /* ENABLE_EGL */ ++ ++/* EGL platform definition are keept to allow compositor-xx.c to build */ ++#define EGL_PLATFORM_GBM_KHR 0x31D7 ++#define EGL_PLATFORM_WAYLAND_KHR 0x31D8 ++#define EGL_PLATFORM_X11_KHR 0x31D5 ++ ++#endif /* ENABLE_EGL */ + + #endif +-- +2.7.4 + diff --git a/bsp/buildroot/package/weston/0006-tests-add-missing-include.patch b/bsp/buildroot/package/weston/0006-tests-add-missing-include.patch new file mode 100644 index 00000000..67dc3df2 --- /dev/null +++ b/bsp/buildroot/package/weston/0006-tests-add-missing-include.patch @@ -0,0 +1,36 @@ +From 4c9e149d641a9945c3a8e15707b8712834f08c4f Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 22 Jan 2017 14:46:28 +0100 +Subject: [PATCH] tests: add missing include + +The int32_t type is defined in stdint.h. + +The musl C library is very conservative in the headers that it +internally includes, and stdint.h is not included by any other header, +unlike with glibc or uClibc, which breaks the build. + +Add the missing header. + +Signed-off-by: "Yann E. MORIN" +--- +Status: sent upstream + https://lists.freedesktop.org/archives/wayland-devel/2017-January/032771.html +--- + tests/string-test.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tests/string-test.c b/tests/string-test.c +index a72ec30..5571b52 100644 +--- a/tests/string-test.c ++++ b/tests/string-test.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + #include + + #include "shared/string-helpers.h" +-- +2.7.4 + diff --git a/bsp/buildroot/package/weston/Config.in b/bsp/buildroot/package/weston/Config.in index c1eb7dad..b4e198d8 100644 --- a/bsp/buildroot/package/weston/Config.in +++ b/bsp/buildroot/package/weston/Config.in @@ -53,9 +53,10 @@ config BR2_PACKAGE_WESTON_FBDEV # FreeRDP needs threads and !static, already the case for weston config BR2_PACKAGE_WESTON_RDP bool "RDP compositor" - depends on BR2_USE_WCHAR # freerdp depends on BR2_USE_MMU # freerdp, libglib2 depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_WCHAR # freerdp + depends on BR2_INSTALL_LIBSTDCPP # freerdp select BR2_PACKAGE_FREERDP select BR2_PACKAGE_WESTON_HAS_COMPOSITOR help @@ -71,16 +72,10 @@ config BR2_PACKAGE_WESTON_RDP so you may want to change them in a post-build script or a rootfs overlay. -comment "RDP compositor needs a toolchain w/ wchar" - depends on BROKEN # needs FreeRDP master +comment "RDP compositor needs a toolchain w/ wchar, C++" + depends on BR2_USE_MMU depends on BR2_TOOLCHAIN_HAS_SYNC_4 - depends on !BR2_USE_WCHAR - -# rpi-userland is an EGL/GLES provider, so we can't select it -config BR2_PACKAGE_WESTON_RPI - bool "RPi compositor" - depends on BR2_PACKAGE_RPI_USERLAND - select BR2_PACKAGE_WESTON_HAS_COMPOSITOR + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP config BR2_PACKAGE_WESTON_X11 bool "X11 compositor" diff --git a/bsp/buildroot/package/weston/weston.hash b/bsp/buildroot/package/weston/weston.hash index 4f23511d..c9668640 100644 --- a/bsp/buildroot/package/weston/weston.hash +++ b/bsp/buildroot/package/weston/weston.hash @@ -1,2 +1,2 @@ -# From https://lists.freedesktop.org/archives/wayland-devel/2016-June/029164.html -sha256 05e086e9f186a06843b9f7a5e1abf19347b1a6e4be26d7e74927abc17b6b7125 weston-1.11.0.tar.xz +# From https://lists.freedesktop.org/archives/wayland-devel/2016-September/031123.html +sha256 ac7ac2a32e3b9f50131fccded5d2326bd36b2226712d90b61999118a09af5033 weston-1.12.0.tar.xz diff --git a/bsp/buildroot/package/weston/weston.mk b/bsp/buildroot/package/weston/weston.mk index 31c9281b..9bd127c6 100644 --- a/bsp/buildroot/package/weston/weston.mk +++ b/bsp/buildroot/package/weston/weston.mk @@ -4,11 +4,13 @@ # ################################################################################ -WESTON_VERSION = 1.11.0 +WESTON_VERSION = 1.12.0 WESTON_SITE = http://wayland.freedesktop.org/releases WESTON_SOURCE = weston-$(WESTON_VERSION).tar.xz WESTON_LICENSE = MIT WESTON_LICENSE_FILES = COPYING +# configure.ac patched by 0003-configure-search-for-lib-with-clock_getres.patch +WESTON_AUTORECONF = YES WESTON_DEPENDENCIES = host-pkgconf wayland wayland-protocols \ libxkbcommon pixman libpng jpeg mtdev udev cairo libinput \ @@ -18,6 +20,7 @@ WESTON_CONF_OPTS = \ --with-dtddir=$(STAGING_DIR)/usr/share/wayland \ --disable-headless-compositor \ --disable-colord \ + --disable-devdocs \ --disable-setuid-install WESTON_MAKE_OPTS = \ @@ -89,15 +92,6 @@ else WESTON_CONF_OPTS += --disable-drm-compositor endif -ifeq ($(BR2_PACKAGE_WESTON_RPI),y) -WESTON_DEPENDENCIES += rpi-userland -WESTON_CONF_OPTS += --enable-rpi-compositor \ - --disable-resize-optimization \ - WESTON_NATIVE_BACKEND=rpi-backend.so -else -WESTON_CONF_OPTS += --disable-rpi-compositor -endif # BR2_PACKAGE_WESTON_RPI - ifeq ($(BR2_PACKAGE_WESTON_X11),y) WESTON_CONF_OPTS += \ --enable-x11-compositor \ @@ -116,7 +110,7 @@ endif ifeq ($(BR2_PACKAGE_LIBVA),y) WESTON_CONF_OPTS += --enable-vaapi-recorder -WESTON_DEPENDENIES += libva +WESTON_DEPENDENCIES += libva else WESTON_CONF_OPTS += --disable-vaapi-recorder endif diff --git a/bsp/buildroot/package/wf111/wf111.mk b/bsp/buildroot/package/wf111/wf111.mk index e17e846f..ad9d8914 100644 --- a/bsp/buildroot/package/wf111/wf111.mk +++ b/bsp/buildroot/package/wf111/wf111.mk @@ -25,7 +25,7 @@ endif # separately the build step and the install step and get a correct # behavior. So we do everything in the install step. define WF111_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) PWD=$(@D) \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PWD=$(@D) \ $(LINUX_MAKE_FLAGS) KDIR=$(LINUX_DIR) \ OUTPUT=$(TARGET_DIR) install_static endef diff --git a/bsp/buildroot/package/wget/wget.hash b/bsp/buildroot/package/wget/wget.hash index 6d267234..5f22396b 100644 --- a/bsp/buildroot/package/wget/wget.hash +++ b/bsp/buildroot/package/wget/wget.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 b5b55b75726c04c06fe253daec9329a6f1a3c0c1878e3ea76ebfebc139ea9cc1 wget-1.18.tar.xz +sha256 0c950b9671881222a4d385b013c9604e98a8025d1988529dfca0e93617744cd2 wget-1.19.1.tar.xz diff --git a/bsp/buildroot/package/wget/wget.mk b/bsp/buildroot/package/wget/wget.mk index 9cda76b6..22e057db 100644 --- a/bsp/buildroot/package/wget/wget.mk +++ b/bsp/buildroot/package/wget/wget.mk @@ -4,7 +4,7 @@ # ################################################################################ -WGET_VERSION = 1.18 +WGET_VERSION = 1.19.1 WGET_SOURCE = wget-$(WGET_VERSION).tar.xz WGET_SITE = $(BR2_GNU_MIRROR)/wget WGET_DEPENDENCIES = host-pkgconf @@ -17,26 +17,17 @@ WGET_DEPENDENCIES += busybox endif ifeq ($(BR2_PACKAGE_GNUTLS),y) -WGET_CONF_OPTS += \ - --with-ssl=gnutls \ - --with-libgnutls-prefix=$(STAGING_DIR) +WGET_CONF_OPTS += --with-ssl=gnutls WGET_DEPENDENCIES += gnutls -endif - -ifeq ($(BR2_PACKAGE_OPENSSL),y) -WGET_CONF_OPTS += --with-ssl=openssl --with-libssl-prefix=$(STAGING_DIR) +else ifeq ($(BR2_PACKAGE_OPENSSL),y) +WGET_CONF_OPTS += --with-ssl=openssl WGET_DEPENDENCIES += openssl +else +WGET_CONF_OPTS += --without-ssl endif ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) WGET_DEPENDENCIES += util-linux endif -# --with-ssl is default -ifneq ($(BR2_PACKAGE_GNUTLS),y) -ifneq ($(BR2_PACKAGE_OPENSSL),y) -WGET_CONF_OPTS += --without-ssl -endif -endif - $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/whois/whois.hash b/bsp/buildroot/package/whois/whois.hash index 15a12f78..6f65074c 100644 --- a/bsp/buildroot/package/whois/whois.hash +++ b/bsp/buildroot/package/whois/whois.hash @@ -1,2 +1,2 @@ -# From http://ftp.debian.org/debian/pool/main/w/whois/whois_5.2.12.dsc -sha256 b26d4027b8987d9911466aa06ce2c167a50017cd59a622a429bd506222f6cdf1 whois_5.2.12.tar.xz +# From http://ftp.debian.org/debian/pool/main/w/whois/whois_5.2.14.dsc +sha256 a41daf41abed0fbfa8c9c4b0e4a3f5f22d9876dd6feb9091aac12f8f4c38b0d2 whois_5.2.14.tar.xz diff --git a/bsp/buildroot/package/whois/whois.mk b/bsp/buildroot/package/whois/whois.mk index 423b214f..29a18e3e 100644 --- a/bsp/buildroot/package/whois/whois.mk +++ b/bsp/buildroot/package/whois/whois.mk @@ -4,8 +4,8 @@ # ################################################################################ -WHOIS_VERSION = 5.2.12 -WHOIS_SITE = http://snapshot.debian.org/archive/debian/20160329T095754Z/pool/main/w/whois +WHOIS_VERSION = 5.2.14 +WHOIS_SITE = http://snapshot.debian.org/archive/debian/20161230T032015Z/pool/main/w/whois WHOIS_SOURCE = whois_$(WHOIS_VERSION).tar.xz # take precedence over busybox implementation WHOIS_DEPENDENCIES = host-gettext $(if $(BR2_PACKAGE_BUSYBOX),busybox) diff --git a/bsp/buildroot/package/wine/wine.hash b/bsp/buildroot/package/wine/wine.hash index 3f856ba9..b4b67cd9 100644 --- a/bsp/buildroot/package/wine/wine.hash +++ b/bsp/buildroot/package/wine/wine.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 d7cecdf7aab93bfe950e6f83ec526681b8770788c7b2a802bfe50ff97fc17a6c wine-1.8.3.tar.bz2 +sha256 9756f5a2129b6a83ba701e546173cbff86caa671b0af73eb8f72c03b20c066c6 wine-2.0.tar.bz2 diff --git a/bsp/buildroot/package/wine/wine.mk b/bsp/buildroot/package/wine/wine.mk index 632eed3c..f9b2e1a3 100644 --- a/bsp/buildroot/package/wine/wine.mk +++ b/bsp/buildroot/package/wine/wine.mk @@ -4,9 +4,9 @@ # ################################################################################ -WINE_VERSION = 1.8.3 +WINE_VERSION = 2.0 WINE_SOURCE = wine-$(WINE_VERSION).tar.bz2 -WINE_SITE = https://dl.winehq.org/wine/source/1.8 +WINE_SITE = https://dl.winehq.org/wine/source/2.0 WINE_LICENSE = LGPLv2.1+ WINE_LICENSE_FILES = COPYING.LIB LICENSE WINE_DEPENDENCIES = host-bison host-flex host-wine @@ -34,7 +34,7 @@ WINE_CONF_OPTS = \ # wrapper believes what the real gcc is named, and force the tuple of # the external toolchain, not the one we compute in GNU_TARGET_NAME. ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) -WINE_CONF_OPTS += TARGETFLAGS="-b $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))" +WINE_CONF_OPTS += TARGETFLAGS="-b $(TOOLCHAIN_EXTERNAL_PREFIX)" endif ifeq ($(BR2_PACKAGE_ALSA_LIB)$(BR2_PACKAGE_ALSA_LIB_SEQ)$(BR2_PACKAGE_ALSA_LIB_RAWMIDI),yyy) @@ -85,9 +85,9 @@ else WINE_CONF_OPTS += --without-gnutls endif -ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE),y) +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) WINE_CONF_OPTS += --with-gstreamer -WINE_DEPENDENCIES += gst-plugins-base +WINE_DEPENDENCIES += gst1-plugins-base else WINE_CONF_OPTS += --without-gstreamer endif @@ -221,6 +221,13 @@ else WINE_CONF_OPTS += --without-tiff endif +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +WINE_CONF_OPTS += --with-udev +WINE_DEPENDENCIES += udev +else +WINE_CONF_OPTS += --without-udev +endif + ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) WINE_CONF_OPTS += --with-x WINE_DEPENDENCIES += xlib_libX11 diff --git a/bsp/buildroot/package/wireless_tools/wireless_tools.mk b/bsp/buildroot/package/wireless_tools/wireless_tools.mk index cb15412f..f4e0ffb4 100644 --- a/bsp/buildroot/package/wireless_tools/wireless_tools.mk +++ b/bsp/buildroot/package/wireless_tools/wireless_tools.mk @@ -20,20 +20,20 @@ WIRELESS_TOOLS_BUILD_TARGETS += libiw.so.$(WIRELESS_TOOLS_VERSION_MAJOR) WIRELESS_TOOLS_INSTALL_TARGETS += install-dynamic define WIRELESS_TOOLS_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)" LDCONFIG=/bin/true \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)" LDCONFIG=/bin/true \ install-dynamic - $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)/usr" install-hdr + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)/usr" install-hdr endef endif define WIRELESS_TOOLS_BUILD_CMDS - $(MAKE) -C $(@D) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ $(WIRELESS_TOOLS_BUILD_TARGETS) endef define WIRELESS_TOOLS_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) PREFIX="$(TARGET_DIR)" LDCONFIG=/bin/true \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(TARGET_DIR)" LDCONFIG=/bin/true \ $(WIRELESS_TOOLS_INSTALL_TARGETS) endef diff --git a/bsp/buildroot/package/wireshark/0001-configure-do-not-assume-broken-inet_pton-in-case-of-.patch b/bsp/buildroot/package/wireshark/0001-configure.ac-do-not-assume-broken-inet_pton-in-case-.patch similarity index 53% rename from bsp/buildroot/package/wireshark/0001-configure-do-not-assume-broken-inet_pton-in-case-of-.patch rename to bsp/buildroot/package/wireshark/0001-configure.ac-do-not-assume-broken-inet_pton-in-case-.patch index 4d1f680a..1e44ad09 100644 --- a/bsp/buildroot/package/wireshark/0001-configure-do-not-assume-broken-inet_pton-in-case-of-.patch +++ b/bsp/buildroot/package/wireshark/0001-configure.ac-do-not-assume-broken-inet_pton-in-case-.patch @@ -1,32 +1,35 @@ -From a0657feeb2b349ffda895a53e36ea5c992d871cf Mon Sep 17 00:00:00 2001 -From: Peter Seiderer -Date: Sat, 31 Oct 2015 22:38:48 +0100 -Subject: [PATCH] configure: do not assume broken inet_pton in case of cross +From 25d313275e87dc236e86c0e713cad08ea64253f8 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Thu, 8 Sep 2016 10:58:34 +0100 +Subject: [PATCH] configure.ac: do not assume broken inet_pton in case of cross compiling Patch configure.ac to not assume broken inet_pton in case of cross compiling. +[Vincent: adapt the patch for 2.2.0] + Signed-off-by: Peter Seiderer +Signed-off-by: Vicente Olivert Riera --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac -index aec0548..d640e0c 100644 +index c43e366..9672831 100644 --- a/configure.ac +++ b/configure.ac -@@ -2646,8 +2646,8 @@ int main() +@@ -2373,8 +2373,8 @@ int main() #endif }], [AC_MSG_RESULT(ok); have_inet_pton=yes], [AC_MSG_RESULT(broken); --have_inet_pton=no], [AC_MSG_RESULT(cross compiling, assume it is broken); +-have_inet_pton=no], [AC_MSG_RESULT([cross compiling, assume it is broken]); -have_inet_pton=no])], +have_inet_pton=no], [AC_MSG_RESULT([cross compiling, assume it is broken... not here]); +have_inet_pton=yes])], have_inet_pton=no) if test "$have_inet_pton" = no; then - INET_PTON_LO="inet_pton.lo" + AC_LIBOBJ(inet_pton) -- -2.1.4 +2.7.3 diff --git a/bsp/buildroot/package/wireshark/0002-androiddump-add-missing-sys-time.h-header.patch b/bsp/buildroot/package/wireshark/0002-androiddump-add-missing-sys-time.h-header.patch new file mode 100644 index 00000000..ae119801 --- /dev/null +++ b/bsp/buildroot/package/wireshark/0002-androiddump-add-missing-sys-time.h-header.patch @@ -0,0 +1,35 @@ +From 1ab938e762ee6ebd3211c22ef25a7575e37791c4 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 29 Dec 2016 20:16:53 +0200 +Subject: [PATCH] androiddump: add missing sys/time.h header + +struct timeval requires sys/time.h. Fixes the following musl libc build error: + +androiddump.c: In function 'useSndTimeout': +androiddump.c:262:18: error: variable 'socket_timeout' has initializer but incomplete type + const struct timeval socket_timeout = { + ^ + +Change-Id: I52e204f32a012aabea2e54877e564576c072fe08 +Signed-off-by: Baruch Siach +--- +Upstream status: https://code.wireshark.org/review/19460 +--- + extcap/androiddump.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/extcap/androiddump.c b/extcap/androiddump.c +index 8287c4bb1a76..fab7c10e05cc 100644 +--- a/extcap/androiddump.c ++++ b/extcap/androiddump.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + + #ifdef HAVE_NETINET_IN_H + # include +-- +2.11.0 + diff --git a/bsp/buildroot/package/wireshark/Config.in b/bsp/buildroot/package/wireshark/Config.in index defeb4b3..c5b5c3e3 100644 --- a/bsp/buildroot/package/wireshark/Config.in +++ b/bsp/buildroot/package/wireshark/Config.in @@ -8,7 +8,24 @@ config BR2_PACKAGE_WIRESHARK help Network traffic sniffer and protocol decoder. - http://www.wireshark.org + https://www.wireshark.org + +if BR2_PACKAGE_WIRESHARK + +config BR2_PACKAGE_WIRESHARK_QT + bool + default y + depends on BR2_PACKAGE_QT5BASE_WIDGETS + depends on BR2_PACKAGE_QT5TOOLS + select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS + +config BR2_PACKAGE_WIRESHARK_GUI + bool + default y if BR2_PACKAGE_LIBGTK2 + default y if BR2_PACKAGE_LIBGTK3 + default y if BR2_PACKAGE_WIRESHARK_QT + +endif # BR2_PACKAGE_WIRESHARK comment "wireshark needs a toolchain w/ wchar, threads" depends on BR2_USE_MMU diff --git a/bsp/buildroot/package/wireshark/wireshark.hash b/bsp/buildroot/package/wireshark/wireshark.hash index fe4070bd..e3eeef33 100644 --- a/bsp/buildroot/package/wireshark/wireshark.hash +++ b/bsp/buildroot/package/wireshark/wireshark.hash @@ -1,2 +1,2 @@ -# From: https://www.wireshark.org/download/src/all-versions/SIGNATURES-2.0.5.txt -sha256 0ce0241330828973f5b4efee422a3760cab8ce0b41e7721c4b9fd185be1bb10b wireshark-2.0.5.tar.bz2 +# From: https://www.wireshark.org/download/src/all-versions/SIGNATURES-2.2.4.txt +sha256 42a7fb35eed5a32478153e24601a284bb50148b7ba919c3e8452652f4c2a3911 wireshark-2.2.4.tar.bz2 diff --git a/bsp/buildroot/package/wireshark/wireshark.mk b/bsp/buildroot/package/wireshark/wireshark.mk index 42a5e74b..edd830d8 100644 --- a/bsp/buildroot/package/wireshark/wireshark.mk +++ b/bsp/buildroot/package/wireshark/wireshark.mk @@ -4,9 +4,9 @@ # ################################################################################ -WIRESHARK_VERSION = 2.0.5 +WIRESHARK_VERSION = 2.2.4 WIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.bz2 -WIRESHARK_SITE = http://www.wireshark.org/download/src/all-versions +WIRESHARK_SITE = https://www.wireshark.org/download/src/all-versions WIRESHARK_LICENSE = wireshark license WIRESHARK_LICENSE_FILES = COPYING WIRESHARK_DEPENDENCIES = host-pkgconf libpcap libglib2 @@ -20,7 +20,6 @@ WIRESHARK_AUTORECONF = YES # Work around it by pointing includedir at staging WIRESHARK_CONF_OPTS = \ --without-krb5 \ - --disable-usr-local \ --enable-static=no \ --with-libsmi=no \ --with-lua=no \ @@ -29,19 +28,20 @@ WIRESHARK_CONF_OPTS = \ # wireshark GUI options ifeq ($(BR2_PACKAGE_LIBGTK3),y) -WIRESHARK_CONF_OPTS += --with-gtk3=yes +WIRESHARK_CONF_OPTS += --with-gtk=3 WIRESHARK_DEPENDENCIES += libgtk3 else ifeq ($(BR2_PACKAGE_LIBGTK2),y) -WIRESHARK_CONF_OPTS += --with-gtk2=yes -WIRESHARK_DEPENDECIES += libgtk2 +WIRESHARK_CONF_OPTS += --with-gtk=2 +WIRESHARK_DEPENDENCIES += libgtk2 else -WIRESHARK_CONF_OPTS += --with-gtk3=no --with-gtk2=no +WIRESHARK_CONF_OPTS += --with-gtk=no endif # Qt4 needs accessibility, we don't support it -ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y) +ifeq ($(BR2_PACKAGE_WIRESHARK_QT),y) WIRESHARK_CONF_OPTS += --with-qt=5 -WIRESHARK_DEPENDENCIES += qt5base +WIRESHARK_DEPENDENCIES += qt5base qt5tools +WIRESHARK_CONF_ENV += ac_cv_path_QTCHOOSER="" # Seems it expects wrappers and passes a -qt=X parameter for version WIRESHARK_MAKE_OPTS += \ MOC="$(HOST_DIR)/usr/bin/moc" \ @@ -52,7 +52,7 @@ WIRESHARK_CONF_OPTS += --with-qt=no endif # No GUI at all -ifeq ($(BR2_PACKAGE_LIBGTK2)$(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_QT5BASE_WIDGETS),) +ifeq ($(BR2_PACKAGE_WIRESHARK_GUI),) WIRESHARK_CONF_OPTS += --disable-wireshark endif @@ -78,7 +78,7 @@ WIRESHARK_CONF_OPTS += --with-gnutls=no endif ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) -WIRESHARK_CONF_ENV = LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +WIRESHARK_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config WIRESHARK_CONF_OPTS += --with-gcrypt=yes WIRESHARK_DEPENDENCIES += libgcrypt else diff --git a/bsp/buildroot/package/wiringpi/0001-Adjust-for-buildroot-build.patch b/bsp/buildroot/package/wiringpi/0001-Adjust-for-buildroot-build.patch index 4add46e2..4fddc995 100644 --- a/bsp/buildroot/package/wiringpi/0001-Adjust-for-buildroot-build.patch +++ b/bsp/buildroot/package/wiringpi/0001-Adjust-for-buildroot-build.patch @@ -1,4 +1,4 @@ -From a16012bf4ea63f714468d80ebe101481c917e4b8 Mon Sep 17 00:00:00 2001 +From 10d5bde8d628a93993dd7305dc9a406da69f65a9 Mon Sep 17 00:00:00 2001 From: Peter Seiderer Date: Wed, 2 Dec 2015 00:22:26 +0100 Subject: [PATCH] Adjust for buildroot build. @@ -14,12 +14,12 @@ Subject: [PATCH] Adjust for buildroot build. Signed-off-by: Peter Seiderer --- devLib/Makefile | 9 +++++---- - gpio/Makefile | 12 ++++++++---- + gpio/Makefile | 14 +++++++++----- wiringPi/Makefile | 7 ++++--- - 3 files changed, 17 insertions(+), 11 deletions(-) + 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/devLib/Makefile b/devLib/Makefile -index 0fb0033..3117479 100644 +index 1b1ebe0..84b4d2a 100644 --- a/devLib/Makefile +++ b/devLib/Makefile @@ -36,10 +36,10 @@ DYNAMIC=libwiringPiDev.so.$(VERSION) @@ -36,7 +36,7 @@ index 0fb0033..3117479 100644 LIBS = -@@ -67,6 +67,7 @@ $(STATIC): $(OBJ) +@@ -69,6 +69,7 @@ $(STATIC): $(OBJ) $(DYNAMIC): $(OBJ) $Q echo "[Link (Dynamic)]" $Q $(CC) -shared -Wl,-soname,libwiringPiDev.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPiDev.so.$(VERSION) -lpthread $(OBJ) @@ -44,7 +44,7 @@ index 0fb0033..3117479 100644 .c.o: $Q echo [Compile] $< -@@ -91,7 +92,7 @@ install: $(DYNAMIC) +@@ -93,7 +94,7 @@ install: $(DYNAMIC) $Q echo "[Install Dynamic Lib]" $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib $Q install -m 0755 libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) @@ -54,7 +54,7 @@ index 0fb0033..3117479 100644 .PHONY: install-static diff --git a/gpio/Makefile b/gpio/Makefile -index 7dcd090..e8e43f9 100644 +index 7dcd090..dc4be72 100644 --- a/gpio/Makefile +++ b/gpio/Makefile @@ -32,11 +32,11 @@ endif @@ -73,19 +73,23 @@ index 7dcd090..e8e43f9 100644 LIBS = -lwiringPi -lwiringPiDev -lpthread # May not need to alter anything below this line -@@ -55,6 +55,10 @@ gpio: $(OBJ) - $Q echo [Link] +@@ -52,9 +52,13 @@ version.h: ../VERSION + $Q echo Need to run newVersion above. + + gpio: $(OBJ) +- $Q echo [Link] ++ $Q echo "[Link (Dynamic)]" $Q $(CC) -o $@ $(OBJ) $(LDFLAGS) $(LIBS) +gpio-static: $(OBJ) -+ $Q echo [Link] -+ $Q $(CC) -o gpio $(OBJ) ../wiringPi/libwiringPi.a ../devLib/libwiringPiDev.a -lpthread ++ $Q echo "[Link (Static)]" ++ $Q $(CC) -static -o gpio $(OBJ) ../wiringPi/libwiringPi.a ../devLib/libwiringPiDev.a -lpthread + .c.o: $Q echo [Compile] $< $Q $(CC) -c $(CFLAGS) $< -o $@ diff --git a/wiringPi/Makefile b/wiringPi/Makefile -index 6bbcc5d..e0ccc52 100644 +index acb6e58..8b84dc6 100644 --- a/wiringPi/Makefile +++ b/wiringPi/Makefile @@ -36,10 +36,10 @@ DYNAMIC=libwiringPi.so.$(VERSION) @@ -119,5 +123,5 @@ index 6bbcc5d..e0ccc52 100644 .PHONY: install-static -- -2.1.4 +2.11.0 diff --git a/bsp/buildroot/package/wiringpi/wiringpi.hash b/bsp/buildroot/package/wiringpi/wiringpi.hash index 65e1f9cd..abddaf9b 100644 --- a/bsp/buildroot/package/wiringpi/wiringpi.hash +++ b/bsp/buildroot/package/wiringpi/wiringpi.hash @@ -1,2 +1,2 @@ # locally computed -sha256 00a4770c113a1a5f52480a30bcfad00d2087f42854f1791204af2e60ffe1ac8c wiringpi-78b5c323b74de782df58ee558c249e4e4fadd25f.tar.gz +sha256 0775e3bfa2df2131746c75d611ad354e5c884661be0d9de9fd786fc96f6ad918 wiringPi-2.32.tar.gz diff --git a/bsp/buildroot/package/wiringpi/wiringpi.mk b/bsp/buildroot/package/wiringpi/wiringpi.mk index baa8753b..ce0819da 100644 --- a/bsp/buildroot/package/wiringpi/wiringpi.mk +++ b/bsp/buildroot/package/wiringpi/wiringpi.mk @@ -4,16 +4,8 @@ # ################################################################################ -# original site is down (2016-06-03) -# -# WIRINGPI_VERSION = 2.31 -# WIRINGPI_SITE = git://git.drogon.net/wiringPi -# -# so change to alternative location (verifyed that commit 78b5c323 -# has the same content as local copy of wiringpi-2.31.tar.gz) -# -WIRINGPI_VERSION = 78b5c323b74de782df58ee558c249e4e4fadd25f -WIRINGPI_SITE = $(call github,WiringPi,WiringPi,$(WIRINGPI_VERSION)) +WIRINGPI_VERSION = 2.32 +WIRINGPI_SITE = git://git.drogon.net/wiringPi WIRINGPI_LICENSE = LGPLv3+ WIRINGPI_LICENSE_FILES = COPYING.LESSER @@ -40,13 +32,13 @@ define WIRINGPI_BUILD_CMDS endef define WIRINGPI_INSTALL_STAGING_CMDS - $(MAKE) -C $(@D)/wiringPi $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true - $(MAKE) -C $(@D)/devLib $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/wiringPi $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/devLib $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true endef define WIRINGPI_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D)/wiringPi $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true - $(MAKE) -C $(@D)/devLib $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/wiringPi $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/devLib $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true $(INSTALL) -D -m 0755 $(@D)/gpio/gpio $(TARGET_DIR)/usr/bin/gpio $(INSTALL) -D -m 0755 $(@D)/gpio/pintest $(TARGET_DIR)/usr/bin/pintest endef diff --git a/bsp/buildroot/package/wpa_supplicant/0001-fix-readline-libs-ordering.patch b/bsp/buildroot/package/wpa_supplicant/0001-fix-readline-libs-ordering.patch deleted file mode 100644 index 2a9b8327..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0001-fix-readline-libs-ordering.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 631f0893038743cebd2def39df61aceb48bd43a9 -Author: David du Colombier <0intro@gmail.com> -Date: Sun Sep 13 23:40:43 2015 +0200 - - wpa_supplicant: fix static link with readline - - The readline library depends on ncurses, so - it should be set before ncurses on the linker - command line to be able to be statically linked - successfully. - - Signed-off-by: David du Colombier <0intro@gmail.com> - -diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile -index 1597412..581db02 100644 ---- a/wpa_supplicant/Makefile -+++ b/wpa_supplicant/Makefile -@@ -1408,7 +1408,7 @@ LIBS += $(DBUS_LIBS) - - ifdef CONFIG_READLINE - OBJS_c += ../src/utils/edit_readline.o --LIBS_c += -lncurses -lreadline -+LIBS_c += -lreadline -lncurses - else - ifdef CONFIG_WPA_CLI_EDIT - OBJS_c += ../src/utils/edit.o diff --git a/bsp/buildroot/package/wpa_supplicant/0002-WNM-Ignore-Key-Data-in-WNM-Sleep-Mode-Response-frame.patch b/bsp/buildroot/package/wpa_supplicant/0002-WNM-Ignore-Key-Data-in-WNM-Sleep-Mode-Response-frame.patch deleted file mode 100644 index 00e5b7c7..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0002-WNM-Ignore-Key-Data-in-WNM-Sleep-Mode-Response-frame.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 6b12d93d2c7428a34bfd4b3813ba339ed57b698a Mon Sep 17 00:00:00 2001 -From: Jouni Malinen -Date: Sun, 25 Oct 2015 15:45:50 +0200 -Subject: [PATCH] WNM: Ignore Key Data in WNM Sleep Mode Response frame if no - PMF in use - -WNM Sleep Mode Response frame is used to update GTK/IGTK only if PMF is -enabled. Verify that PMF is in use before using this field on station -side to avoid accepting unauthenticated key updates. (CVE-2015-5310) - -Signed-off-by: Jouni Malinen ---- - wpa_supplicant/wnm_sta.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/wpa_supplicant/wnm_sta.c b/wpa_supplicant/wnm_sta.c -index 954de67..7d79499 100644 ---- a/wpa_supplicant/wnm_sta.c -+++ b/wpa_supplicant/wnm_sta.c -@@ -187,6 +187,12 @@ static void wnm_sleep_mode_exit_success(struct wpa_supplicant *wpa_s, - end = ptr + key_len_total; - wpa_hexdump_key(MSG_DEBUG, "WNM: Key Data", ptr, key_len_total); - -+ if (key_len_total && !wpa_sm_pmf_enabled(wpa_s->wpa)) { -+ wpa_msg(wpa_s, MSG_INFO, -+ "WNM: Ignore Key Data in WNM-Sleep Mode Response - PMF not enabled"); -+ return; -+ } -+ - while (ptr + 1 < end) { - if (ptr + 2 + ptr[1] > end) { - wpa_printf(MSG_DEBUG, "WNM: Invalid Key Data element " diff --git a/bsp/buildroot/package/wpa_supplicant/0003-EAP-pwd-peer-Fix-last-fragment-length-validation.patch b/bsp/buildroot/package/wpa_supplicant/0003-EAP-pwd-peer-Fix-last-fragment-length-validation.patch deleted file mode 100644 index 82c26398..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0003-EAP-pwd-peer-Fix-last-fragment-length-validation.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 8057821706784608b828e769ccefbced95591e50 Mon Sep 17 00:00:00 2001 -From: Jouni Malinen -Date: Sun, 1 Nov 2015 18:18:17 +0200 -Subject: [PATCH] EAP-pwd peer: Fix last fragment length validation - -All but the last fragment had their length checked against the remaining -room in the reassembly buffer. This allowed a suitably constructed last -fragment frame to try to add extra data that would go beyond the buffer. -The length validation code in wpabuf_put_data() prevents an actual -buffer write overflow from occurring, but this results in process -termination. (CVE-2015-5315) - -Signed-off-by: Jouni Malinen ---- - src/eap_peer/eap_pwd.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c -index 1f78544..75ceef1 100644 ---- a/src/eap_peer/eap_pwd.c -+++ b/src/eap_peer/eap_pwd.c -@@ -903,7 +903,7 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret, - /* - * buffer and ACK the fragment - */ -- if (EAP_PWD_GET_MORE_BIT(lm_exch)) { -+ if (EAP_PWD_GET_MORE_BIT(lm_exch) || data->in_frag_pos) { - data->in_frag_pos += len; - if (data->in_frag_pos > wpabuf_size(data->inbuf)) { - wpa_printf(MSG_INFO, "EAP-pwd: Buffer overflow attack " -@@ -916,7 +916,8 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret, - return NULL; - } - wpabuf_put_data(data->inbuf, pos, len); -- -+ } -+ if (EAP_PWD_GET_MORE_BIT(lm_exch)) { - resp = eap_msg_alloc(EAP_VENDOR_IETF, EAP_TYPE_PWD, - EAP_PWD_HDR_SIZE, - EAP_CODE_RESPONSE, eap_get_id(reqData)); -@@ -930,10 +931,8 @@ eap_pwd_process(struct eap_sm *sm, void *priv, struct eap_method_ret *ret, - * we're buffering and this is the last fragment - */ - if (data->in_frag_pos) { -- wpabuf_put_data(data->inbuf, pos, len); - wpa_printf(MSG_DEBUG, "EAP-pwd: Last fragment, %d bytes", - (int) len); -- data->in_frag_pos += len; - pos = wpabuf_head_u8(data->inbuf); - len = data->in_frag_pos; - } --- -1.9.1 - diff --git a/bsp/buildroot/package/wpa_supplicant/0004-EAP-pwd-server-Fix-last-fragment-length-validation.patch b/bsp/buildroot/package/wpa_supplicant/0004-EAP-pwd-server-Fix-last-fragment-length-validation.patch deleted file mode 100644 index bfc4c74e..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0004-EAP-pwd-server-Fix-last-fragment-length-validation.patch +++ /dev/null @@ -1,51 +0,0 @@ -From bef802ece03f9ae9d52a21f0cf4f1bc2c5a1f8aa Mon Sep 17 00:00:00 2001 -From: Jouni Malinen -Date: Sun, 1 Nov 2015 18:24:16 +0200 -Subject: [PATCH] EAP-pwd server: Fix last fragment length validation - -All but the last fragment had their length checked against the remaining -room in the reassembly buffer. This allowed a suitably constructed last -fragment frame to try to add extra data that would go beyond the buffer. -The length validation code in wpabuf_put_data() prevents an actual -buffer write overflow from occurring, but this results in process -termination. (CVE-2015-5314) - -Signed-off-by: Jouni Malinen ---- - src/eap_server/eap_server_pwd.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/eap_server/eap_server_pwd.c b/src/eap_server/eap_server_pwd.c -index cb83ff7..9f787ab 100644 ---- a/src/eap_server/eap_server_pwd.c -+++ b/src/eap_server/eap_server_pwd.c -@@ -970,7 +970,7 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv, - /* - * the first and all intermediate fragments have the M bit set - */ -- if (EAP_PWD_GET_MORE_BIT(lm_exch)) { -+ if (EAP_PWD_GET_MORE_BIT(lm_exch) || data->in_frag_pos) { - if ((data->in_frag_pos + len) > wpabuf_size(data->inbuf)) { - wpa_printf(MSG_DEBUG, "EAP-pwd: Buffer overflow " - "attack detected! (%d+%d > %d)", -@@ -981,6 +981,8 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv, - } - wpabuf_put_data(data->inbuf, pos, len); - data->in_frag_pos += len; -+ } -+ if (EAP_PWD_GET_MORE_BIT(lm_exch)) { - wpa_printf(MSG_DEBUG, "EAP-pwd: Got a %d byte fragment", - (int) len); - return; -@@ -990,8 +992,6 @@ static void eap_pwd_process(struct eap_sm *sm, void *priv, - * buffering fragments so that's how we know it's the last) - */ - if (data->in_frag_pos) { -- wpabuf_put_data(data->inbuf, pos, len); -- data->in_frag_pos += len; - pos = wpabuf_head_u8(data->inbuf); - len = data->in_frag_pos; - wpa_printf(MSG_DEBUG, "EAP-pwd: Last fragment, %d bytes", --- -1.9.1 - diff --git a/bsp/buildroot/package/wpa_supplicant/0005-EAP-pwd-peer-Fix-error-path-for-unexpected-Confirm-m.patch b/bsp/buildroot/package/wpa_supplicant/0005-EAP-pwd-peer-Fix-error-path-for-unexpected-Confirm-m.patch deleted file mode 100644 index 3088f6a6..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0005-EAP-pwd-peer-Fix-error-path-for-unexpected-Confirm-m.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 95577884ca4fa76be91344ff7a8d5d1e6dc3da61 Mon Sep 17 00:00:00 2001 -From: Jouni Malinen -Date: Sun, 1 Nov 2015 19:35:44 +0200 -Subject: [PATCH] EAP-pwd peer: Fix error path for unexpected Confirm message - -If the Confirm message is received from the server before the Identity -exchange has been completed, the group has not yet been determined and -data->grp is NULL. The error path in eap_pwd_perform_confirm_exchange() -did not take this corner case into account and could end up -dereferencing a NULL pointer and terminating the process if invalid -message sequence is received. (CVE-2015-5316) - -Signed-off-by: Jouni Malinen ---- - src/eap_peer/eap_pwd.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/eap_peer/eap_pwd.c b/src/eap_peer/eap_pwd.c -index 75ceef1..892b590 100644 ---- a/src/eap_peer/eap_pwd.c -+++ b/src/eap_peer/eap_pwd.c -@@ -774,7 +774,8 @@ eap_pwd_perform_confirm_exchange(struct eap_sm *sm, struct eap_pwd_data *data, - wpabuf_put_data(data->outbuf, conf, SHA256_MAC_LEN); - - fin: -- bin_clear_free(cruft, BN_num_bytes(data->grp->prime)); -+ if (data->grp) -+ bin_clear_free(cruft, BN_num_bytes(data->grp->prime)); - BN_clear_free(x); - BN_clear_free(y); - if (data->outbuf == NULL) { --- -1.9.1 - diff --git a/bsp/buildroot/package/wpa_supplicant/0006-fix-libwpa_client.patch b/bsp/buildroot/package/wpa_supplicant/0006-fix-libwpa_client.patch deleted file mode 100644 index 11c54023..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0006-fix-libwpa_client.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 6f7e0354a9035ce33742a5f869f817a6b39b2f31 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=B6rg=20Krause?= -Date: Thu, 29 Oct 2015 11:39:03 +0100 -Subject: [PATCH 1/1] wpa_supplicant/Makefile: fix libwpa_client -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Building libwpa_client requires src/utils/common.c for bin_clear_free() else -loading the library fails with: - - Error relocating /usr/lib/libwpa_client.so: bin_clear_free: symbol not found - -Backported from: 736b7cb2daf877a0cb9ad42ff15a2efbbd65fa42 - -Signed-off-by: Jörg Krause ---- - wpa_supplicant/Makefile | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile -index 61f8f18..0c444b0 100644 ---- a/wpa_supplicant/Makefile -+++ b/wpa_supplicant/Makefile -@@ -1706,9 +1706,11 @@ wpa_cli: $(OBJS_c) - - LIBCTRL += ../src/common/wpa_ctrl.o - LIBCTRL += ../src/utils/os_$(CONFIG_OS).o -+LIBCTRL += ../src/utils/common.c - LIBCTRL += ../src/utils/wpa_debug.o - LIBCTRLSO += ../src/common/wpa_ctrl.c - LIBCTRLSO += ../src/utils/os_$(CONFIG_OS).c -+LIBCTRLSO += ../src/utils/common.c - LIBCTRLSO += ../src/utils/wpa_debug.c - - libwpa_client.a: $(LIBCTRL) --- -2.6.2 - diff --git a/bsp/buildroot/package/wpa_supplicant/0007-systemd-Update-service-files-according-to-dbus-inter.patch b/bsp/buildroot/package/wpa_supplicant/0007-systemd-Update-service-files-according-to-dbus-inter.patch deleted file mode 100644 index 59c54506..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0007-systemd-Update-service-files-according-to-dbus-inter.patch +++ /dev/null @@ -1,77 +0,0 @@ -From b6cea24d6191d9ccdcd1ac38a5322e3da73218db Mon Sep 17 00:00:00 2001 -From: Marcin Niestroj -Date: Mon, 11 Apr 2016 13:23:54 +0200 -Subject: [PATCH] systemd: Update service files according to dbus interface - version used - -systemd service files were supplied with old DBus bus name. After -service activation systemd was waiting for appearance of specified bus -name to consider it started successfully. However, if wpa_supplicant was -compiled only with new dbus interface name, then systemd didn't notice -configured (old) DBus bus name appearance. In the end service was -considered malfunctioning and it was deactivated. - -Update systemd service BusName property according to supported DBus -interface version. - -Signed-off-by: Marcin Niestroj ---- - wpa_supplicant/Makefile | 8 ++++++-- - wpa_supplicant/systemd/wpa_supplicant.service.in | 4 ++-- - 2 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile -index ad9ead9..fbd1b25 100644 ---- a/wpa_supplicant/Makefile -+++ b/wpa_supplicant/Makefile -@@ -1374,6 +1374,7 @@ ifndef DBUS_INCLUDE - DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1) - endif - DBUS_CFLAGS += $(DBUS_INCLUDE) -+DBUS_INTERFACE=fi.epitest.hostap.WPASupplicant - endif - - ifdef CONFIG_CTRL_IFACE_DBUS_NEW -@@ -1399,6 +1400,7 @@ DBUS_OBJS += dbus/dbus_new_introspect.o - DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO - endif - DBUS_CFLAGS += $(DBUS_INCLUDE) -+DBUS_INTERFACE=fi.w1.wpa_supplicant1 - endif - - ifdef DBUS -@@ -1760,11 +1762,13 @@ else - endif - - %.service: %.service.in -- $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ -+ $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' \ -+ -e 's|\@DBUS_INTERFACE\@|$(DBUS_INTERFACE)|g' $< >$@ - @$(E) " sed" $< - - %@.service: %.service.arg.in -- $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ -+ $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' \ -+ -e 's|\@DBUS_INTERFACE\@|$(DBUS_INTERFACE)|g' $< >$@ - @$(E) " sed" $< - - wpa_supplicant.exe: wpa_supplicant -diff --git a/wpa_supplicant/systemd/wpa_supplicant.service.in b/wpa_supplicant/systemd/wpa_supplicant.service.in -index ea964ce..bc5d49a 100644 ---- a/wpa_supplicant/systemd/wpa_supplicant.service.in -+++ b/wpa_supplicant/systemd/wpa_supplicant.service.in -@@ -5,9 +5,9 @@ Wants=network.target - - [Service] - Type=dbus --BusName=fi.epitest.hostap.WPASupplicant -+BusName=@DBUS_INTERFACE@ - ExecStart=@BINDIR@/wpa_supplicant -u - - [Install] - WantedBy=multi-user.target --Alias=dbus-fi.epitest.hostap.WPASupplicant.service -+Alias=dbus-@DBUS_INTERFACE@.service --- -2.8.0 - diff --git a/bsp/buildroot/package/wpa_supplicant/0008-WPS-Reject-a-Credential-with-invalid-passphrase.patch b/bsp/buildroot/package/wpa_supplicant/0008-WPS-Reject-a-Credential-with-invalid-passphrase.patch deleted file mode 100644 index 282aa952..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0008-WPS-Reject-a-Credential-with-invalid-passphrase.patch +++ /dev/null @@ -1,85 +0,0 @@ -From ecbb0b3dc122b0d290987cf9c84010bbe53e1022 Mon Sep 17 00:00:00 2001 -From: Jouni Malinen -Date: Fri, 4 Mar 2016 17:20:18 +0200 -Subject: [PATCH] WPS: Reject a Credential with invalid passphrase - -WPA/WPA2-Personal passphrase is not allowed to include control -characters. Reject a Credential received from a WPS Registrar both as -STA (Credential) and AP (AP Settings) if the credential is for WPAPSK or -WPA2PSK authentication type and includes an invalid passphrase. - -This fixes an issue where hostapd or wpa_supplicant could have updated -the configuration file PSK/passphrase parameter with arbitrary data from -an external device (Registrar) that may not be fully trusted. Should -such data include a newline character, the resulting configuration file -could become invalid and fail to be parsed. - -Signed-off-by: Jouni Malinen -Signed-off-by: Baruch Siach ---- -Patch status: upstream (ecbb0b3dc122b0d290987cf9c84010bbe53e1022) - - src/utils/common.c | 12 ++++++++++++ - src/utils/common.h | 1 + - src/wps/wps_attr_process.c | 10 ++++++++++ - 3 files changed, 23 insertions(+) - -diff --git a/src/utils/common.c b/src/utils/common.c -index 450e2c6519ba..27b7c02de10b 100644 ---- a/src/utils/common.c -+++ b/src/utils/common.c -@@ -697,6 +697,18 @@ int is_hex(const u8 *data, size_t len) - } - - -+int has_ctrl_char(const u8 *data, size_t len) -+{ -+ size_t i; -+ -+ for (i = 0; i < len; i++) { -+ if (data[i] < 32 || data[i] == 127) -+ return 1; -+ } -+ return 0; -+} -+ -+ - size_t merge_byte_arrays(u8 *res, size_t res_len, - const u8 *src1, size_t src1_len, - const u8 *src2, size_t src2_len) -diff --git a/src/utils/common.h b/src/utils/common.h -index 701dbb236ed5..a97224070385 100644 ---- a/src/utils/common.h -+++ b/src/utils/common.h -@@ -488,6 +488,7 @@ const char * wpa_ssid_txt(const u8 *ssid, size_t ssid_len); - - char * wpa_config_parse_string(const char *value, size_t *len); - int is_hex(const u8 *data, size_t len); -+int has_ctrl_char(const u8 *data, size_t len); - size_t merge_byte_arrays(u8 *res, size_t res_len, - const u8 *src1, size_t src1_len, - const u8 *src2, size_t src2_len); -diff --git a/src/wps/wps_attr_process.c b/src/wps/wps_attr_process.c -index eadb22fe2e78..e8c4579309ab 100644 ---- a/src/wps/wps_attr_process.c -+++ b/src/wps/wps_attr_process.c -@@ -229,6 +229,16 @@ static int wps_workaround_cred_key(struct wps_credential *cred) - cred->key_len--; - #endif /* CONFIG_WPS_STRICT */ - } -+ -+ -+ if (cred->auth_type & (WPS_AUTH_WPAPSK | WPS_AUTH_WPA2PSK) && -+ (cred->key_len < 8 || has_ctrl_char(cred->key, cred->key_len))) { -+ wpa_printf(MSG_INFO, "WPS: Reject credential with invalid WPA/WPA2-Personal passphrase"); -+ wpa_hexdump_ascii_key(MSG_INFO, "WPS: Network Key", -+ cred->key, cred->key_len); -+ return -1; -+ } -+ - return 0; - } - --- -2.8.1 - diff --git a/bsp/buildroot/package/wpa_supplicant/0009-Reject-psk-parameter-set-with-invalid-passphrase-cha.patch b/bsp/buildroot/package/wpa_supplicant/0009-Reject-psk-parameter-set-with-invalid-passphrase-cha.patch deleted file mode 100644 index 316c0700..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0009-Reject-psk-parameter-set-with-invalid-passphrase-cha.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 73e4abb24a936014727924d8b0b2965edfc117dd Mon Sep 17 00:00:00 2001 -From: Jouni Malinen -Date: Fri, 4 Mar 2016 18:46:41 +0200 -Subject: [PATCH] Reject psk parameter set with invalid passphrase character - -WPA/WPA2-Personal passphrase is not allowed to include control -characters. Reject a passphrase configuration attempt if that passphrase -includes an invalid passphrase. - -This fixes an issue where wpa_supplicant could have updated the -configuration file psk parameter with arbitrary data from the control -interface or D-Bus interface. While those interfaces are supposed to be -accessible only for trusted users/applications, it may be possible that -an untrusted user has access to a management software component that -does not validate the passphrase value before passing it to -wpa_supplicant. - -This could allow such an untrusted user to inject up to 63 characters of -almost arbitrary data into the configuration file. Such configuration -file could result in wpa_supplicant trying to load a library (e.g., -opensc_engine_path, pkcs11_engine_path, pkcs11_module_path, -load_dynamic_eap) from user controlled location when starting again. -This would allow code from that library to be executed under the -wpa_supplicant process privileges. - -Signed-off-by: Jouni Malinen -Signed-off-by: Baruch Siach ---- -Patch status: upstream (73e4abb24a936014727924d8b0b2965edfc117dd) - - wpa_supplicant/config.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c -index b1c7870dafe0..fdd964356afa 100644 ---- a/wpa_supplicant/config.c -+++ b/wpa_supplicant/config.c -@@ -478,6 +478,12 @@ static int wpa_config_parse_psk(const struct parse_data *data, - } - wpa_hexdump_ascii_key(MSG_MSGDUMP, "PSK (ASCII passphrase)", - (u8 *) value, len); -+ if (has_ctrl_char((u8 *) value, len)) { -+ wpa_printf(MSG_ERROR, -+ "Line %d: Invalid passphrase character", -+ line); -+ return -1; -+ } - if (ssid->passphrase && os_strlen(ssid->passphrase) == len && - os_memcmp(ssid->passphrase, value, len) == 0) { - /* No change to the previously configured value */ --- -2.8.1 - diff --git a/bsp/buildroot/package/wpa_supplicant/0010-Remove-newlines-from-wpa_supplicant-config-network-o.patch b/bsp/buildroot/package/wpa_supplicant/0010-Remove-newlines-from-wpa_supplicant-config-network-o.patch deleted file mode 100644 index 8a40dcec..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0010-Remove-newlines-from-wpa_supplicant-config-network-o.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 0fe5a234240a108b294a87174ad197f6b5cb38e9 Mon Sep 17 00:00:00 2001 -From: Paul Stewart -Date: Thu, 3 Mar 2016 15:40:19 -0800 -Subject: [PATCH] Remove newlines from wpa_supplicant config network output - -Spurious newlines output while writing the config file can corrupt the -wpa_supplicant configuration. Avoid writing these for the network block -parameters. This is a generic filter that cover cases that may not have -been explicitly addressed with a more specific commit to avoid control -characters in the psk parameter. - -Signed-off-by: Paul Stewart -Signed-off-by: Baruch Siach ---- -Patch status: upstream (0fe5a234240a108b294a87174ad197f6b5cb38e9) - - src/utils/common.c | 11 +++++++++++ - src/utils/common.h | 1 + - wpa_supplicant/config.c | 15 +++++++++++++-- - 3 files changed, 25 insertions(+), 2 deletions(-) - -diff --git a/src/utils/common.c b/src/utils/common.c -index 27b7c02de10b..9856463242c7 100644 ---- a/src/utils/common.c -+++ b/src/utils/common.c -@@ -709,6 +709,17 @@ int has_ctrl_char(const u8 *data, size_t len) - } - - -+int has_newline(const char *str) -+{ -+ while (*str) { -+ if (*str == '\n' || *str == '\r') -+ return 1; -+ str++; -+ } -+ return 0; -+} -+ -+ - size_t merge_byte_arrays(u8 *res, size_t res_len, - const u8 *src1, size_t src1_len, - const u8 *src2, size_t src2_len) -diff --git a/src/utils/common.h b/src/utils/common.h -index a97224070385..d19927b375bf 100644 ---- a/src/utils/common.h -+++ b/src/utils/common.h -@@ -489,6 +489,7 @@ const char * wpa_ssid_txt(const u8 *ssid, size_t ssid_len); - char * wpa_config_parse_string(const char *value, size_t *len); - int is_hex(const u8 *data, size_t len); - int has_ctrl_char(const u8 *data, size_t len); -+int has_newline(const char *str); - size_t merge_byte_arrays(u8 *res, size_t res_len, - const u8 *src1, size_t src1_len, - const u8 *src2, size_t src2_len); -diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c -index fdd964356afa..eb97cd5e4e6e 100644 ---- a/wpa_supplicant/config.c -+++ b/wpa_supplicant/config.c -@@ -2699,8 +2699,19 @@ char * wpa_config_get(struct wpa_ssid *ssid, const char *var) - - for (i = 0; i < NUM_SSID_FIELDS; i++) { - const struct parse_data *field = &ssid_fields[i]; -- if (os_strcmp(var, field->name) == 0) -- return field->writer(field, ssid); -+ if (os_strcmp(var, field->name) == 0) { -+ char *ret = field->writer(field, ssid); -+ -+ if (ret && has_newline(ret)) { -+ wpa_printf(MSG_ERROR, -+ "Found newline in value for %s; not returning it", -+ var); -+ os_free(ret); -+ ret = NULL; -+ } -+ -+ return ret; -+ } - } - - return NULL; --- -2.8.1 - diff --git a/bsp/buildroot/package/wpa_supplicant/0011-Reject-SET_CRED-commands-with-newline-characters-in-.patch b/bsp/buildroot/package/wpa_supplicant/0011-Reject-SET_CRED-commands-with-newline-characters-in-.patch deleted file mode 100644 index 530681fa..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0011-Reject-SET_CRED-commands-with-newline-characters-in-.patch +++ /dev/null @@ -1,65 +0,0 @@ -From b166cd84a77a6717be9600bf95378a0055d6f5a5 Mon Sep 17 00:00:00 2001 -From: Jouni Malinen -Date: Tue, 5 Apr 2016 23:33:10 +0300 -Subject: [PATCH] Reject SET_CRED commands with newline characters in the - string values - -Most of the cred block parameters are written as strings without -filtering and if there is an embedded newline character in the value, -unexpected configuration file data might be written. - -This fixes an issue where wpa_supplicant could have updated the -configuration file cred parameter with arbitrary data from the control -interface or D-Bus interface. While those interfaces are supposed to be -accessible only for trusted users/applications, it may be possible that -an untrusted user has access to a management software component that -does not validate the credential value before passing it to -wpa_supplicant. - -This could allow such an untrusted user to inject almost arbitrary data -into the configuration file. Such configuration file could result in -wpa_supplicant trying to load a library (e.g., opensc_engine_path, -pkcs11_engine_path, pkcs11_module_path, load_dynamic_eap) from user -controlled location when starting again. This would allow code from that -library to be executed under the wpa_supplicant process privileges. - -Signed-off-by: Jouni Malinen -Signed-off-by: Baruch Siach ---- -Patch status: upstream (b166cd84a77a6717be9600bf95378a0055d6f5a5) - - wpa_supplicant/config.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c -index eb97cd5e4e6e..69152efdea1a 100644 ---- a/wpa_supplicant/config.c -+++ b/wpa_supplicant/config.c -@@ -2896,6 +2896,8 @@ int wpa_config_set_cred(struct wpa_cred *cred, const char *var, - - if (os_strcmp(var, "password") == 0 && - os_strncmp(value, "ext:", 4) == 0) { -+ if (has_newline(value)) -+ return -1; - str_clear_free(cred->password); - cred->password = os_strdup(value); - cred->ext_password = 1; -@@ -2946,9 +2948,14 @@ int wpa_config_set_cred(struct wpa_cred *cred, const char *var, - } - - val = wpa_config_parse_string(value, &len); -- if (val == NULL) { -+ if (val == NULL || -+ (os_strcmp(var, "excluded_ssid") != 0 && -+ os_strcmp(var, "roaming_consortium") != 0 && -+ os_strcmp(var, "required_roaming_consortium") != 0 && -+ has_newline(val))) { - wpa_printf(MSG_ERROR, "Line %d: invalid field '%s' string " - "value '%s'.", line, var, value); -+ os_free(val); - return -1; - } - --- -2.8.1 - diff --git a/bsp/buildroot/package/wpa_supplicant/0012-Reject-SET-commands-with-newline-characters-in-the-s.patch b/bsp/buildroot/package/wpa_supplicant/0012-Reject-SET-commands-with-newline-characters-in-the-s.patch deleted file mode 100644 index a29df079..00000000 --- a/bsp/buildroot/package/wpa_supplicant/0012-Reject-SET-commands-with-newline-characters-in-the-s.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 2a3f56502b52375c3bf113cf92adfa99bad6b488 Mon Sep 17 00:00:00 2001 -From: Jouni Malinen -Date: Tue, 5 Apr 2016 23:55:48 +0300 -Subject: [PATCH] Reject SET commands with newline characters in the string - values - -Many of the global configuration parameters are written as strings -without filtering and if there is an embedded newline character in the -value, unexpected configuration file data might be written. - -This fixes an issue where wpa_supplicant could have updated the -configuration file global parameter with arbitrary data from the control -interface or D-Bus interface. While those interfaces are supposed to be -accessible only for trusted users/applications, it may be possible that -an untrusted user has access to a management software component that -does not validate the value of a parameter before passing it to -wpa_supplicant. - -This could allow such an untrusted user to inject almost arbitrary data -into the configuration file. Such configuration file could result in -wpa_supplicant trying to load a library (e.g., opensc_engine_path, -pkcs11_engine_path, pkcs11_module_path, load_dynamic_eap) from user -controlled location when starting again. This would allow code from that -library to be executed under the wpa_supplicant process privileges. - -Signed-off-by: Jouni Malinen -Signed-off-by: Baruch Siach ---- -Patch status: upstream (2a3f56502b52375c3bf113cf92adfa99bad6b488) - - wpa_supplicant/config.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c -index 69152efdea1a..d9a1603f6d7e 100644 ---- a/wpa_supplicant/config.c -+++ b/wpa_supplicant/config.c -@@ -3764,6 +3764,12 @@ static int wpa_global_config_parse_str(const struct global_parse_data *data, - return -1; - } - -+ if (has_newline(pos)) { -+ wpa_printf(MSG_ERROR, "Line %d: invalid %s value with newline", -+ line, data->name); -+ return -1; -+ } -+ - tmp = os_strdup(pos); - if (tmp == NULL) - return -1; --- -2.8.1 - diff --git a/bsp/buildroot/package/wpa_supplicant/Config.in b/bsp/buildroot/package/wpa_supplicant/Config.in index 85520b6a..9250a3b2 100644 --- a/bsp/buildroot/package/wpa_supplicant/Config.in +++ b/bsp/buildroot/package/wpa_supplicant/Config.in @@ -31,6 +31,7 @@ comment "nl80211 support needs a toolchain w/ threads" config BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT bool "Enable AP mode" + depends on BR2_PACKAGE_WPA_SUPPLICANT_NL80211 help With this option enabled, wpa_supplicant can act as an access point much like hostapd does with a limited feature set. @@ -44,6 +45,13 @@ config BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY help Enable support for Wi-Fi Display +config BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING + bool "Enable mesh networking" + depends on BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT + help + Enable support for open and secured mesh networking + (IEEE 802.11s) + config BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN bool "Enable autoscan" help diff --git a/bsp/buildroot/package/wpa_supplicant/wpa_supplicant.hash b/bsp/buildroot/package/wpa_supplicant/wpa_supplicant.hash index 19e43598..22b2e8dd 100644 --- a/bsp/buildroot/package/wpa_supplicant/wpa_supplicant.hash +++ b/bsp/buildroot/package/wpa_supplicant/wpa_supplicant.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 cce55bae483b364eae55c35ba567c279be442ed8bab5b80a3c7fb0d057b9b316 wpa_supplicant-2.5.tar.gz +sha256 b4936d34c4e6cdd44954beba74296d964bc2c9668ecaa5255e499636fe2b1450 wpa_supplicant-2.6.tar.gz diff --git a/bsp/buildroot/package/wpa_supplicant/wpa_supplicant.mk b/bsp/buildroot/package/wpa_supplicant/wpa_supplicant.mk index d46328e0..9c8414b5 100644 --- a/bsp/buildroot/package/wpa_supplicant/wpa_supplicant.mk +++ b/bsp/buildroot/package/wpa_supplicant/wpa_supplicant.mk @@ -4,7 +4,7 @@ # ################################################################################ -WPA_SUPPLICANT_VERSION = 2.5 +WPA_SUPPLICANT_VERSION = 2.6 WPA_SUPPLICANT_SITE = http://hostap.epitest.fi/releases WPA_SUPPLICANT_LICENSE = BSD-3c WPA_SUPPLICANT_LICENSE_FILES = README @@ -28,7 +28,8 @@ WPA_SUPPLICANT_CONFIG_ENABLE = \ CONFIG_IEEE80211N \ CONFIG_IEEE80211R \ CONFIG_INTERNAL_LIBTOMMATH \ - CONFIG_DEBUG_FILE + CONFIG_DEBUG_FILE \ + CONFIG_MATCH_IFACE WPA_SUPPLICANT_CONFIG_DISABLE = \ CONFIG_SMARTCARD @@ -72,6 +73,11 @@ ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY),y) WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_WIFI_DISPLAY endif +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING),y) +WPA_SUPPLICANT_CONFIG_SET += CONFIG_MESH +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_IEEE80211W +endif + ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN),y) WPA_SUPPLICANT_CONFIG_ENABLE += \ CONFIG_AUTOSCAN_EXPONENTIAL \ diff --git a/bsp/buildroot/package/wvdial/0001-uClibc-scandir.patch b/bsp/buildroot/package/wvdial/0001-uClibc-scandir.patch deleted file mode 100644 index b611e94a..00000000 --- a/bsp/buildroot/package/wvdial/0001-uClibc-scandir.patch +++ /dev/null @@ -1,23 +0,0 @@ -Fix wvdial so that it works with scandir as defined in uClibc. - -Signed-off-by: Simon Dawson - -diff -Nurp a/wvmodemscan.cc b/wvmodemscan.cc ---- a/wvmodemscan.cc 2009-09-29 18:27:28.000000000 +0100 -+++ b/wvmodemscan.cc 2012-07-28 14:03:56.359729660 +0100 -@@ -495,13 +495,13 @@ static int fileselect(const struct diren - // (no internal ISDN support) || !strncmp(e->d_name, "ttyI", 4); - } - --#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 10) -+#if defined(__UCLIBC__) || (defined(__GLIBC__) && __GLIBC_PREREQ(2, 10)) - static int filesort(const dirent **e1, const dirent **e2) - #else - static int filesort(const void *_e1, const void *_e2) - #endif - { --#if !(defined(__GLIBC__) && __GLIBC_PREREQ(2, 10)) -+#if !(defined(__UCLIBC__) || (defined(__GLIBC__) && __GLIBC_PREREQ(2, 10))) - dirent const * const *e1 = (dirent const * const *)_e1; - dirent const * const *e2 = (dirent const * const *)_e2; - #endif diff --git a/bsp/buildroot/package/wvdial/Config.in b/bsp/buildroot/package/wvdial/Config.in deleted file mode 100644 index 03730f3b..00000000 --- a/bsp/buildroot/package/wvdial/Config.in +++ /dev/null @@ -1,15 +0,0 @@ -config BR2_PACKAGE_WVDIAL - bool "wvdial" - depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_MMU # wvstreams - depends on !BR2_STATIC_LIBS # wvstreams - depends on !BR2_TOOLCHAIN_USES_MUSL # wvstreams - select BR2_PACKAGE_WVSTREAMS - help - wvdial is an intelligent Point-to-Point Protocol dialer - - http://wvdial.googlecode.com/ - -comment "wvdial needs a glibc or uClibc toolchain w/ C++, dynamic library" - depends on BR2_USE_MMU - depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL diff --git a/bsp/buildroot/package/wvdial/wvdial.hash b/bsp/buildroot/package/wvdial/wvdial.hash deleted file mode 100644 index ac492090..00000000 --- a/bsp/buildroot/package/wvdial/wvdial.hash +++ /dev/null @@ -1,2 +0,0 @@ -# locally computed -sha256 99906d9560cbdbc97e1855e7b0a7169f1e11983be3ac539140423f09debced82 wvdial-1.61.tar.bz2 diff --git a/bsp/buildroot/package/wvdial/wvdial.mk b/bsp/buildroot/package/wvdial/wvdial.mk deleted file mode 100644 index e89dfc58..00000000 --- a/bsp/buildroot/package/wvdial/wvdial.mk +++ /dev/null @@ -1,32 +0,0 @@ -################################################################################ -# -# wvdial -# -################################################################################ - -WVDIAL_VERSION = 1.61 -WVDIAL_SITE = http://wvdial.googlecode.com/files -WVDIAL_SOURCE = wvdial-$(WVDIAL_VERSION).tar.bz2 -WVDIAL_DEPENDENCIES = wvstreams - -WVDIAL_LICENSE = LGPLv2 -WVDIAL_LICENSE_FILES = COPYING.LIB - -# N.B. parallel make fails -WVDIAL_MAKE = $(MAKE1) - -WVDIAL_MAKE_ENV += $(TARGET_CONFIGURE_OPTS) \ - WVSTREAMS_INC="$(STAGING_DIR)/usr/include" \ - WVSTREAMS_LIB="$(STAGING_DIR)/usr/lib" - -define WVDIAL_BUILD_CMDS - $(TARGET_MAKE_ENV) $(WVDIAL_MAKE_ENV) $(WVDIAL_MAKE) -C $(@D) -endef - -define WVDIAL_INSTALL_TARGET_CMDS - $(TARGET_MAKE_ENV) $(WVDIAL_MAKE_ENV) $(WVDIAL_MAKE) \ - prefix="$(TARGET_DIR)/usr" PPPDIR="$(TARGET_DIR)/etc/ppp/peers" \ - install -C $(@D) -endef - -$(eval $(generic-package)) diff --git a/bsp/buildroot/package/wvstreams/0001-fix-uClibc-compile-getcontext.patch b/bsp/buildroot/package/wvstreams/0001-fix-uClibc-compile-getcontext.patch deleted file mode 100644 index c78cc189..00000000 --- a/bsp/buildroot/package/wvstreams/0001-fix-uClibc-compile-getcontext.patch +++ /dev/null @@ -1,273 +0,0 @@ -Fix wvstreams so that it builds with uClibc, which does not have the -getcontext() and setcontext() functions. - -Signed-off-by: Simon Dawson - -diff -Nurp a/include/wvtask.h b/include/wvtask.h ---- a/include/wvtask.h 2008-07-14 20:11:35.000000000 +0100 -+++ b/include/wvtask.h 2012-07-28 12:29:53.559981240 +0100 -@@ -28,6 +28,13 @@ - - #define WVTASK_MAGIC 0x123678 - -+#undef HAVE_GETCONTEXT -+#ifdef HAVE_GETCONTEXT -+typedef ucontext_t TaskContext; -+#else -+typedef jmp_buf TaskContext; -+#endif -+ - class WvTaskMan; - - /** Represents a single thread of control. */ -@@ -54,8 +61,8 @@ class WvTask - bool running, recycled; - - WvTaskMan &man; -- ucontext_t mystate; // used for resuming the task -- ucontext_t func_call, func_return; -+ TaskContext mystate; // used for resuming the task -+ TaskContext func_call, func_return; - - TaskFunc *func; - void *userdata; -@@ -94,13 +101,13 @@ class WvTaskMan - static void call_func(WvTask *task); - - static char *stacktop; -- static ucontext_t stackmaster_task; -+ static TaskContext stackmaster_task; - - static WvTask *stack_target; -- static ucontext_t get_stack_return; -+ static TaskContext get_stack_return; - - static WvTask *current_task; -- static ucontext_t toplevel; -+ static TaskContext toplevel; - - WvTaskMan(); - virtual ~WvTaskMan(); -diff -Nurp a/utils/wvtask.cc b/utils/wvtask.cc ---- a/utils/wvtask.cc 2009-05-13 22:42:52.000000000 +0100 -+++ b/utils/wvtask.cc 2012-07-28 12:32:23.855974538 +0100 -@@ -60,12 +60,14 @@ int WvTask::taskcount, WvTask::numtasks, - WvTaskMan *WvTaskMan::singleton; - int WvTaskMan::links, WvTaskMan::magic_number; - WvTaskList WvTaskMan::all_tasks, WvTaskMan::free_tasks; --ucontext_t WvTaskMan::stackmaster_task, WvTaskMan::get_stack_return, -+TaskContext WvTaskMan::stackmaster_task, WvTaskMan::get_stack_return, - WvTaskMan::toplevel; - WvTask *WvTaskMan::current_task, *WvTaskMan::stack_target; - char *WvTaskMan::stacktop; - -+#ifdef HAVE_GETCONTEXT - static int context_return; -+#endif - - - static bool use_shared_stack() -@@ -198,9 +200,13 @@ WvTaskMan::WvTaskMan() - - stacktop = (char *)alloca(0); - -+#ifdef HAVE_GETCONTEXT - context_return = 0; - assert(getcontext(&get_stack_return) == 0); - if (context_return == 0) -+#else -+ if (setjmp(get_stack_return) == 0) -+#endif - { - // initial setup - start the stackmaster() task (never returns!) - stackmaster(); -@@ -257,22 +263,30 @@ int WvTaskMan::run(WvTask &task, int val - - WvTask *old_task = current_task; - current_task = &task; -- ucontext_t *state; -+ TaskContext *state; - - if (!old_task) - state = &toplevel; // top-level call (not in an actual task yet) - else - state = &old_task->mystate; - -+#ifdef HAVE_GETCONTEXT - context_return = 0; - assert(getcontext(state) == 0); - int newval = context_return; -+#else -+ int newval = setjmp(*state); -+#endif - if (newval == 0) - { - // saved the state, now run the task. -+#ifdef HAVE_GETCONTEXT - context_return = val; - setcontext(&task.mystate); - return -1; -+#else -+ longjmp(task.mystate, val); -+#endif - } - else - { -@@ -317,16 +331,24 @@ int WvTaskMan::yield(int val) - (long)current_task->stacksize); - } - #endif -- -+ -+#ifdef HAVE_GETCONTEXT - context_return = 0; - assert(getcontext(¤t_task->mystate) == 0); - int newval = context_return; -+#else -+ int newval = setjmp(current_task->mystate); -+#endif - if (newval == 0) - { - // saved the task state; now yield to the toplevel. -+#ifdef HAVE_GETCONTEXT - context_return = val; - setcontext(&toplevel); - return -1; -+#else -+ longjmp(toplevel, val); -+#endif - } - else - { -@@ -340,9 +362,13 @@ int WvTaskMan::yield(int val) - - void WvTaskMan::get_stack(WvTask &task, size_t size) - { -+#ifdef HAVE_GETCONTEXT - context_return = 0; - assert(getcontext(&get_stack_return) == 0); - if (context_return == 0) -+#else -+ if (setjmp(get_stack_return) == 0) -+#endif - { - assert(magic_number == -WVTASK_MAGIC); - assert(task.magic_number == WVTASK_MAGIC); -@@ -358,6 +384,7 @@ void WvTaskMan::get_stack(WvTask &task, - static char *next_stack_addr = NULL; - #endif - -+#ifndef HAVE_GETCONTEXT - task.stack = mmap(next_stack_addr, task.stacksize, - PROT_READ | PROT_WRITE, - #ifndef MACOS -@@ -366,12 +393,17 @@ void WvTaskMan::get_stack(WvTask &task, - MAP_PRIVATE, - #endif - -1, 0); -+#endif // !HAVE_GETCONTEXT - } - - // initial setup - stack_target = &task; -+#ifdef HAVE_GETCONTEXT - context_return = size/1024 + (size%1024 > 0); - setcontext(&stackmaster_task); -+#else -+ longjmp(stackmaster_task, size/1024 + (size%1024 > 0)); -+#endif - } - else - { -@@ -408,9 +440,13 @@ void WvTaskMan::_stackmaster() - { - assert(magic_number == -WVTASK_MAGIC); - -+#ifdef HAVE_GETCONTEXT - context_return = 0; - assert(getcontext(&stackmaster_task) == 0); - val = context_return; -+#else -+ val = setjmp(stackmaster_task); -+#endif - if (val == 0) - { - assert(magic_number == -WVTASK_MAGIC); -@@ -418,8 +454,12 @@ void WvTaskMan::_stackmaster() - // just did setjmp; save stackmaster's current state (with - // all current stack allocations) and go back to get_stack - // (or the constructor, if that's what called us) -+#ifdef HAVE_GETCONTEXT - context_return = 1; - setcontext(&get_stack_return); -+#else -+ longjmp(get_stack_return, 1); -+#endif - } - else - { -@@ -462,7 +502,9 @@ void WvTaskMan::call_func(WvTask *task) - task->func(task->userdata); - Dprintf("WvTaskMan: returning from task #%d (%s)\n", - task->tid, (const char *)task->name); -+#ifdef HAVE_GETCONTEXT - context_return = 1; -+#endif - } - - -@@ -473,9 +515,13 @@ void WvTaskMan::do_task() - assert(task->magic_number == WVTASK_MAGIC); - - // back here from longjmp; someone wants stack space. -+#ifdef HAVE_GETCONTEXT - context_return = 0; - assert(getcontext(&task->mystate) == 0); - if (context_return == 0) -+#else -+ if (setjmp(task->mystate) == 0) -+#endif - { - // done the setjmp; that means the target task now has - // a working jmp_buf all set up. Leave space on the stack -@@ -510,6 +556,7 @@ void WvTaskMan::do_task() - } - else - { -+#ifdef HAVE_GETCONTEXT - assert(getcontext(&task->func_call) == 0); - task->func_call.uc_stack.ss_size = task->stacksize; - task->func_call.uc_stack.ss_sp = task->stack; -@@ -519,11 +566,19 @@ void WvTaskMan::do_task() - task->tid, (const char *)task->name); - makecontext(&task->func_call, - (void (*)(void))call_func, 1, task); -+#else -+ assert(setjmp(task->func_call) == 0); -+#endif - -+#ifdef HAVE_GETCONTEXT - context_return = 0; - assert(getcontext(&task->func_return) == 0); - if (context_return == 0) - setcontext(&task->func_call); -+#else -+ if (setjmp(task->func_return) == 0) -+ longjmp(task->func_call, 0); -+#endif - } - - // the task's function terminated. -@@ -544,8 +599,12 @@ const void *WvTaskMan::current_top_of_st - if (use_shared_stack() || current_task == NULL) - return __libc_stack_end; - else -+#ifdef HAVE_GETCONTEXT - return (const char *)current_task->stack + current_task->stacksize; - #else -+ return 0; -+#endif -+#else - return 0; - #endif - } diff --git a/bsp/buildroot/package/wvstreams/0002-fix-uClibc-compile-execinfo-backtrace.patch b/bsp/buildroot/package/wvstreams/0002-fix-uClibc-compile-execinfo-backtrace.patch deleted file mode 100644 index c6317da4..00000000 --- a/bsp/buildroot/package/wvstreams/0002-fix-uClibc-compile-execinfo-backtrace.patch +++ /dev/null @@ -1,31 +0,0 @@ -Fix wvstreams so that it builds with uClibc: we don't have execinfo.h, -so we can't do backtrace() stuff. - -Signed-off-by: Simon Dawson - -diff -Nurp a/utils/wvcrash.cc b/utils/wvcrash.cc ---- a/utils/wvcrash.cc 2008-12-17 12:24:20.000000000 +0000 -+++ b/utils/wvcrash.cc 2012-07-27 22:00:15.456502262 +0100 -@@ -28,7 +28,9 @@ - // FIXME: this file mostly only works in Linux - #ifdef __linux - --# include -+#ifdef HAVE_EXECINFO_H -+#include -+#endif - #include - - #ifdef __USE_GNU -@@ -267,9 +269,11 @@ static void wvcrash_real(int sig, int fd - } - } - -+#ifdef HAVE_EXECINFO_H - wr(fd, "\nBacktrace:\n"); - backtrace_symbols_fd(trace, - backtrace(trace, sizeof(trace)/sizeof(trace[0])), fd); -+#endif - - if (pid > 0) - { diff --git a/bsp/buildroot/package/wvstreams/0003-fix-uClibc-compile-misc.patch b/bsp/buildroot/package/wvstreams/0003-fix-uClibc-compile-misc.patch deleted file mode 100644 index 690a961c..00000000 --- a/bsp/buildroot/package/wvstreams/0003-fix-uClibc-compile-misc.patch +++ /dev/null @@ -1,16 +0,0 @@ -Fix wvstreams so that it builds with uClibc: const cast problem. - -Signed-off-by: Simon Dawson - -diff -Nurp a/crypto/wvx509.cc b/crypto/wvx509.cc ---- a/crypto/wvx509.cc 2008-10-23 21:23:49.000000000 +0100 -+++ b/crypto/wvx509.cc 2012-06-15 18:45:06.605899292 +0100 -@@ -1157,7 +1157,7 @@ WvString WvX509::get_extension(int nid) - - if (ext) - { -- X509V3_EXT_METHOD *method = X509V3_EXT_get(ext); -+ X509V3_EXT_METHOD *method = const_cast(X509V3_EXT_get(ext)); - if (!method) - { - WvDynBuf buf; diff --git a/bsp/buildroot/package/wvstreams/0004-build-fixes.patch b/bsp/buildroot/package/wvstreams/0004-build-fixes.patch deleted file mode 100644 index 21792d74..00000000 --- a/bsp/buildroot/package/wvstreams/0004-build-fixes.patch +++ /dev/null @@ -1,40 +0,0 @@ -Add missing includes for proper build on Linux/glibc - -The current wvstreams code doesn't build on Linux/glibc, with error -about chmod() not being available (for wvunixdgsocket.cc) or umask() -not being available (for wvatomicfile.cc). Those errors turn out to be -missing includes. Those includes were in fact already done, but -conditionally for MacOS. We make them unconditional (it probably -breaks other platforms, but since Buildroot is Linux only, we don't -care). - -Signed-off-by: Thomas Petazzoni - -Index: b/ipstreams/wvunixdgsocket.cc -=================================================================== ---- a/ipstreams/wvunixdgsocket.cc -+++ b/ipstreams/wvunixdgsocket.cc -@@ -1,8 +1,6 @@ - #include "wvunixdgsocket.h" --#ifdef MACOS - #include - #include --#endif - - WvUnixDGSocket::WvUnixDGSocket(WvStringParm filename, bool _server, int perms) - : socketfile(filename) -Index: b/streams/wvatomicfile.cc -=================================================================== ---- a/streams/wvatomicfile.cc -+++ b/streams/wvatomicfile.cc -@@ -10,10 +10,7 @@ - #include "wvatomicfile.h" - #include "wvfileutils.h" - #include "wvstrutils.h" -- --#ifdef MACOS - #include --#endif - - WvAtomicFile::WvAtomicFile(WvStringParm filename, int flags, mode_t create_mode) - : tmp_file(WvString::null) diff --git a/bsp/buildroot/package/wvstreams/0005-getuid.patch b/bsp/buildroot/package/wvstreams/0005-getuid.patch deleted file mode 100644 index 60150665..00000000 --- a/bsp/buildroot/package/wvstreams/0005-getuid.patch +++ /dev/null @@ -1,25 +0,0 @@ -[PATCH] wvuid.cc: getuid needs sys/types.h + unistd.h - -Otherwise the build fails with: - -utils/wvuid.cc: In function 'wvuid_t wvgetuid()': -utils/wvuid.cc:63:19: error: 'getuid' was not declared in this scope - -Signed-off-by: Peter Korsgaard ---- - utils/wvuid.cc | 2 ++ - 1 file changed, 2 insertions(+) - -Index: wvstreams-4.6.1/utils/wvuid.cc -=================================================================== ---- wvstreams-4.6.1.orig/utils/wvuid.cc -+++ wvstreams-4.6.1/utils/wvuid.cc -@@ -33,6 +33,8 @@ - - #else // not WIN32 - -+#include -+#include - - WvString wv_username_from_uid(wvuid_t uid) - { diff --git a/bsp/buildroot/package/wvstreams/Config.in b/bsp/buildroot/package/wvstreams/Config.in deleted file mode 100644 index 3d2d8f42..00000000 --- a/bsp/buildroot/package/wvstreams/Config.in +++ /dev/null @@ -1,17 +0,0 @@ -config BR2_PACKAGE_WVSTREAMS - bool "wvstreams" - depends on BR2_INSTALL_LIBSTDCPP - depends on !BR2_STATIC_LIBS - depends on BR2_USE_MMU # fork() - # musl not supported and no upstream activity since 2011. - depends on !BR2_TOOLCHAIN_USES_MUSL - select BR2_PACKAGE_OPENSSL - select BR2_PACKAGE_ZLIB - help - C++ Network Programming Library. - - http://wvstreams.googlecode.com/ - -comment "wvstreams needs a glibc or uClibc toolchain w/ C++, dynamic library" - depends on BR2_USE_MMU - depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL diff --git a/bsp/buildroot/package/wvstreams/wvstreams.hash b/bsp/buildroot/package/wvstreams/wvstreams.hash deleted file mode 100644 index 17cad6d3..00000000 --- a/bsp/buildroot/package/wvstreams/wvstreams.hash +++ /dev/null @@ -1,2 +0,0 @@ -# locally computed -sha256 8403f5fbf83aa9ac0c6ce15d97fd85607488152aa84e007b7d0621b8ebc07633 wvstreams-4.6.1.tar.gz diff --git a/bsp/buildroot/package/wvstreams/wvstreams.mk b/bsp/buildroot/package/wvstreams/wvstreams.mk deleted file mode 100644 index 4d344e28..00000000 --- a/bsp/buildroot/package/wvstreams/wvstreams.mk +++ /dev/null @@ -1,62 +0,0 @@ -################################################################################ -# -# wvstreams -# -################################################################################ - -WVSTREAMS_VERSION = 4.6.1 -WVSTREAMS_SITE = http://wvstreams.googlecode.com/files -WVSTREAMS_DEPENDENCIES = openssl zlib host-pkgconf -WVSTREAMS_INSTALL_STAGING = YES - -WVSTREAMS_LICENSE = LGPLv2+ -WVSTREAMS_LICENSE_FILES = LICENSE - -# N.B. parallel make fails -WVSTREAMS_MAKE = $(MAKE1) - -# Needed to work around problem with wvassert.h -WVSTREAMS_CONF_OPTS += CPPFLAGS=-DNDEBUG - -WVSTREAMS_CONF_OPTS += \ - --with-openssl \ - --with-zlib \ - --without-pam \ - --disable-warnings \ - --without-tcl - -# needed for openssl detection when statically linking (as ssl needs lz) -WVSTREAMS_CONF_ENV += LIBS=-lz - -ifneq ($(BR2_STATIC_LIBS),y) -WVSTREAMS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -fPIC" -endif - -# wvstreams uses argp.h which can be provided by the argp-standalone -# package -ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) -WVSTREAMS_DEPENDENCIES += argp-standalone -endif - -ifeq ($(BR2_PACKAGE_DBUS),y) -WVSTREAMS_DEPENDENCIES += dbus -WVSTREAMS_CONF_OPTS += --with-dbus -else -WVSTREAMS_CONF_OPTS += --without-dbus -endif - -ifeq ($(BR2_PACKAGE_QT),y) -WVSTREAMS_DEPENDENCIES += qt -WVSTREAMS_CONF_OPTS += --with-qt -else -WVSTREAMS_CONF_OPTS += --without-qt -endif - -ifeq ($(BR2_PACKAGE_VALGRIND),y) -WVSTREAMS_DEPENDENCIES += valgrind -WVSTREAMS_CONF_OPTS += --with-valgrind -else -WVSTREAMS_CONF_OPTS += --without-valgrind -endif - -$(eval $(autotools-package)) diff --git a/bsp/buildroot/package/x11r7/Config.in b/bsp/buildroot/package/x11r7/Config.in index 40aa80c9..c40a6438 100644 --- a/bsp/buildroot/package/x11r7/Config.in +++ b/bsp/buildroot/package/x11r7/Config.in @@ -35,6 +35,7 @@ if BR2_PACKAGE_XORG7 source package/x11r7/xlib_libXext/Config.in source package/x11r7/xlib_libXfixes/Config.in source package/x11r7/xlib_libXfont/Config.in + source package/x11r7/xlib_libXfont2/Config.in source package/x11r7/xlib_libXft/Config.in source package/x11r7/xlib_libXi/Config.in source package/x11r7/xlib_libXinerama/Config.in diff --git a/bsp/buildroot/package/x11r7/xapp_sessreg/0002-missing_path_wtmpx.patch b/bsp/buildroot/package/x11r7/xapp_sessreg/0002-missing_path_wtmpx.patch new file mode 100644 index 00000000..0be242c0 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xapp_sessreg/0002-missing_path_wtmpx.patch @@ -0,0 +1,24 @@ +Fix missing defines _PATH_WTMPX/_PATH_UTMPX in musl + +Downloaded from +https://cgit.gentoo.org/proj/musl.git/tree/x11-apps/sessreg/files/sessreg-1.1.0-missing_path_wtmpx.patch + +Signed-off-by: Bernd Kuhls + +diff -Naur sessreg-1.1.0.orig/sessreg.h sessreg-1.1.0/sessreg.h +--- sessreg-1.1.0.orig/sessreg.h 2015-01-20 05:00:27.000000000 +0000 ++++ sessreg-1.1.0/sessreg.h 2016-02-23 11:54:42.057000000 +0000 +@@ -103,6 +103,13 @@ + # define TTYS_FILE "/etc/ttys" + #endif + ++#ifndef _PATH_WTMPX ++# define _PATH_WTMPX "/var/log/wtmp" ++#endif ++#ifndef _PATH_UTMPX ++# define _PATH_UTMPX "/var/log/utmp" ++#endif ++ + #ifndef WTMPX_FILE + # define WTMPX_FILE _PATH_WTMPX + #endif diff --git a/bsp/buildroot/package/x11r7/xapp_xauth/xapp_xauth.hash b/bsp/buildroot/package/x11r7/xapp_xauth/xapp_xauth.hash index 922cecf6..f6987c1c 100644 --- a/bsp/buildroot/package/x11r7/xapp_xauth/xapp_xauth.hash +++ b/bsp/buildroot/package/x11r7/xapp_xauth/xapp_xauth.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2014-April/002414.html -sha256 56ce1523eb48b1f8a4f4244fe1c3d8e6af1a3b7d4b0e6063582421b0b68dc28f xauth-1.0.9.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002772.html +sha256 5afe42ce3cdf4f60520d1658d2b17face45c74050f39af45dccdc95e73fafc4d xauth-1.0.10.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xapp_xauth/xapp_xauth.mk b/bsp/buildroot/package/x11r7/xapp_xauth/xapp_xauth.mk index a2307f28..80ac6a42 100644 --- a/bsp/buildroot/package/x11r7/xapp_xauth/xapp_xauth.mk +++ b/bsp/buildroot/package/x11r7/xapp_xauth/xapp_xauth.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XAUTH_VERSION = 1.0.9 +XAPP_XAUTH_VERSION = 1.0.10 XAPP_XAUTH_SOURCE = xauth-$(XAPP_XAUTH_VERSION).tar.bz2 XAPP_XAUTH_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XAUTH_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.hash b/bsp/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.hash index a62d8cbb..364cdbe4 100644 --- a/bsp/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.hash +++ b/bsp/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2013-July/002272.html -sha256 e561959b6ee8b735a32c1050015cfd8c551ed162cabb6cb72e36ce72966855d1 xconsole-1.0.6.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002774.html +sha256 d1144882df207378381bc83927906559defbf7b83a01d52c50ad44234c5851e0 xconsole-1.0.7.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.mk b/bsp/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.mk index 971b1b32..52656de8 100644 --- a/bsp/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.mk +++ b/bsp/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XCONSOLE_VERSION = 1.0.6 +XAPP_XCONSOLE_VERSION = 1.0.7 XAPP_XCONSOLE_SOURCE = xconsole-$(XAPP_XCONSOLE_VERSION).tar.bz2 XAPP_XCONSOLE_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XCONSOLE_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xapp_xload/xapp_xload.mk b/bsp/buildroot/package/x11r7/xapp_xload/xapp_xload.mk index 1db0db57..364d247a 100644 --- a/bsp/buildroot/package/x11r7/xapp_xload/xapp_xload.mk +++ b/bsp/buildroot/package/x11r7/xapp_xload/xapp_xload.mk @@ -11,4 +11,9 @@ XAPP_XLOAD_LICENSE = MIT XAPP_XLOAD_LICENSE_FILES = COPYING XAPP_XLOAD_DEPENDENCIES = xlib_libXaw +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +# musl doesn't have rwhod.h, but xload can replace it with stubs +XAPP_XLOAD_CONF_OPTS += CFLAGS="$(TARGET_CFLAGS) -DRLOADSTUB" +endif + $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/x11r7/xcb-util/xcb-util.mk b/bsp/buildroot/package/x11r7/xcb-util/xcb-util.mk index 4416d807..7b913e2b 100644 --- a/bsp/buildroot/package/x11r7/xcb-util/xcb-util.mk +++ b/bsp/buildroot/package/x11r7/xcb-util/xcb-util.mk @@ -12,6 +12,6 @@ XCB_UTIL_SITE = http://xcb.freedesktop.org/dist XCB_UTIL_LICENSE = MIT XCB_UTIL_INSTALL_STAGING = YES -XCB_UTIL_DEPENDENCIES = host-gperf libxcb +XCB_UTIL_DEPENDENCIES = libxcb $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch b/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..b3422954 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,87 @@ +From 1ad5e1593556f767150c2ca75176453bee4771e6 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 22:00:10 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 4 ---- + configure.ac | 9 --------- + include/Makefile.am | 5 ++++- + xorg-evdev.pc.in | 10 ++++++++-- + 4 files changed, 12 insertions(+), 16 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 1cc3ea6..1ae042a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -18,10 +18,6 @@ + # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +- +-# Provide an sdk location that is writable by the evdev module +-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg' +- + SUBDIRS = src man include + MAINTAINERCLEANFILES = ChangeLog INSTALL + +diff --git a/configure.ac b/configure.ac +index e4887a3..4adfa43 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -66,15 +66,6 @@ AC_ARG_WITH(xorg-conf-dir, + [xorgconfdir="$prefix/share/X11/xorg.conf.d"]) + AC_SUBST(xorgconfdir) + +-# X Server SDK location is required to install evdev header files +-# This location is also relayed in the xorg-evdev.pc file +-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` +- +-# Workaround overriding sdkdir to be able to create a tarball when user has no +-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am +-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"]) +-AC_SUBST([sdkdir]) +- + DRIVER_NAME=evdev + AC_SUBST([DRIVER_NAME]) + +diff --git a/include/Makefile.am b/include/Makefile.am +index 0e3fc1b..afc96ed 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -1 +1,4 @@ +-sdk_HEADERS = evdev-properties.h ++# location formerly known as 'sdkdir': ++xorgincludedir = $(includedir)/xorg ++ ++xorginclude_HEADERS = evdev-properties.h +diff --git a/xorg-evdev.pc.in b/xorg-evdev.pc.in +index 20710a6..fcbf511 100644 +--- a/xorg-evdev.pc.in ++++ b/xorg-evdev.pc.in +@@ -1,6 +1,12 @@ +-sdkdir=@sdkdir@ ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++datarootdir=@datarootdir@ ++moduledir=@moduledir@ ++sysconfigdir=@sysconfigdir@ + + Name: xorg-evdev + Description: X.Org evdev input driver. + Version: @PACKAGE_VERSION@ +-Cflags: -I${sdkdir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash index 91937f26..bf9a2cd2 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash @@ -1,2 +1,2 @@ -# From https://lists.x.org/archives/xorg-announce/2016-June/002696.html -sha256 5aa21ba4be8df927e5676a99c7f4f0343abc089f5451b7e73e39536f29b332a2 xf86-input-evdev-2.10.3.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002767.html +sha256 9edaa6205baf6d2922cc4db3d8e54a7e7773b5f733b0ae90f6be7725f983b70d xf86-input-evdev-2.10.5.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk index c801323f..4933c42f 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk @@ -4,11 +4,13 @@ # ################################################################################ -XDRIVER_XF86_INPUT_EVDEV_VERSION = 2.10.3 +XDRIVER_XF86_INPUT_EVDEV_VERSION = 2.10.5 XDRIVER_XF86_INPUT_EVDEV_SOURCE = xf86-input-evdev-$(XDRIVER_XF86_INPUT_EVDEV_VERSION).tar.bz2 XDRIVER_XF86_INPUT_EVDEV_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_INPUT_EVDEV_LICENSE = MIT XDRIVER_XF86_INPUT_EVDEV_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_EVDEV_AUTORECONF = YES + XDRIVER_XF86_INPUT_EVDEV_DEPENDENCIES = \ host-pkgconf \ libevdev \ diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch b/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..a611f153 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,78 @@ +From 2826691dcd01f470d30dc8eb3bbd24a96cd3a93c Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 22:29:29 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 1 - + configure.ac | 9 --------- + include/Makefile.am | 5 ++++- + xorg-joystick.pc.in | 2 +- + 4 files changed, 5 insertions(+), 12 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 13946b8..c1567ae 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -18,7 +18,6 @@ + # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir=\$${includedir}/xorg + SUBDIRS = src man config include + MAINTAINERCLEANFILES = ChangeLog INSTALL + +diff --git a/configure.ac b/configure.ac +index b5834a5..44b9d27 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -66,15 +66,6 @@ AC_ARG_WITH(xorg-module-dir, + inputdir=${moduledir}/input + AC_SUBST(inputdir) + +-# Define a configure option for an alternate X Server SDK Headers +-# X Server SDK location is required to install joystick header files +-AC_ARG_WITH(sdkdir, +- AS_HELP_STRING([--with-sdkdir=], +- [Xorg X Server sdk headers (default is autodetected)]), +- [sdkdir="$withval"], +- [sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`]) +-AC_SUBST(sdkdir) +- + # Define a configure option to enable code debugging + AC_ARG_ENABLE(debug, AS_HELP_STRING([--disable-debug], + [Disable debugging code (default: enabled)]), +diff --git a/include/Makefile.am b/include/Makefile.am +index ed618c2..d656568 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -18,4 +18,7 @@ + # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-sdk_HEADERS = joystick-properties.h ++# Location formerly known as 'sdkdir' ++xorgincludedir = $(includedir)/xorg ++ ++xorginclude_HEADERS = joystick-properties.h +diff --git a/xorg-joystick.pc.in b/xorg-joystick.pc.in +index 76bb92f..a5972c7 100644 +--- a/xorg-joystick.pc.in ++++ b/xorg-joystick.pc.in +@@ -4,4 +4,4 @@ includedir=@includedir@ + Name: xorg-joystick + Description: X.Org joystick input driver. + Version: @PACKAGE_VERSION@ +-Cflags: -I${includedir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash index 5fac77e6..feec2d37 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2013-January/002136.html -sha1 61658b8d829fdaed6064c7c26232c3884d359187 xf86-input-joystick-1.6.2.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-November/002742.html +sha256 9e7669ecf0f23b8e5dc39d5397cf28296f692aa4c0e4255f5e02816612c18eab xf86-input-joystick-1.6.3.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk index 2696e2b7..5bc2a5ca 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk @@ -4,12 +4,13 @@ # ################################################################################ -XDRIVER_XF86_INPUT_JOYSTICK_VERSION = 1.6.2 +XDRIVER_XF86_INPUT_JOYSTICK_VERSION = 1.6.3 XDRIVER_XF86_INPUT_JOYSTICK_SOURCE = xf86-input-joystick-$(XDRIVER_XF86_INPUT_JOYSTICK_VERSION).tar.bz2 XDRIVER_XF86_INPUT_JOYSTICK_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_INPUT_JOYSTICK_LICENSE = MIT XDRIVER_XF86_INPUT_JOYSTICK_LICENSE_FILES = COPYING XDRIVER_XF86_INPUT_JOYSTICK_DEPENDENCIES = xserver_xorg-server xproto_inputproto xproto_randrproto xproto_xproto +XDRIVER_XF86_INPUT_JOYSTICK_AUTORECONF = YES define XDRIVER_XF86_INPUT_JOYSTICK_CONF $(INSTALL) -m 0644 -D \ diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash index 11fcc601..eccfa74d 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-April/002559.html -sha256 1ac8ff39bf9da7d2fc7fd6c24515726e8138340c0518ab8c606e008cf93ca211 xf86-input-keyboard-1.8.1.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-November/002739.html +sha256 f7c900f21752683402992b288d5a2826de7a6c0c0abac2aadd7e8a409e170388 xf86-input-keyboard-1.9.0.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk index eb2d5828..01a6859c 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_INPUT_KEYBOARD_VERSION = 1.8.1 +XDRIVER_XF86_INPUT_KEYBOARD_VERSION = 1.9.0 XDRIVER_XF86_INPUT_KEYBOARD_SOURCE = xf86-input-keyboard-$(XDRIVER_XF86_INPUT_KEYBOARD_VERSION).tar.bz2 XDRIVER_XF86_INPUT_KEYBOARD_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_INPUT_KEYBOARD_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch b/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..2f9784c2 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,78 @@ +From 1b2cf6e6c2640e08166af36eee775542a45325af Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 22:36:40 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 2 -- + configure.ac | 8 -------- + include/Makefile.am | 4 +++- + xorg-libinput.pc.in | 5 +++-- + 4 files changed, 6 insertions(+), 13 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index a447d61..7aa5523 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -19,8 +19,6 @@ + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg' +- + SUBDIRS = src include man test + MAINTAINERCLEANFILES = ChangeLog INSTALL + +diff --git a/configure.ac b/configure.ac +index 9894817..fe198cb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -63,14 +63,6 @@ AC_ARG_WITH(xorg-conf-dir, + [xorgconfdir='${prefix}/share/X11/xorg.conf.d']) + AC_SUBST(xorgconfdir) + +-# X Server SDK location is required to install header files +-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` +- +-# Workaround overriding sdkdir to be able to create a tarball when user has no +-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am +-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"]) +-AC_SUBST([sdkdir]) +- + DRIVER_NAME=libinput + AC_SUBST([DRIVER_NAME]) + +diff --git a/include/Makefile.am b/include/Makefile.am +index 0d52b9b..271ffac 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -1 +1,3 @@ +-sdk_HEADERS = libinput-properties.h ++# Location formerly known as 'sdkdir' ++xorgincludedir = $(includedir)/xorg ++xorginclude_HEADERS = libinput-properties.h +diff --git a/xorg-libinput.pc.in b/xorg-libinput.pc.in +index ff98189..9c0f506 100644 +--- a/xorg-libinput.pc.in ++++ b/xorg-libinput.pc.in +@@ -1,6 +1,7 @@ +-sdkdir=@sdkdir@ ++prefix=@prefix@ ++includedir=@includedir@ + + Name: xorg-libinput + Description: X.Org libinput input driver. + Version: @PACKAGE_VERSION@ +-Cflags: -I${sdkdir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash index df3794fa..0d352949 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash @@ -1,2 +1,2 @@ -# From https://lists.x.org/archives/xorg-announce/2016-April/002687.html -sha256 6c5d30dc7c8b8ae34261340e1dc9cbb8ef435078e084b8ef507527a8a21af477 xf86-input-libinput-0.19.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-February/002776.html +sha256 ddcb07350aed59b2996a92a1b4ff64d1c0b0c86a3f0ddca15b2b1c8c8bb13628 xf86-input-libinput-0.24.0.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk index d49f4d1c..e293b4e8 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk @@ -4,11 +4,12 @@ # ################################################################################ -XDRIVER_XF86_INPUT_LIBINPUT_VERSION = 0.19.0 +XDRIVER_XF86_INPUT_LIBINPUT_VERSION = 0.24.0 XDRIVER_XF86_INPUT_LIBINPUT_SOURCE = xf86-input-libinput-$(XDRIVER_XF86_INPUT_LIBINPUT_VERSION).tar.bz2 XDRIVER_XF86_INPUT_LIBINPUT_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_INPUT_LIBINPUT_LICENSE = MIT XDRIVER_XF86_INPUT_LIBINPUT_LICENSE_FILES = COPYING XDRIVER_XF86_INPUT_LIBINPUT_DEPENDENCIES = libinput xserver_xorg-server xproto_inputproto xproto_xproto +XDRIVER_XF86_INPUT_LIBINPUT_AUTORECONF = YES $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch b/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..d5f97f98 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,81 @@ +From aef3d9bca4d77db833f71d50b1c84b16c69d7deb Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 22:53:21 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 3 --- + configure.ac | 10 ---------- + include/Makefile.am | 4 +++- + xorg-mouse.pc.in | 3 +-- + 4 files changed, 4 insertions(+), 16 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 7142485..efe66cb 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -34,9 +34,6 @@ ChangeLog: + + dist-hook: ChangeLog INSTALL + +-# Provide an sdk location that is writable by this module +-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg' +- + if LINT + # Check source code with tools like lint & sparse + lint: +diff --git a/configure.ac b/configure.ac +index 15d9047..515681d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -60,16 +60,6 @@ AC_ARG_WITH(xorg-module-dir, + inputdir=${moduledir}/input + AC_SUBST(inputdir) + +-# X Server SDK location is required to install xf86-mouse-properties.h +-# This location is also relayed in the xorg-mouse.pc file +-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` +- +-# Workaround overriding sdkdir to be able to create a tarball when user has no +-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am +-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"]) +-AC_SUBST([sdkdir]) +- +- + # Work out which OS mouse driver we need to build + case $host_os in + linux*) +diff --git a/include/Makefile.am b/include/Makefile.am +index 27ce0fb..2b85e4e 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -1 +1,3 @@ +-sdk_HEADERS = xf86-mouse-properties.h ++# Location formerly known as 'sdkdir' ++xorgincludedir = $(includedir)/xorg ++xorginclude_HEADERS = xf86-mouse-properties.h +diff --git a/xorg-mouse.pc.in b/xorg-mouse.pc.in +index 57df596..8355e61 100644 +--- a/xorg-mouse.pc.in ++++ b/xorg-mouse.pc.in +@@ -1,6 +1,7 @@ prefix=@prefix@ +-sdkdir=@sdkdir@ ++prefix=@prefix@ ++includedir=@includedir@ + + Name: xorg-mouse + Description: X.Org mouse input driver for non-evdev OS'es + Version: @PACKAGE_VERSION@ +-Cflags: -I${sdkdir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash index 5a62d131..caba427b 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2014-August/002471.html -sha256 3485d375779c08406f0789feedde15933dc703158a086ddac638598f479fc5ce xf86-input-mouse-1.9.1.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-November/002740.html +sha256 f425d5b05c6ab412a27e0a1106bb83f9e2662b307210abbe48270892387f4b2f xf86-input-mouse-1.9.2.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk index 0e19467d..5bcbeb70 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk @@ -4,11 +4,12 @@ # ################################################################################ -XDRIVER_XF86_INPUT_MOUSE_VERSION = 1.9.1 +XDRIVER_XF86_INPUT_MOUSE_VERSION = 1.9.2 XDRIVER_XF86_INPUT_MOUSE_SOURCE = xf86-input-mouse-$(XDRIVER_XF86_INPUT_MOUSE_VERSION).tar.bz2 XDRIVER_XF86_INPUT_MOUSE_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_INPUT_MOUSE_LICENSE = MIT XDRIVER_XF86_INPUT_MOUSE_LICENSE_FILES = COPYING XDRIVER_XF86_INPUT_MOUSE_DEPENDENCIES = xserver_xorg-server xproto_inputproto xproto_randrproto xproto_xproto +XDRIVER_XF86_INPUT_MOUSE_AUTORECONF = YES $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch b/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 00000000..62950b06 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,88 @@ +From 231a35e99fee8aba23f18cce21dfb5fa8bef0c36 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 23:07:33 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 1 - + configure.ac | 9 --------- + include/Makefile.am | 4 +++- + xorg-synaptics.pc.in | 5 +++-- + 4 files changed, 6 insertions(+), 13 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 678124c..c48c5c8 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -21,7 +21,6 @@ + # During distcheck, system locations (as provided by pkg-config) may + # not be writable; provide instead relative locations. + DISTCHECK_CONFIGURE_FLAGS = \ +- --with-sdkdir='$${includedir}/xorg' \ + --with-xorg-conf-dir='$${datadir}/X11/xorg.conf.d' + + SUBDIRS = include src man tools conf +diff --git a/configure.ac b/configure.ac +index 970dd5f..574353b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -55,11 +55,6 @@ XORG_DRIVER_CHECK_EXT(RANDR, randrproto) + # Obtain compiler/linker options for the Synaptics driver dependencies + PKG_CHECK_MODULES(XORG, [inputproto >= 2.1.99.3] [xorg-server >= 1.12] xproto inputproto $REQUIRED_MODULES) + +-# X Server SDK location is required to install Synaptics header files +-# This location is also relayed in the xorg-synaptics.pc file +-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` +-AC_SUBST([sdkdir]) +- + # ----------------------------------------------------------------------------- + # Configuration options + # ----------------------------------------------------------------------------- +@@ -154,10 +149,6 @@ if test "x$have_libxtst" = "xyes" ; then + fi + # ----------------------------------------------------------------------------- + +-# Workaround overriding sdkdir to be able to create a tarball when user has no +-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am +-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"]) +- + AC_CONFIG_FILES([Makefile + src/Makefile + man/Makefile +diff --git a/include/Makefile.am b/include/Makefile.am +index 8234020..565868b 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -18,4 +18,6 @@ + # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-sdk_HEADERS = synaptics-properties.h ++# Location formerly known as 'sdkdir' ++xorgincludedir = $(includedir)/xorg ++xorginclude_HEADERS = synaptics-properties.h +diff --git a/xorg-synaptics.pc.in b/xorg-synaptics.pc.in +index 159cfbf..68e0fbe 100644 +--- a/xorg-synaptics.pc.in ++++ b/xorg-synaptics.pc.in +@@ -1,6 +1,7 @@ +-sdkdir=@sdkdir@ ++prefix=@prefix@ ++includedir=@includedir@ + + Name: synaptics + Description: X.Org synaptics input driver. + Version: @PACKAGE_VERSION@ +-Cflags: -I${sdkdir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash index 3cb07580..2c31600b 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-November/002652.html -sha256 d39f100c74f3673778b53f17bab7690161925e25dd998a15dd8cc69b52e83f01 xf86-input-synaptics-1.8.3.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-November/002744.html +sha256 afba3289d7a40217a19d90db98ce181772f9ca6d77e1898727b0afcf02073b5a xf86-input-synaptics-1.9.0.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk index b6ade4c8..6bd9cc49 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk @@ -4,11 +4,12 @@ # ################################################################################ -XDRIVER_XF86_INPUT_SYNAPTICS_VERSION = 1.8.3 +XDRIVER_XF86_INPUT_SYNAPTICS_VERSION = 1.9.0 XDRIVER_XF86_INPUT_SYNAPTICS_SOURCE = xf86-input-synaptics-$(XDRIVER_XF86_INPUT_SYNAPTICS_VERSION).tar.bz2 XDRIVER_XF86_INPUT_SYNAPTICS_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_INPUT_SYNAPTICS_LICENSE = MIT XDRIVER_XF86_INPUT_SYNAPTICS_LICENSE_FILES = COPYING XDRIVER_XF86_INPUT_SYNAPTICS_DEPENDENCIES = libevdev xserver_xorg-server xproto_inputproto xproto_randrproto xproto_xproto mtdev +XDRIVER_XF86_INPUT_SYNAPTICS_AUTORECONF = YES $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash index 6754fb5a..32ff1646 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash @@ -1,2 +1,2 @@ -# From https://lists.x.org/archives/xorg-announce/2016-April/002686.html -sha256 69f5d0ded9f4d5ce529099b6b581268e8f4dcff5608f1441d4ebc110ebc57931 xf86-video-amdgpu-1.1.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-November/002741.html +sha256 275b1aac5f127f55ba3d7480a1df89eace1d02650e24e46908067fc875e76c8f xf86-video-amdgpu-1.2.0.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk index 45177b29..d858e140 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_AMDGPU_VERSION = 1.1.0 +XDRIVER_XF86_VIDEO_AMDGPU_VERSION = 1.2.0 XDRIVER_XF86_VIDEO_AMDGPU_SOURCE = xf86-video-amdgpu-$(XDRIVER_XF86_VIDEO_AMDGPU_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_AMDGPU_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_AMDGPU_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash index 6eb3508c..fe5ae0ea 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash @@ -1,2 +1,2 @@ -# From https://lists.x.org/archives/xorg-announce/2016-April/002684.html -sha256 844d1c577b145c90dc8ef027678f0c27f554363f782cd696a3aea26415b2c1c3 xf86-video-ati-7.7.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-November/002738.html +sha256 401f5de772928f3dc4ce43a885adb0a47a2f61aa4a9e45d2ab3d184136a9d6fa xf86-video-ati-7.8.0.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk index 29a0d2f5..ea701672 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_ATI_VERSION = 7.7.0 +XDRIVER_XF86_VIDEO_ATI_VERSION = 7.8.0 XDRIVER_XF86_VIDEO_ATI_SOURCE = xf86-video-ati-$(XDRIVER_XF86_VIDEO_ATI_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_ATI_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_ATI_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash index 31cba2cb..f26ddd4b 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2013-September/002318.html -sha256 56f84fcbc515685529ad8e10bca1072731d9c096b97c5d35ddc95cd589b98680 xf86-video-dummy-0.3.7.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-December/002751.html +sha256 3712bb869307233491e4c570732d6073c0dc3d99adfdb9977396a3fdf84e95b9 xf86-video-dummy-0.3.8.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk index 58d9925f..fff1495e 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_DUMMY_VERSION = 0.3.7 +XDRIVER_XF86_VIDEO_DUMMY_VERSION = 0.3.8 XDRIVER_XF86_VIDEO_DUMMY_SOURCE = xf86-video-dummy-$(XDRIVER_XF86_VIDEO_DUMMY_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_DUMMY_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_DUMMY_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash index b05983fd..8c567cbb 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2016-February/002673.html -sha256 d6ece9a862a68be3cdf86a87e0e1ba5e199168b8d075129646638f53649ba9e8 xf86-video-geode-2.11.18.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-December/002750.html +sha256 c6694c21ee3d9560f6e925925ef1d3818b1988e899b6a0592dbae597c87ac97e xf86-video-geode-2.11.19.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk index b882f1f8..9138abdb 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_GEODE_VERSION = 2.11.18 +XDRIVER_XF86_VIDEO_GEODE_VERSION = 2.11.19 XDRIVER_XF86_VIDEO_GEODE_SOURCE = xf86-video-geode-$(XDRIVER_XF86_VIDEO_GEODE_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_GEODE_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_GEODE_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/0001-mbstring.patch b/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/0001-mbstring.patch deleted file mode 100644 index 635600ab..00000000 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/0001-mbstring.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 073d5b0b392781bf4a6aa7f9e2dbe2ae51caed2c Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Tue, 25 Sep 2012 12:54:38 +0000 -Subject: Remove mibstore.h - -Signed-off-by: Adam Jackson ---- -Fetch from: -http://cgit.freedesktop.org/xorg/driver/xf86-video-glint/commit/?id=073d5b0b392781bf4a6aa7f9e2dbe2ae51caed2c - -Signed-off-by: Bernd Kuhls - -diff --git a/src/glint_driver.c b/src/glint_driver.c -index b6d20a9..aa78516 100644 ---- a/src/glint_driver.c -+++ b/src/glint_driver.c -@@ -52,8 +52,6 @@ - #include "compiler.h" - #include "mipointer.h" - --#include "mibstore.h" -- - #include "pm3_regs.h" - #include "glint_regs.h" - #include "IBM.h" -@@ -2904,7 +2902,6 @@ GLINTScreenInit(SCREEN_INIT_ARGS_DECL) - } - } - -- miInitializeBackingStore(pScreen); - xf86SetBackingStore(pScreen); - xf86SetSilkenMouse(pScreen); - --- -cgit v0.9.0.2-2-gbebe diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.hash index ad3fbaa7..f4e42bf4 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2012-July/002011.html -sha256 657f883bb3a4e4278399eba73840862c3642706ae8b0a4798ec97a31b3524221 xf86-video-glint-1.2.8.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002759.html +sha256 852833ab2ea9ce519195dfd061a6c7aa5945a093cdc19546d1e9e69df7d577d2 xf86-video-glint-1.2.9.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.mk index 76c3da1c..52bc567e 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.mk @@ -4,12 +4,11 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_GLINT_VERSION = 1.2.8 +XDRIVER_XF86_VIDEO_GLINT_VERSION = 1.2.9 XDRIVER_XF86_VIDEO_GLINT_SOURCE = xf86-video-glint-$(XDRIVER_XF86_VIDEO_GLINT_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_GLINT_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_GLINT_LICENSE = MIT XDRIVER_XF86_VIDEO_GLINT_LICENSE_FILES = COPYING -XDRIVER_XF86_VIDEO_GLINT_AUTORECONF = YES XDRIVER_XF86_VIDEO_GLINT_DEPENDENCIES = xserver_xorg-server libdrm xproto_fontsproto xproto_glproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xf86dgaproto xproto_xf86driproto xproto_xproto $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash index 2cdf2d0b..7d7da84e 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash @@ -1 +1 @@ -sha256 ddb6de9e00ce0b22f6c905eaf6694424413eade53ef6cd3b36e20ac99dcc0e0f xserver-xorg-video-imx-viv-5.0.11.p8.4.tar.gz +sha256 3eed38193e31bb5ba8d2c817bd9b4f6e2fe7540d2cab36de9098cb4f11946a9f xserver-xorg-video-imx-viv-5.0.11.p8.6.tar.gz diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk index 9ce08ef5..2a3e9974 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = 5.0.11.p8.4 +XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = 5.0.11.p8.6 XDRIVER_XF86_VIDEO_IMX_VIV_SITE = $(FREESCALE_IMX_SITE) XDRIVER_XF86_VIDEO_IMX_VIV_SOURCE = xserver-xorg-video-imx-viv-$(XDRIVER_XF86_VIDEO_IMX_VIV_VERSION).tar.gz XDRIVER_XF86_VIDEO_IMX_VIV_DEPENDENCIES = imx-gpu-viv xserver_xorg-server \ diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk index bfe05270..29228bbf 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_INTEL_VERSION = 6988b873b041130d88dd0aae70c10f86550ee2b3 +XDRIVER_XF86_VIDEO_INTEL_VERSION = 9ac7a3370ab265d4cbdbbf3dc588af88c37048e1 XDRIVER_XF86_VIDEO_INTEL_SITE = git://anongit.freedesktop.org/xorg/driver/xf86-video-intel XDRIVER_XF86_VIDEO_INTEL_LICENSE = MIT XDRIVER_XF86_VIDEO_INTEL_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash index 081577d4..0187e6fb 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-February/002533.html -sha256 48c6690b6751c76f53de64f8dbeaa9d6c62dbcfe890c768fd87167951247d44f xf86-video-mga-1.6.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002765.html +sha256 b663cd8e6364f7c4e2637b9fcab9861d0e3971518c73b00d213f6545a1289422 xf86-video-mga-1.6.5.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk index 771ec18c..065a68ea 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_MGA_VERSION = 1.6.4 +XDRIVER_XF86_VIDEO_MGA_VERSION = 1.6.5 XDRIVER_XF86_VIDEO_MGA_SOURCE = xf86-video-mga-$(XDRIVER_XF86_VIDEO_MGA_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_MGA_SITE = http://xorg.freedesktop.org/archive/individual/driver XDRIVER_XF86_VIDEO_MGA_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash index 9633641c..cfba3a00 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash @@ -1,2 +1,4 @@ -# From http://lists.x.org/archives/xorg-announce/2015-December/002662.html -sha256 0ea057ad7fc31caba2d4e46c7e418fe2b3c762b04fb8d382f53383397fd8391e xf86-video-nouveau-1.0.12.tar.bz2 +# Locally computed +sha256 6d9242ba139c3df7afefffb455573b52f4427920b978161c00483c64a6da47cb xf86-video-nouveau-1.0.13.tar.bz2 +# From http://www.linuxfromscratch.org/blfs/view/svn/x/x7driver.html#xorg-nouveau-driver +md5 2d7b2917ef18c6e97a6f3817c3e9387b xf86-video-nouveau-1.0.13.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk index af84e796..70a7d879 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_NOUVEAU_VERSION = 1.0.12 +XDRIVER_XF86_VIDEO_NOUVEAU_VERSION = 1.0.13 XDRIVER_XF86_VIDEO_NOUVEAU_SOURCE = xf86-video-nouveau-$(XDRIVER_XF86_VIDEO_NOUVEAU_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_NOUVEAU_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_NOUVEAU_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/0001-mibstore.patch b/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/0001-mibstore.patch deleted file mode 100644 index e71418bc..00000000 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/0001-mibstore.patch +++ /dev/null @@ -1,86 +0,0 @@ -From fc78fe98222b0204b8a2872a529763d6fe5048da Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Tue, 25 Sep 2012 12:54:49 +0000 -Subject: Remove mibstore.h - -Signed-off-by: Adam Jackson ---- -Fetch from: -http://cgit.freedesktop.org/xorg/driver/xf86-video-nv/commit/?id=fc78fe98222b0204b8a2872a529763d6fe5048da - -Signed-off-by: Bernd Kuhls - -diff --git a/src/g80_driver.c b/src/g80_driver.c -index cc4e197..719b96c 100644 ---- a/src/g80_driver.c -+++ b/src/g80_driver.c -@@ -34,7 +34,6 @@ - #include - #endif - #include --#include - #include - #include - #include -@@ -833,7 +832,6 @@ G80ScreenInit(SCREEN_INIT_ARGS_DECL) - } - } - -- miInitializeBackingStore(pScreen); - xf86SetBackingStore(pScreen); - xf86SetSilkenMouse(pScreen); - -diff --git a/src/nv_driver.c b/src/nv_driver.c -index 6dad6e5..8f35334 100644 ---- a/src/nv_driver.c -+++ b/src/nv_driver.c -@@ -2550,7 +2550,6 @@ NVScreenInit(SCREEN_INIT_ARGS_DECL) - if (!pNv->NoAccel) - NVAccelInit(pScreen); - -- miInitializeBackingStore(pScreen); - xf86SetBackingStore(pScreen); - xf86SetSilkenMouse(pScreen); - -diff --git a/src/nv_include.h b/src/nv_include.h -index fb190bf..f174eef 100644 ---- a/src/nv_include.h -+++ b/src/nv_include.h -@@ -24,9 +24,6 @@ - /* All drivers initialising the SW cursor need this */ - #include "mipointer.h" - --/* All drivers implementing backing store need this */ --#include "mibstore.h" -- - #include "micmap.h" - - #include "xf86DDC.h" -diff --git a/src/riva_driver.c b/src/riva_driver.c -index e0667ef..759501e 100644 ---- a/src/riva_driver.c -+++ b/src/riva_driver.c -@@ -1168,7 +1168,6 @@ RivaScreenInit(SCREEN_INIT_ARGS_DECL) - if (!pRiva->NoAccel) - RivaAccelInit(pScreen); - -- miInitializeBackingStore(pScreen); - xf86SetBackingStore(pScreen); - xf86SetSilkenMouse(pScreen); - -diff --git a/src/riva_include.h b/src/riva_include.h -index f2c5302..c7aeef7 100644 ---- a/src/riva_include.h -+++ b/src/riva_include.h -@@ -22,9 +22,6 @@ - /* All drivers initialising the SW cursor need this */ - #include "mipointer.h" - --/* All drivers implementing backing store need this */ --#include "mibstore.h" -- - #include "micmap.h" - - #include "xf86DDC.h" --- -cgit v0.9.0.2-2-gbebe diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash index 8083ea29..fe91307a 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2012-July/002030.html -sha256 8395f65501f16f9cbaae8f598b02c6f18e78f4d3d30a08cb8d547dc2e00c10bf xf86-video-nv-2.1.20.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002761.html +sha256 1f98649e6ff0e8214b9d5dcac661f1d004be8e73823d8247b9c7025fd81db32d xf86-video-nv-2.1.21.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk index 655bee92..430ce4a1 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_NV_VERSION = 2.1.20 +XDRIVER_XF86_VIDEO_NV_VERSION = 2.1.21 XDRIVER_XF86_VIDEO_NV_SOURCE = xf86-video-nv-$(XDRIVER_XF86_VIDEO_NV_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_NV_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_NV_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/Config.in b/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/Config.in index e2bb6c49..c970b9e2 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/Config.in +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_XDRIVER_XF86_VIDEO_OPENCHROME bool "xf86-video-openchrome" - depends on BR2_PACKAGE_MESA3D + depends on BR2_PACKAGE_MESA3D_DRI_DRIVER select BR2_PACKAGE_LIBDRM select BR2_PACKAGE_XLIB_LIBX11 select BR2_PACKAGE_XLIB_LIBXCOMPOSITE @@ -17,5 +17,5 @@ config BR2_PACKAGE_XDRIVER_XF86_VIDEO_OPENCHROME https://www.freedesktop.org/wiki/Openchrome/ -comment "xf86-video-openchrome needs mesa3d" - depends on !BR2_PACKAGE_MESA3D +comment "xf86-video-openchrome needs a DRI driver from mesa3d" + depends on !BR2_PACKAGE_MESA3D_DRI_DRIVER diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash index b3aef580..2d29fae3 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash @@ -1,2 +1,2 @@ -# Locally computed -sha256 73e7966d01d0d644d3b9204e8bfc106cb99069c58e981626e7352f2693e3e927 xf86-video-openchrome-0.4.0.tar.bz2 +# From https://lists.freedesktop.org/archives/openchrome-devel/2016-July/002890.html +sha1 9c7ad349de6dd350252ccda8da56fa1e2a6afa32 xf86-video-openchrome-0.5.0.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk index 83c12b20..9ab032b6 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_OPENCHROME_VERSION = 0.4.0 +XDRIVER_XF86_VIDEO_OPENCHROME_VERSION = 0.5.0 XDRIVER_XF86_VIDEO_OPENCHROME_SOURCE = xf86-video-openchrome-$(XDRIVER_XF86_VIDEO_OPENCHROME_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_OPENCHROME_SITE = http://xorg.freedesktop.org/archive/individual/driver XDRIVER_XF86_VIDEO_OPENCHROME_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/Config.in b/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/Config.in index 5f05f687..967ecaf5 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/Config.in +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/Config.in @@ -4,6 +4,7 @@ config BR2_PACKAGE_XDRIVER_XF86_VIDEO_QXL select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_HAS_UDEV # for KMS select BR2_PACKAGE_LIBPCIACCESS select BR2_PACKAGE_SPICE_PROTOCOL + select BR2_PACKAGE_XLIB_LIBXFONT2 if !BR2_PACKAGE_XLIB_LIBXFONT select BR2_PACKAGE_XPROTO_FONTSPROTO select BR2_PACKAGE_XPROTO_XPROTO help diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash index 1648c29c..7a098210 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash @@ -1,2 +1,2 @@ -# From http://lists.freedesktop.org/archives/spice-devel/2015-April/019356.html -sha256 e57ad22f0b1daf8979e722be0cc38d351bfcc2e41568edc566d2bade5a621105 xf86-video-qxl-0.1.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-December/002753.html +sha256 b18682e04503c6326f7bf7190f3ee50a3d4d69758a2a3cc9af102a6b3f114c92 xf86-video-qxl-0.1.5.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk index ddc4191a..f410f8e9 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_QXL_VERSION = 0.1.4 +XDRIVER_XF86_VIDEO_QXL_VERSION = 0.1.5 XDRIVER_XF86_VIDEO_QXL_SOURCE = xf86-video-qxl-$(XDRIVER_XF86_VIDEO_QXL_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_QXL_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_QXL_LICENSE = MIT @@ -29,4 +29,10 @@ else XDRIVER_XF86_VIDEO_QXL_CONF_OPTS += --disable-kms endif +ifeq ($(BR2_PACKAGE_XLIB_LIBXFONT2),y) +XDRIVER_XF86_VIDEO_QXL_DEPENDENCIES += xlib_libXfont2 +else +XDRIVER_XF86_VIDEO_QXL_DEPENDENCIES += xlib_libXfont +endif + $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash index f5c92ab1..b6d8bd81 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2016-January/002670.html -sha256 5ebfef49831c9b12f7b7011c8314010596ac2ab0d5b9b7cfd17908e93d7de4ea xf86-video-r128-6.10.1.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002764.html +sha256 84da21517f3af7617fdf341e84ccb22444d6cdab1647e4808fa631528b9a77de xf86-video-r128-6.10.2.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk index 5833efcf..344b4841 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_R128_VERSION = 6.10.1 +XDRIVER_XF86_VIDEO_R128_VERSION = 6.10.2 XDRIVER_XF86_VIDEO_R128_SOURCE = xf86-video-r128-$(XDRIVER_XF86_VIDEO_R128_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_R128_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_R128_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash index 25afb131..4f155359 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-May/002603.html -sha256 fdcea4a86532bceb50095eaf0fe2f38bbfa160e98463b815f4b549eb9985fa63 xf86-video-savage-2.3.8.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002760.html +sha256 2c93c4db1f71e725dda0caee5821253129d4b52d7aa0fd720593e7769bceec86 xf86-video-savage-2.3.9.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk index 95bca7e3..ae1dea34 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_SAVAGE_VERSION = 2.3.8 +XDRIVER_XF86_VIDEO_SAVAGE_VERSION = 2.3.9 XDRIVER_XF86_VIDEO_SAVAGE_SOURCE = xf86-video-savage-$(XDRIVER_XF86_VIDEO_SAVAGE_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_SAVAGE_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_SAVAGE_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash index 42f39d24..819698c6 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-May/002604.html -sha256 e9d449a9fd9e58b4e018447b6c64005f7874cffb1777e513ac9fc41a86071beb xf86-video-siliconmotion-1.7.8.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002763.html +sha256 d0f3c691e71108d27a061beb62bf78b36ec35bd755905692734dd68cfb3359bc xf86-video-siliconmotion-1.7.9.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk index f8ea403c..53b19f9f 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_SILICONMOTION_VERSION = 1.7.8 +XDRIVER_XF86_VIDEO_SILICONMOTION_VERSION = 1.7.9 XDRIVER_XF86_VIDEO_SILICONMOTION_SOURCE = xf86-video-siliconmotion-$(XDRIVER_XF86_VIDEO_SILICONMOTION_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_SILICONMOTION_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_SILICONMOTION_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/0007-xi.patch b/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/0003-xi.patch similarity index 100% rename from bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/0007-xi.patch rename to bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/0003-xi.patch diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash index dfc78143..98ea8b1e 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-August/002628.html -sha256 c8f3f2577f69334dfcc4bf96477dce45161170555f3abdfa105599e61bc7d3fe xf86-video-sis-0.10.8.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002756.html +sha256 5226b7407c601afa32d6cbf155f9182da95d92cdc89c1f83471e1927e552c10d xf86-video-sis-0.10.9.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk index b1fce837..833246e3 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_SIS_VERSION = 0.10.8 +XDRIVER_XF86_VIDEO_SIS_VERSION = 0.10.9 XDRIVER_XF86_VIDEO_SIS_SOURCE = xf86-video-sis-$(XDRIVER_XF86_VIDEO_SIS_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_SIS_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_SIS_LICENSE = MIT @@ -12,4 +12,8 @@ XDRIVER_XF86_VIDEO_SIS_LICENSE_FILES = COPYING XDRIVER_XF86_VIDEO_SIS_AUTORECONF = YES XDRIVER_XF86_VIDEO_SIS_DEPENDENCIES = xserver_xorg-server libdrm xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xf86dgaproto xproto_xf86driproto xproto_xineramaproto xproto_xproto +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) +XDRIVER_XF86_VIDEO_SIS_CONF_OPTS += --disable-dri +endif + $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash index 1cdef2ab..84885596 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-February/002536.html -sha256 3a8a88867c40ad61f1c9a09ffd7ac64102fa821685855d50ce66c7603dcc6d37 xf86-video-tdfx-1.4.6.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002755.html +sha256 4cf48ee14ead52b23493c3dce5032496fd68bf1d000170bb138730497e212a42 xf86-video-tdfx-1.4.7.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk index 942dcf3d..471e6cf4 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_TDFX_VERSION = 1.4.6 +XDRIVER_XF86_VIDEO_TDFX_VERSION = 1.4.7 XDRIVER_XF86_VIDEO_TDFX_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_TDFX_SOURCE = xf86-video-tdfx-$(XDRIVER_XF86_VIDEO_TDFX_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_TDFX_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash index e92c948a..04a559ac 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-March/002558.html -sha256 ecd518de627a0d49e17c158bfc72ab657386c6907c91ef89fa09332558e413ae xf86-video-trident-1.3.7.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002762.html +sha256 9e5119d974c3e2221994542d35e3a0b3426a441869ddd6dd08a84f324856ac3f xf86-video-trident-1.3.8.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk index a136e877..727744c5 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_TRIDENT_VERSION = 1.3.7 +XDRIVER_XF86_VIDEO_TRIDENT_VERSION = 1.3.8 XDRIVER_XF86_VIDEO_TRIDENT_SOURCE = xf86-video-trident-$(XDRIVER_XF86_VIDEO_TRIDENT_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_TRIDENT_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_TRIDENT_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash b/bsp/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash index 10d31d02..8d948a7d 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-January/002521.html -sha256 3c1d244e4b1b77e92126957965cdc9fb82de4c215c0706a3a8aaff6939e4a0cc xf86-video-vmware-13.1.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-November/002743.html +sha256 e2f7f7101fba7f53b268e7a25908babbf155b3984fb5268b3d244eb6c11bf62b xf86-video-vmware-13.2.1.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk b/bsp/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk index ea4dd482..ef262f89 100644 --- a/bsp/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk +++ b/bsp/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_VMWARE_VERSION = 13.1.0 +XDRIVER_XF86_VIDEO_VMWARE_VERSION = 13.2.1 XDRIVER_XF86_VIDEO_VMWARE_SOURCE = xf86-video-vmware-$(XDRIVER_XF86_VIDEO_VMWARE_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_VMWARE_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_VMWARE_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash b/bsp/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash index 7c2b64d1..104a5aba 100644 --- a/bsp/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash +++ b/bsp/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash @@ -1,2 +1,2 @@ -# From https://lists.x.org/archives/xorg-announce/2016-June/002698.html -sha256 c41d917d6c8a59feb7ccbda51c40a6ada824fdd1e9684b52dd48c9530617ddd0 xkeyboard-config-2.18.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-February/002775.html +sha256 d1bfc72553c4e3ef1cd6f13eec0488cf940498b612ab8a0b362e7090c94bc134 xkeyboard-config-2.20.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk b/bsp/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk index e96d1d73..bdaf0268 100644 --- a/bsp/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk +++ b/bsp/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk @@ -4,7 +4,7 @@ # ################################################################################ -XKEYBOARD_CONFIG_VERSION = 2.18 +XKEYBOARD_CONFIG_VERSION = 2.20 XKEYBOARD_CONFIG_SOURCE = xkeyboard-config-$(XKEYBOARD_CONFIG_VERSION).tar.bz2 XKEYBOARD_CONFIG_SITE = http://www.x.org/releases/individual/data/xkeyboard-config XKEYBOARD_CONFIG_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libX11/xlib_libX11.hash b/bsp/buildroot/package/x11r7/xlib_libX11/xlib_libX11.hash index acae6562..aeb0e9d7 100644 --- a/bsp/buildroot/package/x11r7/xlib_libX11/xlib_libX11.hash +++ b/bsp/buildroot/package/x11r7/xlib_libX11/xlib_libX11.hash @@ -1,3 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-March/002543.html -sha1 6f2aadf8346ee00b7419bd338461c6986e274733 libX11-1.6.3.tar.bz2 -sha256 cf31a7c39f2f52e8ebd0db95640384e63451f9b014eed2bb7f5de03e8adc8111 libX11-1.6.3.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-October/002721.html +sha256 b7c748be3aa16ec2cbd81edc847e9b6ee03f88143ab270fb59f58a044d34e441 libX11-1.6.4.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libX11/xlib_libX11.mk b/bsp/buildroot/package/x11r7/xlib_libX11/xlib_libX11.mk index 25959241..80e89b48 100644 --- a/bsp/buildroot/package/x11r7/xlib_libX11/xlib_libX11.mk +++ b/bsp/buildroot/package/x11r7/xlib_libX11/xlib_libX11.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBX11_VERSION = 1.6.3 +XLIB_LIBX11_VERSION = 1.6.4 XLIB_LIBX11_SOURCE = libX11-$(XLIB_LIBX11_VERSION).tar.bz2 XLIB_LIBX11_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBX11_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash b/bsp/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash index 00164cdd..d96e5c6a 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash +++ b/bsp/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2013-May/002227.html -sha256 9bd20edfec084a1bed481d48dd4815dee88139fffad091418cdda081129a9aea libXfixes-5.0.2.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-October/002722.html +sha256 de1cd33aff226e08cefd0e6759341c2c8e8c9faf8ce9ac6ec38d43e287b22ad6 libXfixes-5.0.3.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk b/bsp/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk index 82799a38..b7d835bb 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk +++ b/bsp/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXFIXES_VERSION = 5.0.2 +XLIB_LIBXFIXES_VERSION = 5.0.3 XLIB_LIBXFIXES_SOURCE = libXfixes-$(XLIB_LIBXFIXES_VERSION).tar.bz2 XLIB_LIBXFIXES_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXFIXES_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.hash b/bsp/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.hash index 9543637b..6db8339c 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.hash +++ b/bsp/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-March/002551.html -sha256 b70898527c73f9758f551bbab612af611b8a0962202829568d94f3edf4d86098 libXfont-1.5.1.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-August/002702.html +sha256 02945ea68da447102f3e6c2b896c1d2061fd115de99404facc2aca3ad7010d71 libXfont-1.5.2.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.mk b/bsp/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.mk index d7acab44..422c01d1 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.mk +++ b/bsp/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXFONT_VERSION = 1.5.1 +XLIB_LIBXFONT_VERSION = 1.5.2 XLIB_LIBXFONT_SOURCE = libXfont-$(XLIB_LIBXFONT_VERSION).tar.bz2 XLIB_LIBXFONT_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXFONT_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXfont2/Config.in b/bsp/buildroot/package/x11r7/xlib_libXfont2/Config.in new file mode 100644 index 00000000..6cba4658 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xlib_libXfont2/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XLIB_LIBXFONT2 + bool "libXfont2" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBFONTENC + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XFONT_ENCODINGS + help + X.Org Xfont library diff --git a/bsp/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash b/bsp/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash new file mode 100644 index 00000000..81a3c9f1 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2015-December/002663.html +sha256 e9fbbb475ddd171b3a6a54b989cbade1f6f874fc35d505ebc5be426bc6e4db7e libXfont2-2.0.1.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk b/bsp/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk new file mode 100644 index 00000000..fef1e683 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# xlib_libXfont2 +# +################################################################################ + +XLIB_LIBXFONT2_VERSION = 2.0.1 +XLIB_LIBXFONT2_SOURCE = libXfont2-$(XLIB_LIBXFONT2_VERSION).tar.bz2 +XLIB_LIBXFONT2_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXFONT2_LICENSE = MIT +XLIB_LIBXFONT2_LICENSE_FILES = COPYING +XLIB_LIBXFONT2_INSTALL_STAGING = YES +XLIB_LIBXFONT2_DEPENDENCIES = \ + freetype \ + xlib_libfontenc \ + xlib_xtrans \ + xproto_fontsproto \ + xproto_xproto \ + xfont_encodings + +HOST_XLIB_LIBXFONT2_DEPENDENCIES = \ + host-freetype \ + host-xlib_libfontenc \ + host-xlib_xtrans \ + host-xproto_fontsproto \ + host-xproto_xproto \ + host-xfont_encodings + +XLIB_LIBXFONT2_CONF_OPTS = --disable-devel-docs +HOST_XLIB_LIBXFONT2_CONF_OPTS = --disable-devel-docs + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/bsp/buildroot/package/x11r7/xlib_libXi/xlib_libXi.hash b/bsp/buildroot/package/x11r7/xlib_libXi/xlib_libXi.hash index 28eb77e1..9f2c3e30 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXi/xlib_libXi.hash +++ b/bsp/buildroot/package/x11r7/xlib_libXi/xlib_libXi.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-December/002664.html -sha256 1f32a552cec0f056c0260bdb32e853cec0673d2f40646ce932ad5a9f0205b7ac libXi-1.7.6.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002768.html +sha256 c2e6b8ff84f9448386c1b5510a5cf5a16d788f76db018194dacdc200180faf45 libXi-1.7.9.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXi/xlib_libXi.mk b/bsp/buildroot/package/x11r7/xlib_libXi/xlib_libXi.mk index 54c9af45..d593c1e9 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXi/xlib_libXi.mk +++ b/bsp/buildroot/package/x11r7/xlib_libXi/xlib_libXi.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXI_VERSION = 1.7.6 +XLIB_LIBXI_VERSION = 1.7.9 XLIB_LIBXI_SOURCE = libXi-$(XLIB_LIBXI_VERSION).tar.bz2 XLIB_LIBXI_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXI_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.hash b/bsp/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.hash index 22c9fc62..d94a9026 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.hash +++ b/bsp/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.hash @@ -1,2 +1,2 @@ -# From http://lists.freedesktop.org/archives/xorg/2013-September/056010.html -sha256 c5bdafa51d1ae30086fac01ab83be8d47fe117b238d3437f8e965434090e041c libXpm-3.5.11.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-December/002752.html +sha256 fd6a6de3da48de8d1bb738ab6be4ad67f7cb0986c39bd3f7d51dd24f7854bdec libXpm-3.5.12.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.mk b/bsp/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.mk index 997ef958..c8c54965 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.mk +++ b/bsp/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXPM_VERSION = 3.5.11 +XLIB_LIBXPM_VERSION = 3.5.12 XLIB_LIBXPM_SOURCE = libXpm-$(XLIB_LIBXPM_VERSION).tar.bz2 XLIB_LIBXPM_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXPM_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash b/bsp/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash index e4b86a01..84a50cb5 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash +++ b/bsp/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-May/002606.html -sha256 6f864959b7fc35db11754b270d71106ef5b5cf363426aa58589cb8ac8266de58 libXrandr-1.5.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-October/002724.html +sha256 1ff9e7fa0e4adea912b16a5f0cfa7c1d35b0dcda0e216831f7715c8a3abcf51a libXrandr-1.5.1.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk b/bsp/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk index 5abd8b1d..0fd298c5 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk +++ b/bsp/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXRANDR_VERSION = 1.5.0 +XLIB_LIBXRANDR_VERSION = 1.5.1 XLIB_LIBXRANDR_SOURCE = libXrandr-$(XLIB_LIBXRANDR_VERSION).tar.bz2 XLIB_LIBXRANDR_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXRANDR_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.hash b/bsp/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.hash index 2a9912af..bbc5b898 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.hash +++ b/bsp/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-April/002593.html -sha256 fc2fe57980a14092426dffcd1f2d9de0987b9d40adea663bd70d6342c0e9be1a libXrender-0.9.9.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-October/002725.html +sha256 c06d5979f86e64cabbde57c223938db0b939dff49fdb5a793a1d3d0396650949 libXrender-0.9.10.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.mk b/bsp/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.mk index 72626cf9..6134c453 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.mk +++ b/bsp/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXRENDER_VERSION = 0.9.9 +XLIB_LIBXRENDER_VERSION = 0.9.10 XLIB_LIBXRENDER_SOURCE = libXrender-$(XLIB_LIBXRENDER_VERSION).tar.bz2 XLIB_LIBXRENDER_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXRENDER_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.hash b/bsp/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.hash index 42241213..7e55a75e 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.hash +++ b/bsp/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.hash @@ -1,2 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2013-May/002237.html -sha256 ef0a7ffd577e5f1a25b1663b375679529663a1880151beaa73e9186c8309f6d9 libXtst-1.2.2.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-October/002726.html +sha256 4655498a1b8e844e3d6f21f3b2c4e2b571effb5fd83199d428a6ba7ea4bf5204 libXtst-1.2.3.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.mk b/bsp/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.mk index ad3caeaf..d71290ae 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.mk +++ b/bsp/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXTST_VERSION = 1.2.2 +XLIB_LIBXTST_VERSION = 1.2.3 XLIB_LIBXTST_SOURCE = libXtst-$(XLIB_LIBXTST_VERSION).tar.bz2 XLIB_LIBXTST_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXTST_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXv/xlib_libXv.hash b/bsp/buildroot/package/x11r7/xlib_libXv/xlib_libXv.hash index 3a54cb37..4cb26eac 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXv/xlib_libXv.hash +++ b/bsp/buildroot/package/x11r7/xlib_libXv/xlib_libXv.hash @@ -1,2 +1,2 @@ -# From http://lists.freedesktop.org/archives/xorg/2013-September/056012.html -sha256 55fe92f8686ce8612e2c1bfaf58c057715534419da700bda8d517b1d97914525 libXv-1.0.10.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-October/002727.html +sha256 d26c13eac99ac4504c532e8e76a1c8e4bd526471eb8a0a4ff2a88db60cb0b088 libXv-1.0.11.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXv/xlib_libXv.mk b/bsp/buildroot/package/x11r7/xlib_libXv/xlib_libXv.mk index ef5c7469..26f8badc 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXv/xlib_libXv.mk +++ b/bsp/buildroot/package/x11r7/xlib_libXv/xlib_libXv.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXV_VERSION = 1.0.10 +XLIB_LIBXV_VERSION = 1.0.11 XLIB_LIBXV_SOURCE = libXv-$(XLIB_LIBXV_VERSION).tar.bz2 XLIB_LIBXV_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXV_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash b/bsp/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash index f0fcd2dd..380c8119 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash +++ b/bsp/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash @@ -1,3 +1,2 @@ -# From http://lists.x.org/archives/xorg-announce/2015-March/002548.html -sha1 6fc54831734e781b2848b6f7e3bcc4f752665f21 libXvMC-1.0.9.tar.bz2 -sha256 0703d7dff6ffc184f1735ca5d4eb9dbb402b522e08e008f2f96aee16c40a5756 libXvMC-1.0.9.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-October/002728.html +sha256 e501a079b5dfaef0897c56152770c77e05e362065cec58910289aa567277ee2e libXvMC-1.0.10.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk b/bsp/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk index 101c15d2..cb39c29f 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk +++ b/bsp/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXVMC_VERSION = 1.0.9 +XLIB_LIBXVMC_VERSION = 1.0.10 XLIB_LIBXVMC_SOURCE = libXvMC-$(XLIB_LIBXVMC_VERSION).tar.bz2 XLIB_LIBXVMC_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXVMC_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xlib_libXxf86dga/Config.in b/bsp/buildroot/package/x11r7/xlib_libXxf86dga/Config.in index 5e21502c..8276b717 100644 --- a/bsp/buildroot/package/x11r7/xlib_libXxf86dga/Config.in +++ b/bsp/buildroot/package/x11r7/xlib_libXxf86dga/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_XLIB_LIBXXF86DGA bool "libXxf86dga" + depends on BR2_USE_MMU # fork() select BR2_PACKAGE_XLIB_LIBX11 select BR2_PACKAGE_XLIB_LIBXEXT select BR2_PACKAGE_XPROTO_XF86DGAPROTO diff --git a/bsp/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.hash b/bsp/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.hash index f947d915..aa45d916 100644 --- a/bsp/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.hash +++ b/bsp/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.hash @@ -1,2 +1,2 @@ -# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/2078 -sha256 812c7d48721f909a0f7a2cb1e91f6eead76159a36c4712f4579ca587552839ce presentproto-1.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002770.html +sha256 f69b23a8869f78a5898aaf53938b829c8165e597cda34f06024d43ee1e6d26b9 presentproto-1.1.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.mk b/bsp/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.mk index 6fea0a2f..0097b9cd 100644 --- a/bsp/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.mk +++ b/bsp/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.mk @@ -4,7 +4,7 @@ # ################################################################################ -XPROTO_PRESENTPROTO_VERSION = 1.0 +XPROTO_PRESENTPROTO_VERSION = 1.1 XPROTO_PRESENTPROTO_SOURCE = presentproto-$(XPROTO_PRESENTPROTO_VERSION).tar.bz2 XPROTO_PRESENTPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto XPROTO_PRESENTPROTO_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xproto_xproto/xproto_xproto.hash b/bsp/buildroot/package/x11r7/xproto_xproto/xproto_xproto.hash index 8441baee..4b77d256 100644 --- a/bsp/buildroot/package/x11r7/xproto_xproto/xproto_xproto.hash +++ b/bsp/buildroot/package/x11r7/xproto_xproto/xproto_xproto.hash @@ -1,2 +1,2 @@ -# From https://lists.x.org/archives/xorg-announce/2016-May/002692.html -sha256 6c1a477092ca73233902b8d5f33012635c4b0208f17e7833cc7efe5c93ba9f8a xproto-7.0.29.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2016-September/002713.html +sha256 c6f9747da0bd3a95f86b17fb8dd5e717c8f3ab7f0ece3ba1b247899ec1ef7747 xproto-7.0.31.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xproto_xproto/xproto_xproto.mk b/bsp/buildroot/package/x11r7/xproto_xproto/xproto_xproto.mk index e76adf81..76f9d32b 100644 --- a/bsp/buildroot/package/x11r7/xproto_xproto/xproto_xproto.mk +++ b/bsp/buildroot/package/x11r7/xproto_xproto/xproto_xproto.mk @@ -4,7 +4,7 @@ # ################################################################################ -XPROTO_XPROTO_VERSION = 7.0.29 +XPROTO_XPROTO_VERSION = 7.0.31 XPROTO_XPROTO_SOURCE = xproto-$(XPROTO_XPROTO_VERSION).tar.bz2 XPROTO_XPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto XPROTO_XPROTO_LICENSE = MIT diff --git a/bsp/buildroot/package/x11r7/xserver_xorg-server/1.18.4/0001-modesettings-needs-dri2.patch b/bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0001-modesettings-needs-dri2.patch similarity index 100% rename from bsp/buildroot/package/x11r7/xserver_xorg-server/1.18.4/0001-modesettings-needs-dri2.patch rename to bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0001-modesettings-needs-dri2.patch diff --git a/bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch b/bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch new file mode 100644 index 00000000..c5f04bf2 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch @@ -0,0 +1,66 @@ +Discover monotonic clock using compile-time check + +monotonic clock check does not work when cross-compiling. + +Upstream-Status: Denied [Does not work on OpenBSD] +Signed-off-by: Jussi Kukkonen + + + +Original patch follows: + +When xorg-xserver is being cross-compiled, there is currently no way +for us to detect whether the monotonic clock is available on the +target system, because we aren't able to run a test program on the host +system. Currently, in this situation, we default to not use the +monotonic clock. One problem with this situation is that the user will +be treated as idle when the date is updated. + +To fix this situation, we now use a compile-time check to detect whether the +monotonic clock is available. This check can run just fine when we are +cross-compiling. + +Signed-off-by: David James + +Downloaded from +https://github.com/openembedded/openembedded-core/blob/master/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 17 +++++++---------- + 1 file changed, 7 insertions(+), 10 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f7ab48c..26e85cd 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1048,19 +1048,16 @@ if ! test "x$have_clock_gettime" = xno; then + CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L" + fi + +- AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ + #include +- +-int main(int argc, char *argv[[]]) { +- struct timespec tp; +- +- if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) ++#include ++int main() { ++#if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC)) ++ #error No monotonic clock ++#endif + return 0; +- else +- return 1; + } +- ])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no], +- [MONOTONIC_CLOCK="cross compiling"]) ++]])],[MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no]) + + LIBS="$LIBS_SAVE" + CPPFLAGS="$CPPFLAGS_SAVE" +-- +2.1.4 + diff --git a/bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0003-Remove-check-for-useSIGIO-option.patch b/bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0003-Remove-check-for-useSIGIO-option.patch new file mode 100644 index 00000000..d4f0cca6 --- /dev/null +++ b/bsp/buildroot/package/x11r7/xserver_xorg-server/1.19.1/0003-Remove-check-for-useSIGIO-option.patch @@ -0,0 +1,53 @@ +From cf407b16cd65ad6e26a9c8e5984e163409a5c0f7 Mon Sep 17 00:00:00 2001 +From: Prabhu Sundararaj +Date: Mon, 30 Jan 2017 16:32:06 -0600 +Subject: [PATCH] Remove check for useSIGIO option + +Original patch follows: +Commit 6a5a4e60373c1386b311b2a8bb666c32d68a9d99 removes the configure of useSIGIO +option. + +As the xfree86 SIGIO support is reworked to use internal versions of OsBlockSIGIO +and OsReleaseSIGIO. + +No longer the check for useSIGIO is needed + +Upstream-Status: Pending + +Signed-off-by: Prabhu Sundararaj + +Downloaded from +https://github.com/openembedded/openembedded-core/blob/master/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch + +Signed-off-by: Mylène Josserand +--- + hw/xfree86/os-support/shared/sigio.c | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c +index 884a71c..be76498 100644 +--- a/hw/xfree86/os-support/shared/sigio.c ++++ b/hw/xfree86/os-support/shared/sigio.c +@@ -185,9 +185,6 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure) + int i; + int installed = FALSE; + +- if (!xf86Info.useSIGIO) +- return 0; +- + for (i = 0; i < MAX_FUNCS; i++) { + if (!xf86SigIOFuncs[i].f) { + if (xf86IsPipe(fd)) +@@ -256,9 +253,6 @@ xf86RemoveSIGIOHandler(int fd) + int max; + int ret; + +- if (!xf86Info.useSIGIO) +- return 0; +- + max = 0; + ret = 0; + for (i = 0; i < MAX_FUNCS; i++) { +-- +2.7.4 + diff --git a/bsp/buildroot/package/x11r7/xserver_xorg-server/Config.in b/bsp/buildroot/package/x11r7/xserver_xorg-server/Config.in index df3801c5..1c8f8cfd 100644 --- a/bsp/buildroot/package/x11r7/xserver_xorg-server/Config.in +++ b/bsp/buildroot/package/x11r7/xserver_xorg-server/Config.in @@ -1,6 +1,11 @@ +comment "xorg-server needs a glibc or uClibc toolchain" + depends on BR2_arm && BR2_TOOLCHAIN_USES_MUSL + config BR2_PACKAGE_XSERVER_XORG_SERVER bool "xorg-server" depends on BR2_USE_MMU # fork() + # xserver uses inb/outb on arm, which aren't available with musl + depends on !(BR2_arm && BR2_TOOLCHAIN_USES_MUSL) # We need a SHA1 implementation. If either openssl or # libgcrypt are already part of the build, we'll use one of # them, otherwise, use the small libsha1 library. @@ -17,7 +22,6 @@ config BR2_PACKAGE_XSERVER_XORG_SERVER select BR2_PACKAGE_XLIB_LIBXDMCP select BR2_PACKAGE_XLIB_LIBXEXT select BR2_PACKAGE_XLIB_LIBXFIXES - select BR2_PACKAGE_XLIB_LIBXFONT select BR2_PACKAGE_XLIB_LIBXFT select BR2_PACKAGE_XLIB_LIBXI select BR2_PACKAGE_XLIB_LIBXINERAMA @@ -48,6 +52,7 @@ config BR2_PACKAGE_XSERVER_XORG_SERVER select BR2_PACKAGE_XPROTO_XPROTO select BR2_PACKAGE_XUTIL_UTIL_MACROS select BR2_PACKAGE_XKEYBOARD_CONFIG + select BR2_PACKAGE_XPROTO_DRI2PROTO if BR2_PACKAGE_SYSTEMD help X.Org X server @@ -61,37 +66,40 @@ config BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_14 config BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 bool -config BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_20 +config BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_23 bool config BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI int default 14 if BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_14 default 19 if BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 - default 20 if BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_20 + default 23 if BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_23 choice bool "X Window System server version" -config BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_18 - bool "1.18.4" - select BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_20 +config BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_19 + bool "1.19.1" + select BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_23 + select BR2_PACKAGE_XLIB_LIBXFONT2 select BR2_PACKAGE_XPROTO_PRESENTPROTO config BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_17 bool "1.17.4" select BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 + select BR2_PACKAGE_XLIB_LIBXFONT select BR2_PACKAGE_XPROTO_PRESENTPROTO config BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_14 bool "1.14.7" select BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_14 + select BR2_PACKAGE_XLIB_LIBXFONT endchoice config BR2_PACKAGE_XSERVER_XORG_SERVER_VERSION string - default "1.18.4" if BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_18 + default "1.19.1" if BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_19 default "1.17.4" if BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_17 default "1.14.7" if BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_14 @@ -129,6 +137,8 @@ endchoice config BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX bool "Enable AIGLX Extension" + # AIGLX Extension removed in 1.19.0 + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_14 || BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_17 help Enable/Use AIGLX extension. diff --git a/bsp/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash b/bsp/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash index ab7ba7eb..2f13ca64 100644 --- a/bsp/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash +++ b/bsp/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash @@ -3,5 +3,5 @@ sha1 7a95765e56b124758fcd7b609589e65b8870880b x sha256 fcf66fa6ad86227613d2d3e8ae13ded297e2a1e947e9060a083eaf80d323451f xorg-server-1.14.7.tar.bz2 # From https://lists.x.org/archives/xorg-announce/2015-October/002650.html sha256 0c4b45c116a812a996eb432d8508cf26c2ec8c3916ff2a50781796882f8d6457 xorg-server-1.17.4.tar.bz2 -# From https://lists.x.org/archives/xorg-announce/2016-July/002699.html -sha256 278459b2c31d61a15655d95a72fb79930c480a6bb8cf9226e48a07df8b1d31c8 xorg-server-1.18.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002754.html +sha256 79ae2cf39d3f6c4a91201d8dad549d1d774b3420073c5a70d390040aa965a7fb xorg-server-1.19.1.tar.bz2 diff --git a/bsp/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk b/bsp/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk index 85d7e98e..7aebbc1d 100644 --- a/bsp/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk +++ b/bsp/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk @@ -15,7 +15,6 @@ XSERVER_XORG_SERVER_AUTORECONF = YES XSERVER_XORG_SERVER_DEPENDENCIES = \ xfont_font-util \ xutil_util-macros \ - xlib_libXfont \ xlib_libX11 \ xlib_libXau \ xlib_libXdmcp \ @@ -73,7 +72,9 @@ ifeq ($(BR2_PACKAGE_SYSTEMD),y) XSERVER_XORG_SERVER_CONF_OPTS += \ --with-systemd-daemon \ --enable-systemd-logind -XSERVER_XORG_SERVER_DEPENDENCIES += systemd +XSERVER_XORG_SERVER_DEPENDENCIES += \ + systemd \ + xproto_dri2proto else XSERVER_XORG_SERVER_CONF_OPTS += \ --without-systemd-daemon \ @@ -81,9 +82,9 @@ XSERVER_XORG_SERVER_CONF_OPTS += \ endif # Xwayland support needs libdrm, libepoxy, wayland and libxcomposite -ifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_LIBEPOXY)$(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),yyyy) +ifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_LIBEPOXY)$(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_WAYLAND_PROTOCOLS)$(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),yyyyy) XSERVER_XORG_SERVER_CONF_OPTS += --enable-xwayland -XSERVER_XORG_SERVER_DEPENDENCIES += libdrm libepoxy wayland xlib_libXcomposite +XSERVER_XORG_SERVER_DEPENDENCIES += libdrm libepoxy wayland wayland-protocols xlib_libXcomposite else XSERVER_XORG_SERVER_CONF_OPTS += --disable-xwayland endif @@ -169,12 +170,12 @@ XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev-kms else XSERVER_XORG_SERVER_CONF_OPTS += --disable-config-udev-kms endif -else +endif + ifeq ($(BR2_PACKAGE_DBUS),y) XSERVER_XORG_SERVER_DEPENDENCIES += dbus XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-dbus endif -endif ifeq ($(BR2_PACKAGE_FREETYPE),y) XSERVER_XORG_SERVER_DEPENDENCIES += freetype @@ -194,6 +195,14 @@ else XSERVER_XORG_SERVER_CONF_OPTS += --disable-record endif +ifeq ($(BR2_PACKAGE_XLIB_LIBXFONT2),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXfont2 +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFONT),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXfont +endif + ifneq ($(BR2_PACKAGE_XLIB_LIBXVMC),y) XSERVER_XORG_SERVER_CONF_OPTS += --disable-xvmc endif @@ -214,9 +223,11 @@ endif ifeq ($(BR2_PACKAGE_XPROTO_DRI3PROTO),y) XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libxshmfence xproto_dri3proto XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri3 -ifeq ($(BR2_PACKAGE_LIBEPOXY),y) +ifeq ($(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_LIBEPOXY),yy) XSERVER_XORG_SERVER_DEPENDENCIES += libepoxy XSERVER_XORG_SERVER_CONF_OPTS += --enable-glamor +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-glamor endif else XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri3 --disable-glamor diff --git a/bsp/buildroot/package/x264/Config.in b/bsp/buildroot/package/x264/Config.in index 7bf2319f..be3ab3f3 100644 --- a/bsp/buildroot/package/x264/Config.in +++ b/bsp/buildroot/package/x264/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_X264 bool "x264" - depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX # madvise() help x264 is a free software library and application for encoding video streams into the H.264/MPEG-4 AVC diff --git a/bsp/buildroot/package/x264/x264.hash b/bsp/buildroot/package/x264/x264.hash new file mode 100644 index 00000000..95510938 --- /dev/null +++ b/bsp/buildroot/package/x264/x264.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 9fc4651981453d0428a2ad16889b6b63d1f2e7347ea321f20347fc3a021ee912 x264-97eaef2ab82a46d13ea5e00270712d6475fbe42b.tar.gz diff --git a/bsp/buildroot/package/x264/x264.mk b/bsp/buildroot/package/x264/x264.mk index 6055a8a6..80437c40 100644 --- a/bsp/buildroot/package/x264/x264.mk +++ b/bsp/buildroot/package/x264/x264.mk @@ -4,7 +4,7 @@ # ################################################################################ -X264_VERSION = 3b70645597bea052d2398005bc723212aeea6875 +X264_VERSION = 97eaef2ab82a46d13ea5e00270712d6475fbe42b X264_SITE = git://git.videolan.org/x264.git X264_LICENSE = GPLv2+ X264_DEPENDENCIES = host-pkgconf diff --git a/bsp/buildroot/package/x265/0001-fix-gcc-options.patch b/bsp/buildroot/package/x265/0001-fix-gcc-options.patch new file mode 100644 index 00000000..81518212 --- /dev/null +++ b/bsp/buildroot/package/x265/0001-fix-gcc-options.patch @@ -0,0 +1,52 @@ +# HG changeset patch +# User Bertrand Jacquin +# Date 1444431941 -3600 +# Node ID 5c6d2a6f2f9a0534933cc999b3845be4344e1af0 +# Parent b6156a08b1def3584647f26096866c1a0c11e54a +build: Disable -march selection from CMakeLists.txt + +x32 arch as defined on https://sites.google.com/site/x32abi is neither +X86 nor X64, then forcing -march=i686 leads to build failure as wrong +-march is used. + +Forcing -march, -mfloat-abi and -mfpu for ARM is also wrong + +As a global sanity sake, disable all forced -march in CMakeLists + +Backported from upstream pull request: +https://bitbucket.org/multicoreware/x265/pull-requests/21 + +Signed-off-by: Bernd Kuhls + +diff -r 58dddcf01b7d source/CMakeLists.txt +--- a/source/CMakeLists.txt Mon Jan 23 09:50:33 2017 +0530 ++++ b/source/CMakeLists.txt Mon Jan 23 21:03:10 2017 +0100 +@@ -194,28 +194,6 @@ + if(NATIVE_BUILD) + if(INTEL_CXX) + add_definitions(-xhost) +- else() +- add_definitions(-march=native) +- endif() +- elseif(X86 AND NOT X64) +- string(FIND "${CMAKE_CXX_FLAGS}" "-march" marchPos) +- if(marchPos LESS "0") +- add_definitions(-march=i686) +- if(WIN32 AND NOT INTEL_CXX AND NOT CLANG AND +- CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0) +- add_definitions(-mpreferred-stack-boundary=2) +- endif() +- endif() +- endif() +- if(ARM AND CROSS_COMPILE_ARM) +- set(ARM_ARGS -march=armv6 -mfloat-abi=soft -mfpu=vfp -marm -fPIC) +- elseif(ARM) +- find_package(Neon) +- if(CPU_HAS_NEON) +- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC) +- add_definitions(-DHAVE_NEON) +- else() +- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm) + endif() + endif() + add_definitions(${ARM_ARGS}) diff --git a/bsp/buildroot/package/x265/x265.hash b/bsp/buildroot/package/x265/x265.hash index 92b5beaa..5672d79e 100644 --- a/bsp/buildroot/package/x265/x265.hash +++ b/bsp/buildroot/package/x265/x265.hash @@ -1,2 +1,2 @@ # Locally generated -sha256 3e4654133ed957a98708fdb4cb9a154d9e80922b84e26e43fc462a101c5b15c8 x265_1.9.tar.gz +sha256 b872552535e41fbffa03ba7cbcd3479c42c4053868309292e78e147b7773ac4b x265_2.2.tar.gz diff --git a/bsp/buildroot/package/x265/x265.mk b/bsp/buildroot/package/x265/x265.mk index e737c313..0fbdb010 100644 --- a/bsp/buildroot/package/x265/x265.mk +++ b/bsp/buildroot/package/x265/x265.mk @@ -4,7 +4,7 @@ # ################################################################################ -X265_VERSION = 1.9 +X265_VERSION = 2.2 X265_SOURCE = x265_$(X265_VERSION).tar.gz X265_SITE = https://bitbucket.org/multicoreware/x265/downloads X265_LICENSE = GPLv2+ diff --git a/bsp/buildroot/package/xen/0001-Remove-hardcoded-strict-Werror-checking.patch b/bsp/buildroot/package/xen/0001-Remove-hardcoded-strict-Werror-checking.patch new file mode 100644 index 00000000..ca772ddf --- /dev/null +++ b/bsp/buildroot/package/xen/0001-Remove-hardcoded-strict-Werror-checking.patch @@ -0,0 +1,26 @@ +From 234847440a5d3cf95540ea79f7a08d50cccfef73 Mon Sep 17 00:00:00 2001 +From: Alistair Francis +Date: Tue, 13 Sep 2016 10:48:31 -0700 +Subject: [PATCH] Remove hardcoded strict -Werror checking + +Signed-off-by: Alistair Francis +--- + Config.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Config.mk b/Config.mk +index bd991c6..e7ac662 100644 +--- a/Config.mk ++++ b/Config.mk +@@ -36,7 +36,7 @@ CONFIG_$(XEN_OS) := y + SHELL ?= /bin/sh + + # Tools to run on system hosting the build +-HOSTCFLAGS = -Wall -Werror -Wstrict-prototypes -O2 -fomit-frame-pointer ++HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer + HOSTCFLAGS += -fno-strict-aliasing + + DISTDIR ?= $(XEN_ROOT)/dist +-- +2.7.4 + diff --git a/bsp/buildroot/package/xen/0002-xen-Rules.mk-fix-build-with-CFLAGS-from-environment.patch b/bsp/buildroot/package/xen/0002-xen-Rules.mk-fix-build-with-CFLAGS-from-environment.patch new file mode 100644 index 00000000..0d4e581a --- /dev/null +++ b/bsp/buildroot/package/xen/0002-xen-Rules.mk-fix-build-with-CFLAGS-from-environment.patch @@ -0,0 +1,36 @@ +From 2a310549aaeaba05f640ade43488bb893101ce4a Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 29 Oct 2016 16:35:26 +0200 +Subject: [PATCH] xen/Rules.mk: fix build with CFLAGS from environment + +When CFLAGS are passed from the environment, the first-level make +invocation will append -D__OBJECT_FILE__ to it, then call a second +make invocation, that will have those new CFLAGS in its environment, +but will also append -D__OBJECT_FILE__ to those. + +Then, the compiler fails because __OBEJECT_FILE__ is defined twice. + +Just undefine it before defining it again, as a *workaround* to this +issue. + +Signed-off-by: "Yann E. MORIN" +--- + xen/Rules.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xen/Rules.mk b/xen/Rules.mk +index a9fda71..09ccbfa 100644 +--- a/xen/Rules.mk ++++ b/xen/Rules.mk +@@ -49,7 +49,7 @@ ALL_OBJS-$(CONFIG_CRYPTO) += $(BASEDIR)/crypto/built_in.o + CFLAGS += -nostdinc -fno-builtin -fno-common + CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith + CFLAGS += -pipe -g -D__XEN__ -include $(BASEDIR)/include/xen/config.h +-CFLAGS += '-D__OBJECT_FILE__="$@"' ++CFLAGS += -U__OBJECT_FILE__ '-D__OBJECT_FILE__="$@"' + + ifneq ($(clang),y) + # Clang doesn't understand this command line argument, and doesn't appear to +-- +2.7.4 + diff --git a/bsp/buildroot/package/xen/0003-tools-libxl-Disable-strict-Werror-checking.patch b/bsp/buildroot/package/xen/0003-tools-libxl-Disable-strict-Werror-checking.patch new file mode 100644 index 00000000..80c0b322 --- /dev/null +++ b/bsp/buildroot/package/xen/0003-tools-libxl-Disable-strict-Werror-checking.patch @@ -0,0 +1,26 @@ +From 19f1e70041044fde1542109a0525424cc6d5d053 Mon Sep 17 00:00:00 2001 +From: Alistair Francis +Date: Wed, 7 Dec 2016 11:35:10 -0800 +Subject: [PATCH] tools/libxl: Disable strict Werror checking + +Signed-off-by: Alistair Francis +--- + tools/libxl/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile +index defeb40..239faf3 100644 +--- a/tools/libxl/Makefile ++++ b/tools/libxl/Makefile +@@ -11,7 +11,7 @@ MINOR = 0 + XLUMAJOR = 4.7 + XLUMINOR = 0 + +-CFLAGS += -Werror -Wno-format-zero-length -Wmissing-declarations \ ++CFLAGS += -Wno-format-zero-length -Wmissing-declarations \ + -Wno-declaration-after-statement -Wformat-nonliteral + CFLAGS += -I. -fPIC + +-- +2.7.4 + diff --git a/bsp/buildroot/package/xen/Config.in b/bsp/buildroot/package/xen/Config.in index 7254a076..b5dcbf25 100644 --- a/bsp/buildroot/package/xen/Config.in +++ b/bsp/buildroot/package/xen/Config.in @@ -22,7 +22,7 @@ config BR2_PACKAGE_XEN_TOOLS depends on !BR2_STATIC_LIBS # dtc (libfdt) depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 - depends on BR2_USE_WCHAR # libglib2, util-linux + depends on BR2_USE_WCHAR # libglib2 select BR2_PACKAGE_DTC select BR2_PACKAGE_LIBAIO select BR2_PACKAGE_LIBGLIB2 diff --git a/bsp/buildroot/package/xen/xen.hash b/bsp/buildroot/package/xen/xen.hash index c124b3a5..c3df2431 100644 --- a/bsp/buildroot/package/xen/xen.hash +++ b/bsp/buildroot/package/xen/xen.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 6fa1c2431df55aa5950d248e6093b8c8c0f11c357a0adbd348a2186478e80909 xen-4.6.0.tar.gz +sha256 e87f4b0575e78657ee23d31470a15ecf1ce8c3a92a771cda46bbcd4d0d671ffe xen-4.7.1.tar.gz diff --git a/bsp/buildroot/package/xen/xen.mk b/bsp/buildroot/package/xen/xen.mk index e2abf253..7d32e527 100644 --- a/bsp/buildroot/package/xen/xen.mk +++ b/bsp/buildroot/package/xen/xen.mk @@ -4,7 +4,7 @@ # ################################################################################ -XEN_VERSION = 4.6.0 +XEN_VERSION = 4.7.1 XEN_SITE = http://bits.xensource.com/oss-xen/release/$(XEN_VERSION) XEN_LICENSE = GPLv2 XEN_LICENSE_FILES = COPYING diff --git a/bsp/buildroot/package/xenomai/0001-bfin-remove-inline-keyword.patch b/bsp/buildroot/package/xenomai/0001-bfin-remove-inline-keyword.patch new file mode 100644 index 00000000..376bd21c --- /dev/null +++ b/bsp/buildroot/package/xenomai/0001-bfin-remove-inline-keyword.patch @@ -0,0 +1,62 @@ +From 2a96c8bbe19a193d9ae6d0780fc274abc4df03e3 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 5 Nov 2016 19:09:00 +0100 +Subject: [PATCH] bfin: remove inline keyword + +Xenomai user space tools fail to build for bfin target since it's +provide it's own pthread_atfork(), shm_open() and shm_unlink() +definition using the inline keyword and weak attribute. + +With gcc 5+ the weak attribute is discarded by the inline keyword, +so each symbol are global and are redefined several time while +linking. + +Fixes: +http://autobuild.buildroot.net/results/0c2/0c2e5eb4edd4f9427f61d3c9b67a12a7a0e24140 + +Patch status: upstream, +https://git.xenomai.org/xenomai-2.6.git/commit/?id=917dcebb26ec492f276cdc3b55867aa90e01fa12 + +Signed-off-by: Romain Naour +--- + include/asm-blackfin/syscall.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/include/asm-blackfin/syscall.h b/include/asm-blackfin/syscall.h +index 9eda8b9..b5728b5 100644 +--- a/include/asm-blackfin/syscall.h ++++ b/include/asm-blackfin/syscall.h +@@ -132,9 +132,9 @@ static inline int __xn_interrupted_p(struct pt_regs *regs) + #define XENOMAI_SKINCALL5(id,op,a1,a2,a3,a4,a5) XENOMAI_DO_SYSCALL(5,id,op,a1,a2,a3,a4,a5) + + /* uClibc does not provide pthread_atfork() for this arch; provide it +- here. Note: let the compiler decides whether it wants to actually +- inline this routine, i.e. do not force always_inline. */ +-inline __attribute__((weak)) int pthread_atfork(void (*prepare)(void), ++ here. ++*/ ++__attribute__((weak)) int pthread_atfork(void (*prepare)(void), + void (*parent)(void), + void (*child)(void)) + { +@@ -143,7 +143,7 @@ inline __attribute__((weak)) int pthread_atfork(void (*prepare)(void), + + #include + +-inline __attribute__((weak)) int shm_open(const char *name, ++__attribute__((weak)) int shm_open(const char *name, + int oflag, + mode_t mode) + { +@@ -151,7 +151,7 @@ inline __attribute__((weak)) int shm_open(const char *name, + return -1; + } + +-inline __attribute__((weak)) int shm_unlink(const char *name) ++__attribute__((weak)) int shm_unlink(const char *name) + { + errno = ENOSYS; + return -1; +-- +2.5.5 + diff --git a/bsp/buildroot/package/xenomai/xenomai.mk b/bsp/buildroot/package/xenomai/xenomai.mk index 11ebf72c..6e0e4416 100644 --- a/bsp/buildroot/package/xenomai/xenomai.mk +++ b/bsp/buildroot/package/xenomai/xenomai.mk @@ -13,7 +13,7 @@ endif XENOMAI_SITE = https://xenomai.org/downloads/xenomai/stable XENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2 -XENOMAI_LICENSE = headers: GPLv2+ with exception, libraries: LGPLv2.1+, kernel: GPLv2+, docs: GFDLv1.2+, ipipe patch and can driver: GPLv2 +XENOMAI_LICENSE = GPLv2+ with exception (headers), LGPLv2.1+ (libraries), GPLv2+ (kernel), GFDLv1.2+ (docs), GPLv2 (ipipe patch, can driver) # GFDL is not included but refers to gnu.org XENOMAI_LICENSE_FILES = debian/copyright include/COPYING src/skins/native/COPYING ksrc/nucleus/COPYING diff --git a/bsp/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch b/bsp/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch index 3f79dbbe..4e4160fb 100644 --- a/bsp/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch +++ b/bsp/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch @@ -1,12 +1,4 @@ -mdrestore: do not do dynamic linking of libtool libraries - -This patch has been sent upstream: - - http://oss.sgi.com/pipermail/xfs/2015-November/045136.html - -Signed-off-by: Vicente Olivert Riera - -From a406326f724006d62085a0aeae1072b4145caa9d Mon Sep 17 00:00:00 2001 +From 770902a0a29fb4ac62358f7eacb3a83d0d9af1c7 Mon Sep 17 00:00:00 2001 From: Vicente Olivert Riera Date: Wed, 25 Nov 2015 10:50:00 +0000 Subject: [PATCH] mdrestore: do not do dynamic linking of libtool libraries @@ -18,6 +10,7 @@ linking for libuuid only. Otherwise the build will fail like this: ld: attempted static link of dynamic object `/usr/lib/libuuid.so' Signed-off-by: Vicente Olivert Riera +[Sent upstream: http://oss.sgi.com/pipermail/xfs/2015-November/045136.html] --- mdrestore/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) @@ -36,5 +29,5 @@ index 5171306..1b34a0e 100644 default: depend $(LTCOMMAND) -- -2.4.10 +2.7.4 diff --git a/bsp/buildroot/package/xfsprogs/0002-no-crc32-checks.patch b/bsp/buildroot/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch similarity index 66% rename from bsp/buildroot/package/xfsprogs/0002-no-crc32-checks.patch rename to bsp/buildroot/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch index 6f970924..372a5301 100644 --- a/bsp/buildroot/package/xfsprogs/0002-no-crc32-checks.patch +++ b/bsp/buildroot/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch @@ -1,4 +1,7 @@ -libxfs: do not try to run the crc32selftest +From 3a77dfc54271059dcac305384bf6ace34fe1f3d3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 18 Dec 2016 15:37:27 +0100 +Subject: [PATCH] libxfs: do not try to run the crc32selftest Even though the crc32selftest is natively compiled (because it is to be executed), it fails in cross-compilation as the host may lack the @@ -14,11 +17,15 @@ Note that there's a remaining bug-in-hiding, because the crc32 table generator is natively built, but with the target CFLAGS. Signed-off-by: "Yann E. MORIN" +--- + libxfs/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -diff -durN xfsprogs-4.3.0.orig/libxfs/Makefile xfsprogs-4.3.0/libxfs/Makefile ---- xfsprogs-4.3.0.orig/libxfs/Makefile 2015-09-22 03:42:41.000000000 +0200 -+++ xfsprogs-4.3.0/libxfs/Makefile 2015-12-07 18:45:27.190082913 +0100 -@@ -105,9 +105,9 @@ +diff --git a/libxfs/Makefile b/libxfs/Makefile +index 62608bd..e021625 100644 +--- a/libxfs/Makefile ++++ b/libxfs/Makefile +@@ -112,9 +112,9 @@ LTLIBS = $(LIBPTHREAD) $(LIBRT) # don't try linking xfs_repair with a debug libxfs. DEBUG = -DNDEBUG @@ -30,3 +37,6 @@ diff -durN xfsprogs-4.3.0.orig/libxfs/Makefile xfsprogs-4.3.0/libxfs/Makefile crc32table.h: gen_crc32table.c @echo " [CC] gen_crc32table" +-- +2.7.4 + diff --git a/bsp/buildroot/package/xfsprogs/0003-xfsprogs-don-t-use-CFLAGS-with-BUILD_CC.patch b/bsp/buildroot/package/xfsprogs/0003-xfsprogs-don-t-use-CFLAGS-with-BUILD_CC.patch index 6617935b..36896b5b 100644 --- a/bsp/buildroot/package/xfsprogs/0003-xfsprogs-don-t-use-CFLAGS-with-BUILD_CC.patch +++ b/bsp/buildroot/package/xfsprogs/0003-xfsprogs-don-t-use-CFLAGS-with-BUILD_CC.patch @@ -1,4 +1,4 @@ -From 5b3dd8eb1f7720c68dab032c3d89d4e3102d6347 Mon Sep 17 00:00:00 2001 +From b981adb6769f6b7d80f6c98627391398a007a25b Mon Sep 17 00:00:00 2001 From: Gustavo Zacarias Date: Tue, 15 Dec 2015 20:51:35 -0300 Subject: [PATCH] xfsprogs: don't use CFLAGS with BUILD_CC @@ -8,16 +8,14 @@ When cross-compiling CFLAGS might not be suitable for the host Signed-off-by: Gustavo Zacarias --- -Status: reported http://oss.sgi.com/bugzilla/show_bug.cgi?id=1132 - libxfs/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libxfs/Makefile b/libxfs/Makefile -index ecf1921..3979077 100644 +index e021625..ad76a04 100644 --- a/libxfs/Makefile +++ b/libxfs/Makefile -@@ -111,7 +111,7 @@ default: crc32selftest ltdepend $(LTLIBRARY) +@@ -118,7 +118,7 @@ default: ltdepend $(LTLIBRARY) crc32table.h: gen_crc32table.c @echo " [CC] gen_crc32table" @@ -26,7 +24,7 @@ index ecf1921..3979077 100644 @echo " [GENERATE] $@" $(Q) ./gen_crc32table > crc32table.h -@@ -122,7 +122,7 @@ crc32table.h: gen_crc32table.c +@@ -129,7 +129,7 @@ crc32table.h: gen_crc32table.c # disk. crc32selftest: gen_crc32table.c crc32table.h crc32.c @echo " [TEST] CRC32" @@ -36,5 +34,5 @@ index ecf1921..3979077 100644 # set up include/xfs header directory -- -2.4.10 +2.7.4 diff --git a/bsp/buildroot/package/xfsprogs/0004-build-add-EXTRALIBS-to-link-with.patch b/bsp/buildroot/package/xfsprogs/0004-build-add-EXTRALIBS-to-link-with.patch new file mode 100644 index 00000000..8ff0580f --- /dev/null +++ b/bsp/buildroot/package/xfsprogs/0004-build-add-EXTRALIBS-to-link-with.patch @@ -0,0 +1,53 @@ +From 1e9bb2fba94bc508659f1667bf95501324849bb9 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 26 Feb 2017 12:04:54 +0100 +Subject: [PATCH] build: add EXTRALIBS to link with + +When doing a uClibc static build, the build fails to link: + http://autobuild.buildroot.org/results/503/50314716a9f72e8bb238e52e9dc342c68f7e0b8b/build-end.log + +The cause is due to: + - xfsprogs links dome programs with util-linux' libblkid + - util-linux' libblkid is linked to util-linux' libuuid + - util-linux' libuuid uses i18n functions when locales are enabled + - uClibc does not provide i18n functions + - i18n functions are provided by libintl from libintl from gettext + +util-linux installs pkg-config files for thos two libs. However, +xfsprogs does not use pkg-config to find libblkid or libuuid, thus it +misses the Libs.private field from libuid. + +In this case, it is necessary to pass LIBS=-lintl at configure time, so +that configure correctly finds libblkid. + +Still, this is not enough, because the build will not use LIBS during +the link phase. + +We fix that last bit by adding EXTRALIBS to the libraries to link with, +so that it is possible to pass EXTRALIBS=-lintl at build time: + + $ ./configure [...] LIBS=-lintl + $ make EXTRALIBS=-lintl + +Signed-off-by: "Yann E. MORIN" +Cc: Waldemar Brodkorb +--- + include/buildmacros | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/buildmacros b/include/buildmacros +index a7c5d8a..dd62d80 100644 +--- a/include/buildmacros ++++ b/include/buildmacros +@@ -11,7 +11,7 @@ BUILDRULES = $(TOPDIR)/include/buildrules + + LDFLAGS += $(LOADERFLAGS) $(LLDFLAGS) + LTLDFLAGS += $(LOADERFLAGS) +-LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) ++LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) $(EXTRALIBS) + + MAKEOPTS = --no-print-directory Q=$(Q) + SRCFILES = Makefile $(HFILES) $(CFILES) $(LSRCFILES) $(LFILES) $(YFILES) +-- +2.7.4 + diff --git a/bsp/buildroot/package/xfsprogs/Config.in b/bsp/buildroot/package/xfsprogs/Config.in index 2c24cbbc..9f0d2509 100644 --- a/bsp/buildroot/package/xfsprogs/Config.in +++ b/bsp/buildroot/package/xfsprogs/Config.in @@ -1,15 +1,12 @@ - -comment "Note that xfsprogs needs a toolchain with UCLIBC_SV4_DEPRECATED and UCLIBC_HAS_OBSOLETE_BSD_SIGNAL enabled" - depends on BR2_PACKAGE_XFSPROGS - -comment "xfsprogs needs a toolchain w/ wchar" +comment "xfsprogs needs a glibc or uClibc toolchain w/ threads" depends on BR2_USE_MMU - depends on !BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_USES_MUSL || !BR2_TOOLCHAIN_HAS_THREADS config BR2_PACKAGE_XFSPROGS bool "xfsprogs" depends on BR2_USE_MMU # fork() - depends on BR2_USE_WCHAR # util-linux + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_UTIL_LINUX select BR2_PACKAGE_UTIL_LINUX_LIBUUID select BR2_PACKAGE_UTIL_LINUX_LIBBLKID diff --git a/bsp/buildroot/package/xfsprogs/xfsprogs.hash b/bsp/buildroot/package/xfsprogs/xfsprogs.hash index 1f338b05..e990b78d 100644 --- a/bsp/buildroot/package/xfsprogs/xfsprogs.hash +++ b/bsp/buildroot/package/xfsprogs/xfsprogs.hash @@ -1,3 +1,3 @@ # Locally calculated after checking pgp signature: -# ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs-4.7.0.tar.gz.sig -sha256 88580bb3e6847c3edef436703a4fae403fc19b20739db4c31166ee4b256178d7 xfsprogs-4.7.0.tar.gz +# https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-4.8.0.tar.sign +sha256 82ce9cb3a55f4e208e8fe3471ff0aff0602b8300f3e50bdf05cc7e11549686f9 xfsprogs-4.8.0.tar.xz diff --git a/bsp/buildroot/package/xfsprogs/xfsprogs.mk b/bsp/buildroot/package/xfsprogs/xfsprogs.mk index b0875d10..c110733c 100644 --- a/bsp/buildroot/package/xfsprogs/xfsprogs.mk +++ b/bsp/buildroot/package/xfsprogs/xfsprogs.mk @@ -4,8 +4,9 @@ # ################################################################################ -XFSPROGS_VERSION = 4.7.0 -XFSPROGS_SITE = ftp://oss.sgi.com/projects/xfs/cmd_tars +XFSPROGS_VERSION = 4.8.0 +XFSPROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/fs/xfs/xfsprogs +XFSPROGS_SOURCE = xfsprogs-$(XFSPROGS_VERSION).tar.xz XFSPROGS_DEPENDENCIES = util-linux @@ -17,6 +18,23 @@ XFSPROGS_CONF_OPTS = \ INSTALL_GROUP=root \ --enable-static +# xfsprogs links some of its programs to libs from util-linux, which use +# i18n functions. For shared-only builds, that's automatically pulled in. +# Static builds need some help, though... +# +# No need to depend on gettext in this case: xfsprogs does not use it for +# itself; util-linux does need it and has it in its own dependencies. +# +# xfsprogs' buildsystem uses hand-made Makefiles, not automake, and they +# do not use the LIBS variable set by configure. So we use EXTRALIBS that +# is added by our patch. +# +# It is not needed to propagate the EXTRALIBS to the install step. +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS)$(BR2_NEEDS_GETTEXT_IF_LOCALE),yy) +XFSPROGS_CONF_OPTS += LIBS=-lintl +XFSPROGS_MAKE_OPTS = EXTRALIBS=-lintl +endif + XFSPROGS_INSTALL_TARGET_OPTS = DIST_ROOT=$(TARGET_DIR) install $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/xl2tp/0002-musl.patch b/bsp/buildroot/package/xl2tp/0002-musl.patch deleted file mode 100644 index 44238e87..00000000 --- a/bsp/buildroot/package/xl2tp/0002-musl.patch +++ /dev/null @@ -1,19 +0,0 @@ -Fix musl build - -Downloaded from -http://git.alpinelinux.org/cgit/aports/tree/main/xl2tpd/xl2tpd-compile.patch - -Signed-off-by: Bernd Kuhls - -diff -u --recursive src.orig/xl2tpd-1.3.6/xl2tpd.c src/xl2tpd-1.3.6/xl2tpd.c ---- xl2tpd-1.3.6.orig/xl2tpd.c 2014-01-15 21:58:37.000000000 -0100 -+++ xl2tpd-1.3.6/xl2tpd.c 2014-06-21 07:22:21.195278618 -0200 -@@ -33,8 +33,6 @@ - #if (__GLIBC__ < 2) - # if defined(FREEBSD) || defined(OPENBSD) - # include --# elif defined(LINUX) --# include - # elif defined(SOLARIS) - # include - # endif diff --git a/bsp/buildroot/package/xl2tp/xl2tp.hash b/bsp/buildroot/package/xl2tp/xl2tp.hash index 4b524247..152d615a 100644 --- a/bsp/buildroot/package/xl2tp/xl2tp.hash +++ b/bsp/buildroot/package/xl2tp/xl2tp.hash @@ -1,2 +1,2 @@ # locally computed -sha256 49b069aa8d873e1d8f615ccc4212351e427bf681ba453fdd211256a8345bb7fb xl2tp-v1.3.6.tar.gz +sha256 1164b574e93a44c2a2e76c0c68d8d60437bd884a6c964d9c68be1556278e3d2d xl2tp-v1.3.8.tar.gz diff --git a/bsp/buildroot/package/xl2tp/xl2tp.mk b/bsp/buildroot/package/xl2tp/xl2tp.mk index a8237164..ff802a4e 100644 --- a/bsp/buildroot/package/xl2tp/xl2tp.mk +++ b/bsp/buildroot/package/xl2tp/xl2tp.mk @@ -4,7 +4,7 @@ # ################################################################################ -XL2TP_VERSION = v1.3.6 +XL2TP_VERSION = v1.3.8 XL2TP_SITE = $(call github,xelerance,xl2tpd,$(XL2TP_VERSION)) XL2TP_DEPENDENCIES = libpcap openssl XL2TP_LICENSE = GPLv2 @@ -20,7 +20,7 @@ define XL2TP_BUILD_CMDS endef define XL2TP_INSTALL_TARGET_CMDS - $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install + $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/xmlstarlet/0001-Fix-static-linking-problem-with-libgcrypt.patch b/bsp/buildroot/package/xmlstarlet/0001-Fix-static-linking-problem-with-libgcrypt.patch deleted file mode 100644 index ea54c983..00000000 --- a/bsp/buildroot/package/xmlstarlet/0001-Fix-static-linking-problem-with-libgcrypt.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 8cee09b59a8c1ff2ebfc8c46097825d2eafdc4dd Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Sat, 16 May 2015 17:32:13 +0200 -Subject: [PATCH] Fix static linking problem with libgcrypt - -When libgcrypt is used, it is linked with libgpg-error, so we should -also test that libgpg-error is available, and include -lgpg-error in -the LIBS variable. - -This fixes build issues like: - - CCLD xml -/home/thomas/projets/buildroot/output/host/usr/bfin-buildroot-uclinux-uclibc/sysroot/usr/lib/libexslt.a(crypto.o): In function `_exsltCryptoGcryptInit': -crypto.c:(.text+0x112): undefined reference to `_gcry_check_version' -/home/thomas/projets/buildroot/output/host/usr/bfin-buildroot-uclinux-uclibc/sysroot/usr/lib/libexslt.a(crypto.o): In function `_exsltCryptoRc4DecryptFunction': -crypto.c:(.text+0x316): undefined reference to `_gcry_cipher_open' -crypto.c:(.text+0x32a): undefined reference to `_gcry_strerror' -crypto.c:(.text+0x34c): undefined reference to `_gcry_cipher_setkey' - -Which are caused by the AC_SEARCH_LIBS() test for libgcrypt to fail -due to -lgpg-error not been present in the LIBS variable. - -Note that using PKG_CHECK_MODULES() would be a much much better -replacement than this complicated handling of static libraries, but -it's a much more significant effort. - -Signed-off-by: Thomas Petazzoni ---- - configure.ac | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configure.ac b/configure.ac -index 4db0129..e378996 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -125,6 +125,7 @@ AS_IF([test "x$STATIC_LIBS" != xno], - [AC_SEARCH_LIBS([libiconv_open], [iconv], [], [], "$USER_LIBS")], "$USER_LIBS") - AC_SEARCH_LIBS([clock_gettime], [rt], [], [], "$USER_LIBS") - AC_SEARCH_LIBS([deflate], [z], [], [], "$USER_LIBS") -+ AC_SEARCH_LIBS([gpg_strerror], [gpg-error], [], [], "$USER_LIBS") - AC_SEARCH_LIBS([gcry_cipher_encrypt], [gcrypt], [], [], "$USER_LIBS") - - # Checks for inet libraries: --- -2.1.0 - diff --git a/bsp/buildroot/package/xmlstarlet/xmlstarlet.mk b/bsp/buildroot/package/xmlstarlet/xmlstarlet.mk index 7039d773..61d38f29 100644 --- a/bsp/buildroot/package/xmlstarlet/xmlstarlet.mk +++ b/bsp/buildroot/package/xmlstarlet/xmlstarlet.mk @@ -8,20 +8,18 @@ XMLSTARLET_VERSION = 1.6.1 XMLSTARLET_SITE = http://downloads.sourceforge.net/project/xmlstar/xmlstarlet/$(XMLSTARLET_VERSION) XMLSTARLET_LICENSE = MIT XMLSTARLET_LICENSE_FILES = COPYING -# We're patching configure.ac -XMLSTARLET_AUTORECONF = YES XMLSTARLET_DEPENDENCIES += libxml2 libxslt \ $(if $(BR2_PACKAGE_LIBICONV),libiconv) XMLSTARLET_CONF_OPTS += \ - --with-libxml-prefix=${STAGING_DIR}/usr \ - --with-libxslt-prefix=${STAGING_DIR}/usr \ - --with-libiconv-prefix=${STAGING_DIR}/usr + --with-libxml-prefix=$(STAGING_DIR)/usr \ + --with-libxslt-prefix=$(STAGING_DIR)/usr \ + --with-libiconv-prefix=$(STAGING_DIR)/usr ifeq ($(BR2_STATIC_LIBS),y) XMLSTARLET_CONF_OPTS += --enable-static-libs -XMLSTARLET_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libxml-2.0`" +XMLSTARLET_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libxml-2.0 libexslt` $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),-lintl)" else XMLSTARLET_CONF_OPTS += --disable-static-libs endif diff --git a/bsp/buildroot/package/xscreensaver/xscreensaver.mk b/bsp/buildroot/package/xscreensaver/xscreensaver.mk index ec714fe3..831349be 100644 --- a/bsp/buildroot/package/xscreensaver/xscreensaver.mk +++ b/bsp/buildroot/package/xscreensaver/xscreensaver.mk @@ -8,7 +8,7 @@ XSCREENSAVER_VERSION = 5.32 XSCREENSAVER_SITE = http://www.jwz.org/xscreensaver # N.B. GPLv2+ code (in the hacks/glx subdirectory) is not currently built. -XSCREENSAVER_LICENSE = MIT-like GPLv2+ +XSCREENSAVER_LICENSE = MIT-like, GPLv2+ XSCREENSAVER_LICENSE_FILES = hacks/screenhack.h hacks/glx/chessmodels.h XSCREENSAVER_DEPENDENCIES = jpeg libglade libgtk2 xlib_libX11 xlib_libXt \ diff --git a/bsp/buildroot/package/xtables-addons/xtables-addons.hash b/bsp/buildroot/package/xtables-addons/xtables-addons.hash index 323393d0..9aa9c0e5 100644 --- a/bsp/buildroot/package/xtables-addons/xtables-addons.hash +++ b/bsp/buildroot/package/xtables-addons/xtables-addons.hash @@ -1,4 +1,4 @@ -# From https://sourceforge.net/projects/xtables-addons/files/Xtables-addons/2.11/ -sha1 356abeb8ae24da67178f1612bc0fcbfd83a5e7e7 xtables-addons-2.11.tar.xz +# From https://sourceforge.net/projects/xtables-addons/files/Xtables-addons/ +sha1 70ace437ec84d9ec1970505cecf270ed0cbd273e xtables-addons-2.12.tar.xz # Calculated based on the hash above -sha256 f14f8953a9d3a70157a82883886ff6ec866c61dbea1585edb421478107279921 xtables-addons-2.11.tar.xz +sha256 c4865aa1c64c5ff173ff7b5d69425466c71f0f9b5eb5299c52c68bdcd46fa63b xtables-addons-2.12.tar.xz diff --git a/bsp/buildroot/package/xtables-addons/xtables-addons.mk b/bsp/buildroot/package/xtables-addons/xtables-addons.mk index 7fc7312a..274e6818 100644 --- a/bsp/buildroot/package/xtables-addons/xtables-addons.mk +++ b/bsp/buildroot/package/xtables-addons/xtables-addons.mk @@ -4,9 +4,9 @@ # ################################################################################ -XTABLES_ADDONS_VERSION = 2.11 +XTABLES_ADDONS_VERSION = 2.12 XTABLES_ADDONS_SOURCE = xtables-addons-$(XTABLES_ADDONS_VERSION).tar.xz -XTABLES_ADDONS_SITE = http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/$(XTABLES_ADDONS_VERSION) +XTABLES_ADDONS_SITE = http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons XTABLES_ADDONS_DEPENDENCIES = iptables linux host-pkgconf XTABLES_ADDONS_LICENSE = GPLv2+ XTABLES_ADDONS_LICENSE_FILES = LICENSE @@ -23,11 +23,11 @@ endef XTABLES_ADDONS_POST_PATCH_HOOKS += XTABLES_DISABLE_GEOIP_HELPERS define XTABLES_ADDONS_BUILD_CMDS - $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) endef define XTABLES_ADDONS_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) DESTDIR="$(TARGET_DIR)" install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) DESTDIR="$(TARGET_DIR)" install endef $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/xterm/Config.in b/bsp/buildroot/package/xterm/Config.in index e17d2c6d..f11aafad 100644 --- a/bsp/buildroot/package/xterm/Config.in +++ b/bsp/buildroot/package/xterm/Config.in @@ -4,6 +4,8 @@ config BR2_PACKAGE_XTERM select BR2_PACKAGE_XLIB_LIBXAW depends on BR2_PACKAGE_XORG7 depends on BR2_USE_MMU # fork() + # ARC toolchain issue + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC help xterm terminal emulator diff --git a/bsp/buildroot/package/xterm/xterm.hash b/bsp/buildroot/package/xterm/xterm.hash index 206bb916..bbd0e110 100644 --- a/bsp/buildroot/package/xterm/xterm.hash +++ b/bsp/buildroot/package/xterm/xterm.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 3b31b07a0c40427e9330ec3be9d1a748c72808f945953cea9e526e48be315f1b xterm-325.tgz +sha256 66fb2f6c35b342148f549c276b12a3aa3fb408e27ab6360ddec513e14376150b xterm-327.tgz diff --git a/bsp/buildroot/package/xterm/xterm.mk b/bsp/buildroot/package/xterm/xterm.mk index 3495ad94..645de92e 100644 --- a/bsp/buildroot/package/xterm/xterm.mk +++ b/bsp/buildroot/package/xterm/xterm.mk @@ -4,7 +4,7 @@ # ################################################################################ -XTERM_VERSION = 325 +XTERM_VERSION = 327 XTERM_SOURCE = xterm-$(XTERM_VERSION).tgz XTERM_SITE = http://invisible-mirror.net/archives/xterm XTERM_DEPENDENCIES = ncurses xlib_libXaw host-pkgconf @@ -22,4 +22,11 @@ else XTERM_CONF_OPTS += --disable-freetype endif +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +XTERM_DEPENDENCIES += xlib_libXinerama +XTERM_CONF_OPTS += --with-xinerama +else +XTERM_CONF_OPTS += --without-xinerama +endif + $(eval $(autotools-package)) diff --git a/bsp/buildroot/package/xutil_util-macros/xutil_util-macros.hash b/bsp/buildroot/package/xutil_util-macros/xutil_util-macros.hash index bcb6c585..0f0509a1 100644 --- a/bsp/buildroot/package/xutil_util-macros/xutil_util-macros.hash +++ b/bsp/buildroot/package/xutil_util-macros/xutil_util-macros.hash @@ -1,2 +1,2 @@ -# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/2141 -sha256 2835b11829ee634e19fa56517b4cfc52ef39acea0cd82e15f68096e27cbed0ba util-macros-1.19.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-January/002773.html +sha256 18d459400558f4ea99527bc9786c033965a3db45bf4c6a32eefdc07aa9e306a6 util-macros-1.19.1.tar.bz2 diff --git a/bsp/buildroot/package/xutil_util-macros/xutil_util-macros.mk b/bsp/buildroot/package/xutil_util-macros/xutil_util-macros.mk index 1451a069..d01b3e0d 100644 --- a/bsp/buildroot/package/xutil_util-macros/xutil_util-macros.mk +++ b/bsp/buildroot/package/xutil_util-macros/xutil_util-macros.mk @@ -4,7 +4,7 @@ # ################################################################################ -XUTIL_UTIL_MACROS_VERSION = 1.19.0 +XUTIL_UTIL_MACROS_VERSION = 1.19.1 XUTIL_UTIL_MACROS_SOURCE = util-macros-$(XUTIL_UTIL_MACROS_VERSION).tar.bz2 XUTIL_UTIL_MACROS_SITE = http://xorg.freedesktop.org/releases/individual/util XUTIL_UTIL_MACROS_LICENSE = MIT diff --git a/bsp/buildroot/package/xvisor/0001-Makefile-Fix-oldconfig-make-target.patch b/bsp/buildroot/package/xvisor/0001-Makefile-Fix-oldconfig-make-target.patch new file mode 100644 index 00000000..f0566254 --- /dev/null +++ b/bsp/buildroot/package/xvisor/0001-Makefile-Fix-oldconfig-make-target.patch @@ -0,0 +1,30 @@ +From 99bbdc042ee4c92a13edcfeaf336aa755a199d0f Mon Sep 17 00:00:00 2001 +From: Anup Patel +Date: Sun, 11 Sep 2016 19:53:40 +0530 +Subject: [PATCH] Makefile: Fix oldconfig make target + +Use "-s" instead of "-o" option of "openconf/conf" tool because +the "-o" option does not generate all required openconf files. + +Signed-off-by: Anup Patel +Signed-off-by: Eric Le Bihan +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 149a682..e05e801 100644 +--- a/Makefile ++++ b/Makefile +@@ -434,7 +434,7 @@ menuconfig: + oldconfig: + $(V)mkdir -p $(OPENCONF_TMPDIR) + $(V)$(MAKE) -C tools/openconf oldconfig +- ./tools/openconf/conf -o $(OPENCONF_INPUT) ++ ./tools/openconf/conf -s $(OPENCONF_INPUT) + + # Rule for "make savedefconfig" + .PHONY: savedefconfig +-- +2.4.11 + diff --git a/bsp/buildroot/package/xvisor/0002-openconf-do-not-check-stdin.patch b/bsp/buildroot/package/xvisor/0002-openconf-do-not-check-stdin.patch new file mode 100644 index 00000000..34b350de --- /dev/null +++ b/bsp/buildroot/package/xvisor/0002-openconf-do-not-check-stdin.patch @@ -0,0 +1,58 @@ +From 6b49c1dbe0ac43e39eec97a7e79cf5fb995747dc Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Mon, 12 Sep 2016 21:49:55 +0530 +Subject: [PATCH] openconf: do not check stdin + +Do not check if stdin is redirected when ask_silent is true, so the +`yes` program can be used to answer the questions about new values. + +Example: + + yes "" | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- oldconfig + +Signed-off-by: Eric Le Bihan +Signed-off-by: Anup Patel +--- + tools/openconf/conf.c | 12 ------------ + 1 file changed, 12 deletions(-) + +diff --git a/tools/openconf/conf.c b/tools/openconf/conf.c +index a428058..711cf0b 100644 +--- a/tools/openconf/conf.c ++++ b/tools/openconf/conf.c +@@ -65,16 +65,6 @@ static void strip(char *str) + *p-- = 0; + } + +-static void check_stdin(void) +-{ +- if (!valid_stdin) { +- printf("aborted!\n\n"); +- printf("Console input/output is redirected. "); +- printf("Run 'make oldconfig' to update configuration.\n\n"); +- exit(1); +- } +-} +- + static int conf_askvalue(struct symbol *sym, const char *def) + { + char *ret; +@@ -100,7 +90,6 @@ static int conf_askvalue(struct symbol *sym, const char *def) + printf("%s\n", def); + return 0; + } +- check_stdin(); + case ask_all: + fflush(stdout); + ret = fgets(line, 128, stdin); +@@ -306,7 +295,6 @@ static int conf_choice(struct menu *menu) + printf("%d\n", cnt); + break; + } +- check_stdin(); + case ask_all: + fflush(stdout); + ret = fgets(line, 128, stdin); +-- +2.4.11 + diff --git a/bsp/buildroot/package/xvisor/Config.in b/bsp/buildroot/package/xvisor/Config.in new file mode 100644 index 00000000..996d37af --- /dev/null +++ b/bsp/buildroot/package/xvisor/Config.in @@ -0,0 +1,68 @@ +config BR2_PACKAGE_XVISOR_ARCH_SUPPORTS + bool + default y + depends on BR2_USE_MMU + depends on BR2_arm || BR2_aarch64 || BR2_x86_64 + depends on !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV7M + +menuconfig BR2_PACKAGE_XVISOR + bool "xvisor" + depends on BR2_PACKAGE_XVISOR_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Xvisor is an open-source type-1 hypervisor, which aims at providing + a monolithic, light-weight, portable, and flexible virtualization + solution. + + http://www.xhypervisor.org/ + +if BR2_PACKAGE_XVISOR + +choice + prompt "Xvisor configuration" + default BR2_PACKAGE_XVISOR_USE_DEFCONFIG + +config BR2_PACKAGE_XVISOR_USE_DEFCONFIG + bool "Using an in-tree defconfig file" + +config BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG + bool "Using a custom (def)config file" + +endchoice + +config BR2_PACKAGE_XVISOR_DEFCONFIG + string "Defconfig name" + depends on BR2_PACKAGE_XVISOR_USE_DEFCONFIG + default "generic-v5" if BR2_ARM_CPU_ARMV5 + default "generic-v6" if BR2_ARM_CPU_ARMV6 + default "generic-v7" if BR2_ARM_CPU_ARMV7A + default "generic-v8" if BR2_AARCH64 + default "x86_64_generic" if BR2_x86_64 + help + Name of the Xvisor defconfig file to use, without the + trailing -defconfig. The defconfig is located in + arch//configs in the source tree. + +config BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG + help + Path to the Xvisor configuration file + +config BR2_PACKAGE_XVISOR_CREATE_UBOOT_IMAGE + bool "Create U-Boot image of Xvisor" + depends on BR2_arm + select BR2_PACKAGE_HOST_UBOOT_TOOLS + help + Create an image file of Xvisor loadable from Das U-Boot. + +config BR2_PACKAGE_XVISOR_BUILD_TEST_DTB + bool "Build test device-tree blobs" + help + Build test device-tree blobs for popular boards. + +endif + +comment "xvisor needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_PACKAGE_XVISOR_ARCH_SUPPORTS diff --git a/bsp/buildroot/package/xvisor/xvisor.hash b/bsp/buildroot/package/xvisor/xvisor.hash new file mode 100644 index 00000000..13335beb --- /dev/null +++ b/bsp/buildroot/package/xvisor/xvisor.hash @@ -0,0 +1,2 @@ +# Locally generated +sha256 9347080c3481fb8586d196dd51a580a57084bfea1bc425e89f7fa0da7170708a xvisor-0.2.8.tar.gz diff --git a/bsp/buildroot/package/xvisor/xvisor.mk b/bsp/buildroot/package/xvisor/xvisor.mk new file mode 100644 index 00000000..a9a5dbfa --- /dev/null +++ b/bsp/buildroot/package/xvisor/xvisor.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# xvisor +# +################################################################################ + +XVISOR_VERSION = 0.2.8 +XVISOR_SITE = http://www.xhypervisor.org/tarball +XVISOR_LICENSE = GPLv2+ +XVISOR_LICENSE_FILES = COPYING +XVISOR_INSTALL_IMAGES = YES +XVISOR_INSTALL_TARGET = NO + +XVISOR_MAKE_TARGETS = all + +ifeq ($(BR2_PACKAGE_XVISOR_BUILD_TEST_DTB),y) +XVISOR_MAKE_TARGETS += dtbs +endif + +XVISOR_KCONFIG_DOTCONFIG = build/openconf/.config + +ifeq ($(BR2_PACKAGE_XVISOR_USE_DEFCONFIG),y) +XVISOR_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_PACKAGE_XVISOR_DEFCONFIG))-defconfig +else ifeq ($(BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG),y) +XVISOR_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE)) +endif +XVISOR_KCONFIG_EDITORS = menuconfig + +XVISOR_MAKE_ENV = \ + ARCH=$(if $(BR2_x86_64),x86,$(BR2_ARCH)) \ + CROSS_COMPILE=$(TARGET_CROSS) + +XVISOR_MAKE_OPTS = $(if $(VERBOSE),VERBOSE=1) + +define XVISOR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(XVISOR_MAKE_ENV) $(MAKE) $(XVISOR_MAKE_OPTS) \ + -C $(@D) $(XVISOR_MAKE_TARGETS) +endef + +define XVISOR_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0644 -D $(@D)/build/vmm.bin $(BINARIES_DIR)/vmm.bin +endef + +ifeq ($(BR2_PACKAGE_XVISOR_CREATE_UBOOT_IMAGE),y) +XVISOR_DEPENDENCIES += host-uboot-tools +define XVISOR_CREATE_UBOOT_IMAGE + $(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux -T kernel -C none \ + -a 0x00008000 -e 0x00008000 \ + -n Xvisor -d $(BINARIES_DIR)/vmm.bin $(BINARIES_DIR)/uvmm.bin +endef +endif + +XVISOR_POST_INSTALL_IMAGES_HOOKS += XVISOR_CREATE_UBOOT_IMAGE + +# Checks to give errors that the user can understand +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_PACKAGE_XVISOR_USE_DEFCONFIG),y) +ifeq ($(call qstrip,$(BR2_PACKAGE_XVISOR_DEFCONFIG)),) +$(error No Xvisor defconfig name specified, check your BR2_PACKAGE_XVISOR_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG),y) +ifeq ($(BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE),) +$(error No Xvisor configuration file specified, check your BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE setting) +endif +endif + +endif + +$(eval $(kconfig-package)) diff --git a/bsp/buildroot/package/xvkbd/xvkbd.mk b/bsp/buildroot/package/xvkbd/xvkbd.mk index e03f7233..14e3f42f 100644 --- a/bsp/buildroot/package/xvkbd/xvkbd.mk +++ b/bsp/buildroot/package/xvkbd/xvkbd.mk @@ -12,12 +12,12 @@ XVKBD_LICENSE_FILES = README # Passing USRLIBDIR ensures that the stupid Makefile doesn't add # /usr/lib to the library search path. define XVKBD_BUILD_CMDS - $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ USRLIBDIR="$(STAGING_DIR)/usr/lib" endef define XVKBD_INSTALL_TARGET_CMDS - $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install endef XVKBD_DEPENDENCIES = \ diff --git a/bsp/buildroot/package/xz/xz.hash b/bsp/buildroot/package/xz/xz.hash index f723f7e3..20a4a474 100644 --- a/bsp/buildroot/package/xz/xz.hash +++ b/bsp/buildroot/package/xz/xz.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 6ff5f57a4b9167155e35e6da8b529de69270efb2b4cf3fbabf41a4ee793840b5 xz-5.2.2.tar.bz2 +sha256 fd9ca16de1052aac899ad3495ad20dfa906c27b4a5070102a2ec35ca3a4740c1 xz-5.2.3.tar.bz2 diff --git a/bsp/buildroot/package/xz/xz.mk b/bsp/buildroot/package/xz/xz.mk index 5e1d7c6f..40adb3d1 100644 --- a/bsp/buildroot/package/xz/xz.mk +++ b/bsp/buildroot/package/xz/xz.mk @@ -4,7 +4,7 @@ # ################################################################################ -XZ_VERSION = 5.2.2 +XZ_VERSION = 5.2.3 XZ_SOURCE = xz-$(XZ_VERSION).tar.bz2 XZ_SITE = http://tukaani.org/xz XZ_INSTALL_STAGING = YES diff --git a/bsp/buildroot/package/zbar/zbar.mk b/bsp/buildroot/package/zbar/zbar.mk index 54e11e3e..aba78d1b 100644 --- a/bsp/buildroot/package/zbar/zbar.mk +++ b/bsp/buildroot/package/zbar/zbar.mk @@ -12,6 +12,8 @@ ZBAR_LICENSE_FILES = LICENSE ZBAR_INSTALL_STAGING = YES ZBAR_AUTORECONF = YES ZBAR_DEPENDENCIES = libv4l jpeg +# add host-gettext for AM_ICONV macro +ZBAR_DEPENDENCIES += host-gettext ZBAR_CONF_OPTS = \ --without-imagemagick \ --without-qt \ diff --git a/bsp/buildroot/package/zeromq/Config.in b/bsp/buildroot/package/zeromq/Config.in index d5c9deae..53cbbb8f 100644 --- a/bsp/buildroot/package/zeromq/Config.in +++ b/bsp/buildroot/package/zeromq/Config.in @@ -1,11 +1,9 @@ -comment "zeromq needs a toolchain w/ C++, wchar, threads" - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && \ - BR2_TOOLCHAIN_HAS_THREADS) +comment "zeromq needs a toolchain w/ C++, threads" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) config BR2_PACKAGE_ZEROMQ bool "zeromq" depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_WCHAR # util-linux depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_UTIL_LINUX select BR2_PACKAGE_UTIL_LINUX_LIBUUID @@ -38,10 +36,16 @@ config BR2_PACKAGE_ZEROMQ_NORM Add support for NACK-Oriented Reliable Multicast (RFC 5740) protocol. +comment "PGM/EPGM support needs a toolchain w/ wchar" + depends on BR2_TOOLCHAIN_HAS_SYNC_2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR + config BR2_PACKAGE_ZEROMQ_PGM bool "PGM/EPGM support" depends on BR2_TOOLCHAIN_HAS_SYNC_2 depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_WCHAR # openpgm select BR2_PACKAGE_OPENPGM help Add support for Pragmatic General Multicast protocol (RFC 3208) diff --git a/bsp/buildroot/package/zic/0001-remove-dependency-check-on-version-file.patch b/bsp/buildroot/package/zic/0001-remove-dependency-check-on-version-file.patch new file mode 100644 index 00000000..f4b25905 --- /dev/null +++ b/bsp/buildroot/package/zic/0001-remove-dependency-check-on-version-file.patch @@ -0,0 +1,32 @@ +From 4ad8932f93c490d15586b1def3863e9580e6eceb Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Sat, 3 Dec 2016 13:51:50 +0000 +Subject: [PATCH] remove dependency check on version file + +$(VERSION_DEPS) includes dependencies from tzdata meaning applications +such as zic can't build from tzcode on their own. Remove the dependency +to $(VERSION_DEPS) since it is not necessary to check for version updates +in released code. This solves building zic from tzcode without needing +tzdata. + +Signed-off-by: Martin Bark +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1b714a8..00d2c09 100644 +--- a/Makefile ++++ b/Makefile +@@ -437,7 +437,7 @@ INSTALL: ALL install date.1 + cp date $(DESTDIR)$(BINDIR)/. + cp -f date.1 $(DESTDIR)$(MANDIR)/man1/. + +-version: $(VERSION_DEPS) ++version: + { (type git) >/dev/null 2>&1 && \ + V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \ + --abbrev=7 --dirty` || \ +-- +2.7.4 + diff --git a/bsp/buildroot/package/zic/zic.hash b/bsp/buildroot/package/zic/zic.hash index 360575ac..6fe27bd2 100644 --- a/bsp/buildroot/package/zic/zic.hash +++ b/bsp/buildroot/package/zic/zic.hash @@ -1,2 +1,2 @@ -# From http://mm.icann.org/pipermail/tz-announce/2016-July/000040.html -sha512 97d084f4b0a688fef097dca256083ca9948393848d77c8ee637bdd26f859150cce7d2b26fc1165a3b44b28cc1c9075e10192332261ed68990b4b21a85438b023 tzcode2016f.tar.gz +# From http://mm.icann.org/pipermail/tz-announce/2016-November/000044.html +sha512 cac19dded22ff80cd784641ac239358c28cce535ac1eb60b52b7e51c6e9e5fe5f795ea0252daf32c949dddb9c5b24d7e4456d7869aa2725d49c5af58b564822a tzcode2016j.tar.gz diff --git a/bsp/buildroot/package/zic/zic.mk b/bsp/buildroot/package/zic/zic.mk index 8a0c8dcc..ed7b04eb 100644 --- a/bsp/buildroot/package/zic/zic.mk +++ b/bsp/buildroot/package/zic/zic.mk @@ -4,7 +4,7 @@ # ################################################################################ -ZIC_VERSION = 2016f +ZIC_VERSION = 2016j ZIC_SOURCE = tzcode$(ZIC_VERSION).tar.gz ZIC_SITE = http://www.iana.org/time-zones/repository/releases ZIC_STRIP_COMPONENTS = 0 diff --git a/bsp/buildroot/package/zip/zip.mk b/bsp/buildroot/package/zip/zip.mk index 5338f881..66d94b3c 100644 --- a/bsp/buildroot/package/zip/zip.mk +++ b/bsp/buildroot/package/zip/zip.mk @@ -27,26 +27,26 @@ ZIP_TARGET_CFLAGS = \ $(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE,$(TARGET_CFLAGS)) define ZIP_BUILD_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ CFLAGS="$(ZIP_TARGET_CFLAGS) $(ZIP_CFLAGS)" \ AS="$(TARGET_CC) -c" \ -f unix/Makefile generic endef define ZIP_INSTALL_TARGET_CMDS - $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \ + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \ prefix=$(TARGET_DIR)/usr endef define HOST_ZIP_BUILD_CMDS - $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \ + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \ CFLAGS="$(HOST_CFLAGS) $(ZIP_CFLAGS)" \ AS="$(HOSTCC) -c" \ -f unix/Makefile generic endef define HOST_ZIP_INSTALL_CMDS - $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \ + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \ prefix=$(HOST_DIR)/usr endef diff --git a/bsp/buildroot/package/zlib/Config.in b/bsp/buildroot/package/zlib/Config.in index f6233048..6201aba1 100644 --- a/bsp/buildroot/package/zlib/Config.in +++ b/bsp/buildroot/package/zlib/Config.in @@ -4,4 +4,4 @@ config BR2_PACKAGE_ZLIB Standard (de)compression library. Used by things like gzip and libpng. - http://www.gzip.org/zlib/ + http://www.zlib.net diff --git a/bsp/buildroot/package/zlib/zlib.hash b/bsp/buildroot/package/zlib/zlib.hash index d6382f8d..81cb64ef 100644 --- a/bsp/buildroot/package/zlib/zlib.hash +++ b/bsp/buildroot/package/zlib/zlib.hash @@ -1,2 +1,2 @@ # From http://www.zlib.net/ -md5 28f1205d8dd2001f26fec1e8c2cebe37 zlib-1.2.8.tar.xz +sha256 4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066 zlib-1.2.11.tar.xz diff --git a/bsp/buildroot/package/zlib/zlib.mk b/bsp/buildroot/package/zlib/zlib.mk index aec9daf6..deea5a5e 100644 --- a/bsp/buildroot/package/zlib/zlib.mk +++ b/bsp/buildroot/package/zlib/zlib.mk @@ -4,9 +4,9 @@ # ################################################################################ -ZLIB_VERSION = 1.2.8 +ZLIB_VERSION = 1.2.11 ZLIB_SOURCE = zlib-$(ZLIB_VERSION).tar.xz -ZLIB_SITE = http://downloads.sourceforge.net/project/libpng/zlib/$(ZLIB_VERSION) +ZLIB_SITE = http://www.zlib.net ZLIB_LICENSE = zlib license ZLIB_LICENSE_FILES = README ZLIB_INSTALL_STAGING = YES @@ -44,19 +44,19 @@ define HOST_ZLIB_CONFIGURE_CMDS endef define ZLIB_BUILD_CMDS - $(MAKE1) -C $(@D) + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) endef define HOST_ZLIB_BUILD_CMDS - $(MAKE1) -C $(@D) + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) endef define ZLIB_INSTALL_STAGING_CMDS - $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) LDCONFIG=true install + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) LDCONFIG=true install endef define ZLIB_INSTALL_TARGET_CMDS - $(MAKE1) -C $(@D) DESTDIR=$(TARGET_DIR) LDCONFIG=true install + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(TARGET_DIR) LDCONFIG=true install endef # We don't care removing the .a from target, since it not used at link @@ -70,7 +70,7 @@ ZLIB_POST_INSTALL_STAGING_HOOKS += ZLIB_RM_STATIC_STAGING endif define HOST_ZLIB_INSTALL_CMDS - $(MAKE1) -C $(@D) LDCONFIG=true install + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) LDCONFIG=true install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/zlog/zlog.mk b/bsp/buildroot/package/zlog/zlog.mk index a60e1b0d..4f7f4692 100644 --- a/bsp/buildroot/package/zlog/zlog.mk +++ b/bsp/buildroot/package/zlog/zlog.mk @@ -11,16 +11,16 @@ ZLOG_LICENSE_FILES = COPYING ZLOG_INSTALL_STAGING = YES define ZLOG_BUILD_CMDS - $(MAKE1) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ + $(TARGET_MAKE_ENV) $(MAKE1) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ -C $(@D) all endef define ZLOG_INSTALL_STAGING_CMDS - $(MAKE) PREFIX=$(STAGING_DIR)/usr -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(STAGING_DIR)/usr -C $(@D) install endef define ZLOG_INSTALL_TARGET_CMDS - $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install endef $(eval $(generic-package)) diff --git a/bsp/buildroot/package/zmqpp/Config.in b/bsp/buildroot/package/zmqpp/Config.in index 67e89b37..04a6d241 100644 --- a/bsp/buildroot/package/zmqpp/Config.in +++ b/bsp/buildroot/package/zmqpp/Config.in @@ -3,7 +3,6 @@ config BR2_PACKAGE_ZMQPP # c++1x support depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_USE_WCHAR # util-linux depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq select BR2_PACKAGE_ZEROMQ help @@ -14,9 +13,9 @@ config BR2_PACKAGE_ZMQPP http://github.com/benjamg/zmqpp -comment "zmqpp needs a toolchain w/ C++, wchar, threads, gcc >= 4.7" - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ - !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 +comment "zmqpp needs a toolchain w/ C++, threads, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 if BR2_PACKAGE_ZMQPP @@ -24,13 +23,15 @@ config BR2_PACKAGE_ZMQPP_CLIENT bool "zmqpp client" depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost select BR2_PACKAGE_BOOST select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS help Build and install the zmqpp client, a command line tool that can be used to listen or send to zeromq sockets. -comment "zmqpp client needs a toolchain w/ dynamic library, threads" - depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS +comment "zmqpp client needs a toolchain w/ dynamic library, threads, wchar" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR endif diff --git a/bsp/buildroot/package/znc/znc.hash b/bsp/buildroot/package/znc/znc.hash index f243d4ab..36823514 100644 --- a/bsp/buildroot/package/znc/znc.hash +++ b/bsp/buildroot/package/znc/znc.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 631c46de76fe601a41ef7676bc974958e9a302b72b25fc92b4a603a25d89b827 znc-1.6.3.tar.gz +sha256 431097eb17860bfc980f3e68fdd75f98af4bdeecd793c84835c6cb11c3320d1c znc-1.6.4.tar.gz diff --git a/bsp/buildroot/package/znc/znc.mk b/bsp/buildroot/package/znc/znc.mk index 31e1bcf6..5b96ee52 100644 --- a/bsp/buildroot/package/znc/znc.mk +++ b/bsp/buildroot/package/znc/znc.mk @@ -4,7 +4,7 @@ # ################################################################################ -ZNC_VERSION = 1.6.3 +ZNC_VERSION = 1.6.4 ZNC_SITE = http://znc.in/releases ZNC_LICENSE = Apache-2.0 ZNC_LICENSE_FILES = LICENSE diff --git a/bsp/buildroot/package/zsh/0001-configure-use-user-set-pcre-config.patch b/bsp/buildroot/package/zsh/0001-configure-use-user-set-pcre-config.patch deleted file mode 100644 index d4cf59bd..00000000 --- a/bsp/buildroot/package/zsh/0001-configure-use-user-set-pcre-config.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Baruch Siach -Date: Thu, 3 Mar 2016 23:14:39 +0200 -Subject: [PATCH] configure: use user set pcre-config - -Setting a non default configuration script location is common practice when -cross compiling, since the target library might need different flags. zsh -configure scripts allows the user to set pcre-config location but doesn't -actually use it. Fix this. - -Signed-off-by: Baruch Siach ---- -Patch status: sent upstream -(http://www.zsh.org/mla/workers/2016/msg00619.html) - - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index c3bd713c126a..9947b16066b6 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -925,7 +925,7 @@ fi - if test x$enable_pcre = xyes; then - dnl pcre-config should probably be employed here - dnl AC_SEARCH_LIBS(pcre_compile, pcre) -- LIBS="`pcre-config --libs` $LIBS" -+ LIBS="`$ac_cv_prog_PCRECONF --libs` $LIBS" - fi - - dnl --------------------- --- -2.7.0 - diff --git a/bsp/buildroot/package/zsh/zsh.hash b/bsp/buildroot/package/zsh/zsh.hash index 67931626..0eeebd43 100644 --- a/bsp/buildroot/package/zsh/zsh.hash +++ b/bsp/buildroot/package/zsh/zsh.hash @@ -1,4 +1,4 @@ # From http://www.zsh.org/pub/MD5SUM -md5 afe96fde08b70e23c1cab1ca7a68fb34 zsh-5.2.tar.xz +md5 c5ba34e68fcf62a2e78adc56bf3d328a zsh-5.3.tar.xz # Calculated based on the hash above -sha256 f17916320ffaa844bbd7ce48ceeb5945fc5f3eff64b149b4229bbfbdf3795a9d zsh-5.2.tar.xz +sha256 76f82cfd5ce373cf799a03b6f395283f128430db49202e3e3f512fb5a19d6f8a zsh-5.3.tar.xz diff --git a/bsp/buildroot/package/zsh/zsh.mk b/bsp/buildroot/package/zsh/zsh.mk index aa4029f1..9d11b971 100644 --- a/bsp/buildroot/package/zsh/zsh.mk +++ b/bsp/buildroot/package/zsh/zsh.mk @@ -4,13 +4,11 @@ # ################################################################################ -ZSH_VERSION = 5.2 +ZSH_VERSION = 5.3 ZSH_SITE = http://www.zsh.org/pub ZSH_SOURCE = zsh-$(ZSH_VERSION).tar.xz ZSH_DEPENDENCIES = ncurses ZSH_CONF_OPTS = --bindir=/bin -# Patching configure.ac -ZSH_AUTORECONF = YES ZSH_LICENSE = MIT-like ZSH_LICENSE_FILES = LICENCE diff --git a/bsp/buildroot/package/zyre/Config.in b/bsp/buildroot/package/zyre/Config.in index a6aef607..21a0884e 100644 --- a/bsp/buildroot/package/zyre/Config.in +++ b/bsp/buildroot/package/zyre/Config.in @@ -1,7 +1,6 @@ config BR2_PACKAGE_ZYRE bool "zyre" depends on BR2_INSTALL_LIBSTDCPP # zeromq - depends on BR2_USE_WCHAR # zeromq depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq depends on BR2_USE_MMU # czmq select BR2_PACKAGE_CZMQ @@ -12,7 +11,6 @@ config BR2_PACKAGE_ZYRE http://zyre.org -comment "zyre needs a toolchain w/ C++, wchar, threads" +comment "zyre needs a toolchain w/ C++, threads" depends on BR2_USE_MMU - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && \ - BR2_TOOLCHAIN_HAS_THREADS) + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/bsp/buildroot/package/zyre/zyre.mk b/bsp/buildroot/package/zyre/zyre.mk index 8647456f..e47da975 100644 --- a/bsp/buildroot/package/zyre/zyre.mk +++ b/bsp/buildroot/package/zyre/zyre.mk @@ -11,6 +11,7 @@ ZYRE_LICENSE_FILES = LICENSE ZYRE_INSTALL_STAGING = YES ZYRE_DEPENDENCIES = czmq zeromq host-pkgconf ZYRE_AUTORECONF = YES +ZYRE_CONF_OPTS = --without-docs define ZYRE_CREATE_CONFIG_DIR mkdir -p $(@D)/config diff --git a/bsp/buildroot/support/dependencies/check-host-cmake.mk b/bsp/buildroot/support/dependencies/check-host-cmake.mk index 3005cfe6..8002278a 100644 --- a/bsp/buildroot/support/dependencies/check-host-cmake.mk +++ b/bsp/buildroot/support/dependencies/check-host-cmake.mk @@ -1,7 +1,18 @@ -BR2_CMAKE ?= cmake +# Versions before 3.0 are affected by the bug described in +# https://git.busybox.net/buildroot/commit/?id=ef2c1970e4bff3be3992014070392b0e6bc28bd2 +# and fixed in upstream CMake in version 3.0: +# https://cmake.org/gitweb?p=cmake.git;h=e8b8b37ef6fef094940d3384df5a1d421b9fa568 +# +# Set this to either 3.0 or higher, depending on the highest minimum +# version required by any of the packages bundled in Buildroot. If a +# package is bumped or a new one added, and it requires a higher +# version, our cmake infra will catch it and whine. +# +BR2_CMAKE_VERSION_MIN = 3.1 -ifneq (,$(call suitable-host-package,cmake,$(BR2_CMAKE))) -USE_SYSTEM_CMAKE = YES -else +BR2_CMAKE ?= cmake +ifeq ($(call suitable-host-package,cmake,\ + $(BR2_CMAKE) $(BR2_CMAKE_VERSION_MIN)),) BR2_CMAKE = $(HOST_DIR)/usr/bin/cmake +BR2_CMAKE_HOST_DEPENDENCY = host-cmake endif diff --git a/bsp/buildroot/support/dependencies/check-host-cmake.sh b/bsp/buildroot/support/dependencies/check-host-cmake.sh index 08de60c9..84c26c25 100755 --- a/bsp/buildroot/support/dependencies/check-host-cmake.sh +++ b/bsp/buildroot/support/dependencies/check-host-cmake.sh @@ -1,30 +1,47 @@ #!/bin/sh -candidate="$1" +candidate="${1}" +version_min="${2}" -cmake=`which $candidate` -if [ ! -x "$cmake" ]; then - # echo nothing: no suitable cmake found - exit 1 +major_min="${version_min%.*}" +minor_min="${version_min#*.}" + +# cmake-3.7 incorrectly handles rpath, linking to host libraries +blacklist_version="3.7" + +cmake=`which ${candidate}` +if [ ! -x "${cmake}" ]; then + # echo nothing: no suitable cmake found + exit 1 fi -version=`$cmake --version | head -n1 | cut -d\ -f3` -major=`echo "$version" | cut -d. -f1` -minor=`echo "$version" | cut -d. -f2` +# Extract version X.Y from versions in the form X.Y or X.Y.Z +# with X, Y and Z numbers with one or more digits each, e.g. +# 3.2 -> 3.2 +# 3.2.3 -> 3.2 +# 3.2.42 -> 3.2 +# 3.10 -> 3.10 +# 3.10.4 -> 3.10 +# 3.10.42 -> 3.10 +version="$(${cmake} --version \ + |sed -r -e '/.* ([[:digit:]]+\.[[:digit:]]+).*$/!d;' \ + -e 's//\1/' + )" +major="${version%.*}" +minor="${version#*.}" -# Versions before 3.0 are affected by the bug described in -# https://git.busybox.net/buildroot/commit/?id=ef2c1970e4bff3be3992014070392b0e6bc28bd2 -# and fixed in upstream CMake in version 3.0: -# https://cmake.org/gitweb?p=cmake.git;h=e8b8b37ef6fef094940d3384df5a1d421b9fa568 -major_min=3 -minor_min=0 -if [ $major -gt $major_min ]; then - echo $cmake +if [ "${version}" = "${blacklist_version}" ]; then + # echo nothing: no suitable cmake found + exit 1 +fi + +if [ ${major} -gt ${major_min} ]; then + echo "${cmake}" else - if [ $major -eq $major_min -a $minor -ge $minor_min ]; then - echo $cmake - else - # echo nothing: no suitable cmake found - exit 1 - fi + if [ ${major} -eq ${major_min} -a ${minor} -ge ${minor_min} ]; then + echo "${cmake}" + else + # echo nothing: no suitable cmake found + exit 1 + fi fi diff --git a/bsp/buildroot/support/dependencies/check-host-lzip.mk b/bsp/buildroot/support/dependencies/check-host-lzip.mk new file mode 100644 index 00000000..6acfdc6d --- /dev/null +++ b/bsp/buildroot/support/dependencies/check-host-lzip.mk @@ -0,0 +1,5 @@ +ifeq (,$(call suitable-host-package,lzip,$(LZCAT))) +DEPENDENCIES_HOST_PREREQ += host-lzip +EXTRACTOR_DEPENDENCY_PRECHECKED_EXTENSIONS += .lz +LZCAT = $(HOST_DIR)/usr/bin/lzip -d -c +endif diff --git a/bsp/buildroot/support/dependencies/check-host-lzip.sh b/bsp/buildroot/support/dependencies/check-host-lzip.sh new file mode 100755 index 00000000..4f8a2ba3 --- /dev/null +++ b/bsp/buildroot/support/dependencies/check-host-lzip.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +candidate="$1" + +lzip=`which $candidate 2>/dev/null` +if [ ! -x "$lzip" ]; then + lzip=`which lzip 2>/dev/null` + if [ ! -x "$lzip" ]; then + # echo nothing: no suitable lzip found + exit 1 + fi +fi + +echo $lzip diff --git a/bsp/buildroot/support/dependencies/check-host-xzcat.mk b/bsp/buildroot/support/dependencies/check-host-xzcat.mk index 5e08b6e8..c6d9eebe 100644 --- a/bsp/buildroot/support/dependencies/check-host-xzcat.mk +++ b/bsp/buildroot/support/dependencies/check-host-xzcat.mk @@ -3,5 +3,6 @@ ifeq (,$(call suitable-host-package,xzcat,$(XZCAT))) DEPENDENCIES_HOST_PREREQ += host-xz +EXTRACTOR_DEPENDENCY_PRECHECKED_EXTENSIONS += .xz .lzma XZCAT = $(HOST_DIR)/usr/bin/xzcat endif diff --git a/bsp/buildroot/support/dependencies/dependencies.mk b/bsp/buildroot/support/dependencies/dependencies.mk index 4334dac4..d4b0409c 100644 --- a/bsp/buildroot/support/dependencies/dependencies.mk +++ b/bsp/buildroot/support/dependencies/dependencies.mk @@ -5,8 +5,6 @@ # ################################################################################ -DEPENDENCIES_HOST_PREREQ := - # suitable-host-pkg: calls check-host-$(1).sh shell script. Parameter (2) # can be the candidate to be checked. If not present, the check-host-$(1).sh # script should use 'which' to find a candidate. The script should return diff --git a/bsp/buildroot/support/dependencies/dependencies.sh b/bsp/buildroot/support/dependencies/dependencies.sh index 3146401a..168d1960 100755 --- a/bsp/buildroot/support/dependencies/dependencies.sh +++ b/bsp/buildroot/support/dependencies/dependencies.sh @@ -69,6 +69,10 @@ check_prog_host "which" # Verify that sed is installed check_prog_host "sed" +# 'file' must be present and must be exactly /usr/bin/file, +# otherwise libtool fails in incomprehensible ways. +check_prog_host "/usr/bin/file" + # Check make MAKE=$(which make 2> /dev/null) if [ -z "$MAKE" ] ; then @@ -178,8 +182,7 @@ if test "${missing_progs}" = "yes" ; then exit 1 fi -if grep ^BR2_TOOLCHAIN_BUILDROOT=y $BR2_CONFIG > /dev/null && \ - grep ^BR2_ENABLE_LOCALE=y $BR2_CONFIG > /dev/null ; then +if grep ^BR2_NEEDS_HOST_UTF8_LOCALE=y $BR2_CONFIG > /dev/null; then if ! which locale > /dev/null ; then echo echo "You need locale support on your build machine to build a toolchain supporting locales" @@ -238,8 +241,14 @@ fi # Check that the Perl installation is complete enough for Buildroot. required_perl_modules="Data::Dumper" # Needed to build host-autoconf +required_perl_modules="$required_perl_modules ExtUtils::MakeMaker" # Used by host-libxml-parser-perl required_perl_modules="$required_perl_modules Thread::Queue" # Used by host-automake +if grep -q ^BR2_PACKAGE_MPV=y $BR2_CONFIG ; then + required_perl_modules="$required_perl_modules Math::BigInt" + required_perl_modules="$required_perl_modules Math::BigRat" +fi + # This variable will keep the modules that are missing in your system. missing_perl_modules="" diff --git a/bsp/buildroot/support/download/bzr b/bsp/buildroot/support/download/bzr index e18b01f3..75b7b415 100755 --- a/bsp/buildroot/support/download/bzr +++ b/bsp/buildroot/support/download/bzr @@ -26,6 +26,8 @@ repo="${2}" rev="${3}" basename="${4}" +shift 4 # Get rid of our options + # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _bzr() { @@ -49,5 +51,5 @@ if [ ${bzr_version} -ge ${bzr_min_version} ]; then fi _bzr export ${verbose} --root="'${basename}/'" --format=tgz \ - ${timestamp_opt} - "'${repo}'" -r "'${rev}'" \ + ${timestamp_opt} - "${@}" "'${repo}'" -r "'${rev}'" \ >"${output}" diff --git a/bsp/buildroot/support/download/cp b/bsp/buildroot/support/download/cp index 09ce3d11..0ee1f3ba 100755 --- a/bsp/buildroot/support/download/cp +++ b/bsp/buildroot/support/download/cp @@ -28,10 +28,12 @@ shift $((OPTIND-1)) output="${1}" source="${2}" +shift 2 # Get rid of our options + # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _localfiles() { eval ${LOCALFILES} "${@}" } -_localfiles ${verbose} "'${source}'" "'${output}'" +_localfiles ${verbose} "${@}""'${source}'" "'${output}'" diff --git a/bsp/buildroot/support/download/cvs b/bsp/buildroot/support/download/cvs index 7980389a..50050ab1 100755 --- a/bsp/buildroot/support/download/cvs +++ b/bsp/buildroot/support/download/cvs @@ -26,6 +26,8 @@ rev="${3}" rawname="${4}" basename="${5}" +shift 5 # Get rid of our options + # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _cvs() { @@ -48,6 +50,6 @@ fi export TZ=UTC _cvs ${verbose} -z3 -d"'${repo}'" \ - co -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'" + co "${@}" -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'" tar czf "${output}" "${basename}" diff --git a/bsp/buildroot/support/download/git b/bsp/buildroot/support/download/git index 416cd1ba..79214118 100755 --- a/bsp/buildroot/support/download/git +++ b/bsp/buildroot/support/download/git @@ -30,6 +30,8 @@ repo="${2}" cset="${3}" basename="${4}" +shift 4 # Get rid of our options + # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _git() { @@ -46,7 +48,7 @@ _git() { git_done=0 if [ -n "$(_git ls-remote "'${repo}'" "'${cset}'" 2>&1)" ]; then printf "Doing shallow clone\n" - if _git clone ${verbose} --depth 1 -b "'${cset}'" "'${repo}'" "'${basename}'"; then + if _git clone ${verbose} "${@}" --depth 1 -b "'${cset}'" "'${repo}'" "'${basename}'"; then git_done=1 else printf "Shallow clone failed, falling back to doing a full clone\n" @@ -54,7 +56,7 @@ if [ -n "$(_git ls-remote "'${repo}'" "'${cset}'" 2>&1)" ]; then fi if [ ${git_done} -eq 0 ]; then printf "Doing full clone\n" - _git clone ${verbose} "'${repo}'" "'${basename}'" + _git clone ${verbose} "${@}" "'${repo}'" "'${basename}'" fi pushd "${basename}" >/dev/null @@ -90,6 +92,8 @@ rm -rf .git popd >/dev/null # Generate the archive, sort with the C locale so that it is reproducible +find "${basename}" -not -type d >"${basename}.list" +LC_ALL=C sort <"${basename}.list" >"${basename}.list.sorted" tar cf - --numeric-owner --owner=0 --group=0 --mtime="${date}" \ - -T <(find "${basename}" -not -type d |LC_ALL=C sort) \ -|gzip -n >"${output}" + -T "${basename}.list.sorted" >"${output}.tar" +gzip -n <"${output}.tar" >"${output}" diff --git a/bsp/buildroot/support/download/hg b/bsp/buildroot/support/download/hg index 25cb4e9d..3af01690 100755 --- a/bsp/buildroot/support/download/hg +++ b/bsp/buildroot/support/download/hg @@ -25,13 +25,15 @@ repo="${2}" cset="${3}" basename="${4}" +shift 4 # Get rid of our options + # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _hg() { eval ${HG} "${@}" } -_hg clone ${verbose} --noupdate "'${repo}'" "'${basename}'" +_hg clone ${verbose} "${@}" --noupdate "'${repo}'" "'${basename}'" _hg archive ${verbose} --repository "'${basename}'" --type tgz \ --prefix "'${basename}'" --rev "'${cset}'" \ diff --git a/bsp/buildroot/support/download/scp b/bsp/buildroot/support/download/scp index 95cf502b..825fd41c 100755 --- a/bsp/buildroot/support/download/scp +++ b/bsp/buildroot/support/download/scp @@ -23,10 +23,12 @@ shift $((OPTIND-1)) output="${1}" url="${2}" +shift 2 # Get rid of our options + # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _scp() { eval ${SCP} "${@}" } -_scp ${verbose} "'${url}'" "'${output}'" +_scp ${verbose} "${@}" "'${url}'" "'${output}'" diff --git a/bsp/buildroot/support/download/svn b/bsp/buildroot/support/download/svn index 4dcdd062..77abf3d0 100755 --- a/bsp/buildroot/support/download/svn +++ b/bsp/buildroot/support/download/svn @@ -25,12 +25,14 @@ repo="${2}" rev="${3}" basename="${4}" +shift 4 # Get rid of our options + # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _svn() { eval ${SVN} "${@}" } -_svn export ${verbose} "'${repo}@${rev}'" "'${basename}'" +_svn export ${verbose} "${@}" "'${repo}@${rev}'" "'${basename}'" tar czf "${output}" "${basename}" diff --git a/bsp/buildroot/support/download/wget b/bsp/buildroot/support/download/wget index 0fc7ffa9..768de904 100755 --- a/bsp/buildroot/support/download/wget +++ b/bsp/buildroot/support/download/wget @@ -23,10 +23,12 @@ shift $((OPTIND-1)) output="${1}" url="${2}" +shift 2 # Get rid of our options + # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _wget() { eval ${WGET} "${@}" } -_wget ${verbose} -O "'${output}'" "'${url}'" +_wget ${verbose} "${@}" -O "'${output}'" "'${url}'" diff --git a/bsp/buildroot/support/dummy-external/external.mk b/bsp/buildroot/support/dummy-external/external.mk deleted file mode 100644 index e69de29b..00000000 diff --git a/bsp/buildroot/support/misc/Vagrantfile b/bsp/buildroot/support/misc/Vagrantfile index cf269fea..33ca6b80 100644 --- a/bsp/buildroot/support/misc/Vagrantfile +++ b/bsp/buildroot/support/misc/Vagrantfile @@ -5,14 +5,14 @@ ################################################################################ # Buildroot version to use -RELEASE='2016.08' +RELEASE='2017.02' ### Change here for more memory/cores ### VM_MEMORY=2048 VM_CORES=1 Vagrant.configure('2') do |config| - config.vm.box = 'ubuntu/trusty64' + config.vm.box = 'bento/ubuntu-16.04' config.vm.provider :vmware_fusion do |v, override| v.vmx['memsize'] = VM_MEMORY @@ -41,16 +41,20 @@ Vagrant.configure('2') do |config| end end - config.vm.provision 'shell', inline: - "sudo dpkg --add-architecture i386 - sudo apt-get -q update - sudo apt-get -q -y install build-essential libncurses5-dev \ - git bzr cvs mercurial subversion libc6:i386 unzip - sudo apt-get -q -y autoremove - sudo apt-get -q -y clean" + config.vm.provision 'shell', privileged: true, inline: + "sed -i 's|deb http://us.archive.ubuntu.com/ubuntu/|deb mirror://mirrors.ubuntu.com/mirrors.txt|g' /etc/apt/sources.list + dpkg --add-architecture i386 + apt-get -q update + apt-get purge -q -y snapd lxcfs lxd ubuntu-core-launcher snap-confine + apt-get -q -y install build-essential libncurses5-dev \ + git bzr cvs mercurial subversion libc6:i386 unzip bc + apt-get -q -y autoremove + apt-get -q -y clean + update-locale LC_ALL=C" config.vm.provision 'shell', privileged: false, inline: "echo 'Downloading and extracting buildroot #{RELEASE}' wget -q -c http://buildroot.org/downloads/buildroot-#{RELEASE}.tar.gz tar axf buildroot-#{RELEASE}.tar.gz" + end diff --git a/bsp/buildroot/support/misc/toolchainfile.cmake.in b/bsp/buildroot/support/misc/toolchainfile.cmake.in index 649b52d7..d4252dd9 100644 --- a/bsp/buildroot/support/misc/toolchainfile.cmake.in +++ b/bsp/buildroot/support/misc/toolchainfile.cmake.in @@ -13,9 +13,35 @@ string(REPLACE "/usr/share/buildroot" "" RELOCATED_HOST_DIR ${CMAKE_CURRENT_LIST set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR @@CMAKE_SYSTEM_PROCESSOR@@) -set(CMAKE_C_FLAGS "@@TARGET_CFLAGS@@ ${CMAKE_C_FLAGS}" CACHE STRING "Buildroot CFLAGS") -set(CMAKE_CXX_FLAGS "@@TARGET_CXXFLAGS@@ ${CMAKE_CXX_FLAGS}" CACHE STRING "Buildroot CXXFLAGS") -set(CMAKE_EXE_LINKER_FLAGS "@@TARGET_LDFLAGS@@ ${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "Buildroot LDFLAGS") +# Set the {C,CXX}FLAGS appended by CMake depending on the build type +# defined by Buildroot. CMake defaults these variables with -g and/or +# -O options, and they are appended at the end of the argument list, +# so the Buildroot options are overridden. Therefore these variables +# have to be cleared, so that the options passed in CMAKE_C_FLAGS do +# apply. +# +# Note: +# if the project forces some of these flag variables, Buildroot is +# screwed up and there is nothing Buildroot can do about that :( +set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "Debug CFLAGS") +set(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "Debug CXXFLAGS") +set(CMAKE_C_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CFLAGS") +set(CMAKE_CXX_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CXXFLAGS") + +# Build type from the Buildroot configuration +set(CMAKE_BUILD_TYPE @@CMAKE_BUILD_TYPE@@ CACHE STRING "Buildroot build configuration") + +# Buildroot defaults flags. +# If you are using this toolchainfile.cmake file outside of Buildroot and +# want to customize the compiler/linker flags, then: +# * set them all on the cmake command line, e.g.: +# cmake -DCMAKE_C_FLAGS="@@TARGET_CFLAGS@@ -Dsome_custom_flag" ... +# * and make sure the project's CMake code extends them like this if needed: +# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dsome_definitions") +set(CMAKE_C_FLAGS "@@TARGET_CFLAGS@@" CACHE STRING "Buildroot CFLAGS") +set(CMAKE_CXX_FLAGS "@@TARGET_CXXFLAGS@@" CACHE STRING "Buildroot CXXFLAGS") +set(CMAKE_EXE_LINKER_FLAGS "@@TARGET_LDFLAGS@@" CACHE STRING "Buildroot LDFLAGS for executables") + set(CMAKE_INSTALL_SO_NO_EXE 0) set(CMAKE_PROGRAM_PATH "${RELOCATED_HOST_DIR}/usr/bin") @@ -31,6 +57,8 @@ set(ENV{PKG_CONFIG_SYSROOT_DIR} "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") set(CMAKE_C_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CC@@") set(CMAKE_CXX_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CXX@@") if(@@TOOLCHAIN_HAS_FORTRAN@@) - set(CMAKE_Fortran_FLAGS "@@TARGET_FCFLAGS@@ ${CMAKE_Fortran_FLAGS}" CACHE STRING "Buildroot FCFLAGS") + set(CMAKE_Fortran_FLAGS_DEBUG "" CACHE STRING "Debug Fortran FLAGS") + set(CMAKE_Fortran_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release Fortran FLAGS") + set(CMAKE_Fortran_FLAGS "@@TARGET_FCFLAGS@@" CACHE STRING "Buildroot FCFLAGS") set(CMAKE_Fortran_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_FC@@") endif() diff --git a/bsp/buildroot/support/misc/utils.mk b/bsp/buildroot/support/misc/utils.mk new file mode 100644 index 00000000..c4431933 --- /dev/null +++ b/bsp/buildroot/support/misc/utils.mk @@ -0,0 +1,115 @@ +################################################################################ +# +# This file contains various utility macros and variables used about +# everywhere in make constructs. +# +################################################################################ + +# Strip quotes and then whitespaces +qstrip = $(strip $(subst ",,$(1))) +#")) + +# Variables for use in Make constructs +comma := , +empty := +space := $(empty) $(empty) + +# Case conversion macros. This is inspired by the 'up' macro from gmsl +# (http://gmsl.sf.net). It is optimised very heavily because these macros +# are used a lot. It is about 5 times faster than forking a shell and tr. +# +# The caseconvert-helper creates a definition of the case conversion macro. +# After expansion by the outer $(eval ), the UPPERCASE macro is defined as: +# $(strip $(eval __tmp := $(1)) $(eval __tmp := $(subst a,A,$(__tmp))) ... ) +# In other words, every letter is substituted one by one. +# +# The caseconvert-helper allows us to create this definition out of the +# [FROM] and [TO] lists, so we don't need to write down every substition +# manually. The uses of $ and $$ quoting are chosen in order to do as +# much expansion as possible up-front. +# +# Note that it would be possible to conceive a slightly more optimal +# implementation that avoids the use of __tmp, but that would be even +# more unreadable and is not worth the effort. + +[FROM] := a b c d e f g h i j k l m n o p q r s t u v w x y z - . +[TO] := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ _ + +define caseconvert-helper +$(1) = $$(strip \ + $$(eval __tmp := $$(1))\ + $(foreach c, $(2),\ + $$(eval __tmp := $$(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),$$(__tmp))))\ + $$(__tmp)) +endef + +$(eval $(call caseconvert-helper,UPPERCASE,$(join $(addsuffix :,$([FROM])),$([TO])))) +$(eval $(call caseconvert-helper,LOWERCASE,$(join $(addsuffix :,$([TO])),$([FROM])))) + +# Reverse the orders of words in a list. Again, inspired by the gmsl +# 'reverse' macro. +reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1))) $(firstword $(1))) + +# Sanitize macro cleans up generic strings so it can be used as a filename +# and in rules. Particularly useful for VCS version strings, that can contain +# slashes, colons (OK in filenames but not in rules), and spaces. +sanitize = $(subst $(space),_,$(subst :,_,$(subst /,_,$(strip $(1))))) + +# MESSAGE Macro -- display a message in bold type +MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(call qstrip,$(1))$(TERM_RESET)" +TERM_BOLD := $(shell tput smso 2>/dev/null) +TERM_RESET := $(shell tput rmso 2>/dev/null) + +# Utility functions for 'find' +# findfileclauses(filelist) => -name 'X' -o -name 'Y' +findfileclauses = $(call notfirstword,$(patsubst %,-o -name '%',$(1))) +# finddirclauses(base, dirlist) => -path 'base/dirX' -o -path 'base/dirY' +finddirclauses = $(call notfirstword,$(patsubst %,-o -path '$(1)/%',$(2))) + +# Miscellaneous utility functions +# notfirstword(wordlist): returns all but the first word in wordlist +notfirstword = $(wordlist 2,$(words $(1)),$(1)) + +# Needed for the foreach loops to loop over the list of hooks, so that +# each hook call is properly separated by a newline. +define sep + + +endef + +PERCENT = % +QUOTE = ' +# ' # Meh... syntax-highlighting + +# This macro properly escapes a command string, then prints it with printf: +# +# - first, backslash '\' are self-escaped, so that they do not escape +# the following char and so that printf properly outputs a backslash; +# +# - next, single quotes are escaped by closing an existing one, adding +# an escaped one, and re-openning a new one (see below for the reason); +# +# - then '%' signs are self-escaped so that the printf does not interpret +# them as a format specifier, in case the variable contains an actual +# printf with a format; +# +# - finally, $(sep) is replaced with the literal '\n' so that make does +# not break on the so-expanded variable, but so that the printf does +# correctly output an LF. +# +# Note: this must be escaped in this order to avoid over-escaping the +# previously escaped elements. +# +# Once everything has been escaped, it is passed between single quotes +# (that's why the single-quotes are escaped they way they are, above, +# and why the dollar sign is not escaped) to printf(1). A trailing +# newline is apended, too. +# +# Note: leading or trailing spaces are *not* stripped. +# +define PRINTF + printf '$(subst $(sep),\n,\ + $(subst $(PERCENT),$(PERCENT)$(PERCENT),\ + $(subst $(QUOTE),$(QUOTE)\$(QUOTE)$(QUOTE),\ + $(subst \,\\,$(1)))))\n' +endef diff --git a/bsp/buildroot/support/scripts/apply-patches.sh b/bsp/buildroot/support/scripts/apply-patches.sh index 06cb847f..7ccb39dd 100755 --- a/bsp/buildroot/support/scripts/apply-patches.sh +++ b/bsp/buildroot/support/scripts/apply-patches.sh @@ -118,8 +118,6 @@ function apply_patch { if [ $? != 0 ] ; then echo "Patch failed! Please fix ${patch}!" exit 1 - else - echo "Patch OK" fi } diff --git a/bsp/buildroot/support/scripts/br2-external b/bsp/buildroot/support/scripts/br2-external new file mode 100755 index 00000000..26bcac8a --- /dev/null +++ b/bsp/buildroot/support/scripts/br2-external @@ -0,0 +1,221 @@ +#!/bin/bash +set -e + +# This script must be able to run with bash-3.1, so it can't use +# associative arrays. Instead, it emulates them using 'eval'. It +# can however use indexed arrays, supported since at least bash-3.0. + +# The names of the br2-external trees, once validated. +declare -a BR2_EXT_NAMES + +# URL to manual for help in converting old br2-external trees. +# Escape '#' so that make does not consider it a comment. +MANUAL_URL='https://buildroot.org/manual.html\#br2-external-converting' + +main() { + local OPT OPTARG + local br2_ext ofile ofmt + + while getopts :hkmo: OPT; do + case "${OPT}" in + h) help; exit 0;; + o) ofile="${OPTARG}";; + k) ofmt="kconfig";; + m) ofmt="mk";; + :) error "option '%s' expects a mandatory argument\n" "${OPTARG}";; + \?) error "unknown option '%s'\n" "${OPTARG}";; + esac + done + # Forget options; keep only positional args + shift $((OPTIND-1)) + + case "${ofmt}" in + mk|kconfig) + ;; + *) error "no output format specified (-m/-k)\n";; + esac + if [ -z "${ofile}" ]; then + error "no output file specified (-o)\n" + fi + + exec >"${ofile}" + + do_validate ${@//:/ } + + do_${ofmt} +} + +# Validates the br2-external trees passed as arguments. Makes each of +# them canonical and store them in the global arrays BR2_EXT_NAMES +# and BR2_EXT_PATHS. +# +# Note: since this script is always first called from Makefile context +# to generate the Makefile fragment before it is called to generate the +# Kconfig snippet, we're sure that any error in do_validate will be +# interpreted in Makefile context. Going up to generating the Kconfig +# snippet means that there were no error. +# +do_validate() { + local br2_ext + + if [ ${#} -eq 0 ]; then + # No br2-external tree is valid + return + fi + + for br2_ext in "${@}"; do + do_validate_one "${br2_ext}" + done +} + +do_validate_one() { + local br2_ext="${1}" + local br2_name br2_desc n d + + if [ ! -d "${br2_ext}" ]; then + error "'%s': no such file or directory\n" "${br2_ext}" + fi + if [ ! -r "${br2_ext}" -o ! -x "${br2_ext}" ]; then + error "'%s': permission denied\n" "${br2_ext}" + fi + if [ ! -f "${br2_ext}/external.desc" ]; then + error "'%s': does not have a name (in 'external.desc'). See %s\n" \ + "${br2_ext}" "${MANUAL_URL}" + fi + br2_name="$(sed -r -e '/^name: +(.*)$/!d; s//\1/' "${br2_ext}/external.desc")" + if [ -z "${br2_name}" ]; then + error "'%s/external.desc': does not define the name\n" "${br2_ext}" + fi + # Only ASCII chars in [A-Za-z0-9_] are permitted + n="$(sed -r -e 's/[A-Za-z0-9_]//g' <<<"${br2_name}" )" + if [ -n "${n}" ]; then + # Escape '$' so that it gets printed + error "'%s': name '%s' contains invalid chars: '%s'\n" \ + "${br2_ext}" "${br2_name//\$/\$\$}" "${n//\$/\$\$}" + fi + eval d="\"\${BR2_EXT_PATHS_${br2_name}}\"" + if [ -n "${d}" ]; then + error "'%s': name '%s' is already used in '%s'\n" \ + "${br2_ext}" "${br2_name}" "${d}" + fi + br2_desc="$(sed -r -e '/^desc: +(.*)$/!d; s//\1/' "${br2_ext}/external.desc")" + if [ ! -f "${br2_ext}/external.mk" ]; then + error "'%s/external.mk': no such file or directory\n" "${br2_ext}" + fi + if [ ! -f "${br2_ext}/Config.in" ]; then + error "'%s/Config.in': no such file or directory\n" "${br2_ext}" + fi + + # Register this br2-external tree, use an absolute canonical path + br2_ext="$( cd "${br2_ext}"; pwd )" + BR2_EXT_NAMES+=( "${br2_name}" ) + eval BR2_EXT_PATHS_${br2_name}="\"\${br2_ext}\"" + eval BR2_EXT_DESCS_${br2_name}="\"\${br2_desc:-\${br2_name}}\"" +} + +# Generate the .mk snippet that defines makefile variables +# for the br2-external tree +do_mk() { + local br2_name br2_ext + + printf '#\n# Automatically generated file; DO NOT EDIT.\n#\n' + printf '\n' + + printf 'BR2_EXTERNAL ?=' + for br2_name in "${BR2_EXT_NAMES[@]}"; do + eval br2_ext="\"\${BR2_EXT_PATHS_${br2_name}}\"" + printf ' %s' "${br2_ext}" + done + printf '\n' + + printf 'BR2_EXTERNAL_NAMES = \n' + printf 'BR2_EXTERNAL_DIRS = \n' + printf 'BR2_EXTERNAL_MKS = \n' + + if [ ${#BR2_EXT_NAMES[@]} -eq 0 ]; then + printf '\n' + printf '# No br2-external tree defined.\n' + return + fi + + for br2_name in "${BR2_EXT_NAMES[@]}"; do + eval br2_desc="\"\${BR2_EXT_DESCS_${br2_name}}\"" + eval br2_ext="\"\${BR2_EXT_PATHS_${br2_name}}\"" + printf '\n' + printf 'BR2_EXTERNAL_NAMES += %s\n' "${br2_name}" + printf 'BR2_EXTERNAL_DIRS += %s\n' "${br2_ext}" + printf 'BR2_EXTERNAL_MKS += %s/external.mk\n' "${br2_ext}" + printf 'export BR2_EXTERNAL_%s_PATH = %s\n' "${br2_name}" "${br2_ext}" + printf 'export BR2_EXTERNAL_%s_DESC = %s\n' "${br2_name}" "${br2_desc}" + done +} + +# Generate the kconfig snippet for the br2-external tree. +do_kconfig() { + local br2_name br2_ext + + printf '#\n# Automatically generated file; DO NOT EDIT.\n#\n' + printf '\n' + + if [ ${#BR2_EXT_NAMES[@]} -eq 0 ]; then + printf '# No br2-external tree defined.\n' + return + fi + + printf 'menu "External options"\n' + printf '\n' + + for br2_name in "${BR2_EXT_NAMES[@]}"; do + eval br2_desc="\"\${BR2_EXT_DESCS_${br2_name}}\"" + eval br2_ext="\"\${BR2_EXT_PATHS_${br2_name}}\"" + if [ ${#BR2_EXT_NAMES[@]} -gt 1 ]; then + printf 'menu "%s"\n' "${br2_desc}" + fi + printf 'comment "%s (in %s)"\n' "${br2_desc}" "${br2_ext}" + printf 'config BR2_EXTERNAL_%s_PATH\n' "${br2_name}" + printf '\tstring\n' + printf '\tdefault "%s"\n' "${br2_ext}" + printf 'source "%s/Config.in"\n' "${br2_ext}" + if [ ${#BR2_EXT_NAMES[@]} -gt 1 ]; then + printf 'endmenu # %s\n' "${br2_name}" + fi + printf '\n' + done + + printf "endmenu # User-provided options\n" +} + +help() { + cat <<-_EOF_ + Usage: + ${my_name} <-m|-k> -o FILE PATH + + With -m, ${my_name} generates the makefile fragment that defines + variables related to the br2-external trees passed as positional + arguments. + + With -k, ${my_name} generates the kconfig snippet to include the + configuration options specified in the br2-external trees passed + as positional arguments. + + Using -k and -m together is not possible. The last one wins. + + Options: + -m Generate the makefile fragment. + + -k Generate the kconfig snippet. + + -o FILE + FILE in which to generate the kconfig snippet or makefile + fragment. + + Returns: + 0 If no error + !0 If any error + _EOF_ +} + +error() { local fmt="${1}"; shift; printf "BR2_EXTERNAL_ERROR = ${fmt}" "${@}"; exit 1; } + +my_name="${0##*/}" +main "${@}" diff --git a/bsp/buildroot/support/scripts/fix-configure-powerpc64.sh b/bsp/buildroot/support/scripts/fix-configure-powerpc64.sh new file mode 100755 index 00000000..ad710422 --- /dev/null +++ b/bsp/buildroot/support/scripts/fix-configure-powerpc64.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# This is a script to find, and correct, a problem with old versions of +# configure that affect powerpc64 and powerpc64le. + +# The issue causes configure to incorrectly determine that shared library +# support is not present in the linker. This causes the package to build a +# static library rather than a dynamic one and although the build will succeed, +# it may cause packages that link with the static library it to fail due to +# undefined symbols. + +# This script searches for files named 'configure' that appear to have this +# issue (by searching for a known bad pattern) and patching them. + +set -e + +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 2 +fi + +srcdir="$1" +files=$(cd "$srcdir" && find . -name configure \ +-exec grep -qF 'Generated by GNU Autoconf' {} \; \ +-exec grep -qF 'ppc*-*linux*|powerpc*-*linux*)' {} \; -print) + +# --ignore-whitespace is needed because some packages have included +# copies of configure scripts where tabs have been replaced with spaces. +for c in $files; do + patch --ignore-whitespace "$srcdir"/"$c" <<'EOF' +--- a/configure 2016-11-16 15:31:46.097447271 +1100 ++++ b/configure 2008-07-21 12:17:23.000000000 +1000 +@@ -4433,7 +4433,10 @@ + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; +- ppc*-*linux*|powerpc*-*linux*) ++ powerpcle-*linux*) ++ LD="${LD-ld} -m elf64lppc" ++ ;; ++ powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) +EOF +done + diff --git a/bsp/buildroot/support/scripts/gen-manual-lists.py b/bsp/buildroot/support/scripts/gen-manual-lists.py deleted file mode 100644 index d231eda1..00000000 --- a/bsp/buildroot/support/scripts/gen-manual-lists.py +++ /dev/null @@ -1,513 +0,0 @@ -## gen-manual-lists.py -## -## This script generates the following Buildroot manual appendices: -## - the package tables (one for the target, the other for host tools); -## - the deprecated items. -## -## Author(s): -## - Samuel Martin -## -## Copyright (C) 2013 Samuel Martin -## -## 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 -## - -from __future__ import print_function -from __future__ import unicode_literals - -import os -import re -import sys -import datetime -from argparse import ArgumentParser - -try: - import kconfiglib -except ImportError: - message = """ -Could not find the module 'kconfiglib' in the PYTHONPATH: -""" - message += "\n".join([" {0}".format(path) for path in sys.path]) - message += """ - -Make sure the Kconfiglib directory is in the PYTHONPATH, then relaunch the -script. - -You can get kconfiglib from: - https://github.com/ulfalizer/Kconfiglib - - -""" - sys.stderr.write(message) - raise - - -def get_symbol_subset(root, filter_func): - """ Return a generator of kconfig items. - - :param root_item: Root item of the generated subset of items - :param filter_func: Filter function - - """ - if hasattr(root, "get_items"): - get_items = root.get_items - elif hasattr(root, "get_top_level_items"): - get_items = root.get_top_level_items - else: - message = "The symbol does not contain any subset of symbols" - raise Exception(message) - for item in get_items(): - if item.is_symbol(): - if not filter_func(item): - continue - yield item - elif item.is_menu() or item.is_choice(): - for i in get_symbol_subset(item, filter_func): - yield i - - -def get_symbol_parents(item, root=None, enable_choice=False): - """ Return the list of the item's parents. The last item of the list is - the closest parent, the first the furthest. - - :param item: Item from which the parent list is generated - :param root: Root item stopping the search (not included in the - parent list) - :param enable_choice: Flag enabling choices to appear in the parent list - - """ - parent = item.get_parent() - parents = [] - while parent and parent != root: - if parent.is_menu(): - parents.append(parent.get_title()) - elif enable_choice and parent.is_choice(): - parents.append(parent.get_prompts()[0]) - parent = parent.get_parent() - if isinstance(root, kconfiglib.Menu) or \ - (enable_choice and isinstance(root, kconfiglib.Choice)): - parents.append("") # Dummy empty parent to get a leading arrow -> - parents.reverse() - return parents - - -def format_asciidoc_table(root, get_label_func, filter_func=lambda x: True, - format_func=lambda x: x, - enable_choice=False, sorted=True, - item_label=None): - """ Return the asciidoc formatted table of the items and their location. - - :param root: Root item of the item subset - :param get_label_func: Item's label getter function - :param filter_func: Filter function to apply on the item subset - :param format_func: Function to format a symbol and the table header - :param enable_choice: Enable choices to appear as part of the item's - location - :param sorted: Flag to alphabetically sort the table - - """ - - lines = [] - for item in get_symbol_subset(root, filter_func): - lines.append(format_func(what="symbol", symbol=item, root=root, - get_label_func=get_label_func, - enable_choice=enable_choice)) - if sorted: - lines.sort(key=lambda x: x.lower()) - table = ":halign: center\n\n" - width, columns = format_func(what="layout") - table = "[width=\"{0}\",cols=\"{1}\",options=\"header\"]\n".format(width, columns) - table += "|===================================================\n" - table += format_func(what="header", header=item_label, root=root) - table += "\n" + "".join(lines) + "\n" - table += "|===================================================\n" - return table - - -class Buildroot: - """ Buildroot configuration object. - - """ - root_config = "Config.in" - package_dirname = "package" - package_prefixes = ["BR2_PACKAGE_", "BR2_PACKAGE_HOST_"] - re_pkg_prefix = re.compile(r"^(" + "|".join(package_prefixes) + ").*") - deprecated_symbol = "BR2_DEPRECATED" - list_in = """\ -// -// Automatically generated list for Buildroot manual. -// - -{table} -""" - - list_info = { - 'target-packages': { - 'filename': "package-list", - 'root_menu': "Target packages", - 'filter': "_is_real_package", - 'format': "_format_symbol_prompt_location", - 'sorted': True, - }, - 'host-packages': { - 'filename': "host-package-list", - 'root_menu': "Host utilities", - 'filter': "_is_real_package", - 'format': "_format_symbol_prompt", - 'sorted': True, - }, - 'virtual-packages': { - 'filename': "virtual-package-list", - 'root_menu': "Target packages", - 'filter': "_is_virtual_package", - 'format': "_format_symbol_virtual", - 'sorted': True, - }, - 'deprecated': { - 'filename': "deprecated-list", - 'root_menu': None, - 'filter': "_is_deprecated_feature", - 'format': "_format_symbol_prompt_location", - 'sorted': False, - }, - } - - def __init__(self): - self.base_dir = os.environ.get("TOPDIR") - self.output_dir = os.environ.get("O") - self.package_dir = os.path.join(self.base_dir, self.package_dirname) - self.config = kconfiglib.Config(os.path.join(self.base_dir, - self.root_config), - self.base_dir) - self._deprecated = self.config.get_symbol(self.deprecated_symbol) - - self.gen_date = datetime.datetime.utcnow() - self.br_version_full = os.environ.get("BR2_VERSION_FULL") - if self.br_version_full and self.br_version_full.endswith("-git"): - self.br_version_full = self.br_version_full[:-4] - if not self.br_version_full: - self.br_version_full = "undefined" - - def _get_package_symbols(self, package_name): - """ Return a tuple containing the target and host package symbol. - - """ - symbols = re.sub("[-+.]", "_", package_name) - symbols = symbols.upper() - symbols = tuple([prefix + symbols for prefix in self.package_prefixes]) - return symbols - - def _is_deprecated(self, symbol): - """ Return True if the symbol is marked as deprecated, otherwise False. - - """ - # This also catches BR2_DEPRECATED_SINCE_xxxx_xx - return bool([ symbol for x in symbol.get_referenced_symbols() - if x.get_name().startswith(self._deprecated.get_name()) ]) - - def _is_package(self, symbol, type='real'): - """ Return True if the symbol is a package or a host package, otherwise - False. - - :param symbol: The symbol to check - :param type: Limit to 'real' or 'virtual' types of packages, - with 'real' being the default. - Note: only 'real' is (implictly) handled for now - - """ - if not symbol.is_symbol(): - return False - if type == 'real' and not symbol.get_prompts(): - return False - if type == 'virtual' and symbol.get_prompts(): - return False - if not self.re_pkg_prefix.match(symbol.get_name()): - return False - pkg_name = self._get_pkg_name(symbol) - - pattern = "^(HOST_)?" + pkg_name + "$" - pattern = re.sub("_", ".", pattern) - pattern = re.compile(pattern, re.IGNORECASE) - # Here, we cannot just check for the location of the Config.in because - # of the "virtual" package. - # - # So, to check that a symbol is a package (not a package option or - # anything else), we check for the existence of the package *.mk file. - # - # By the way, to actually check for a package, we should grep all *.mk - # files for the following regex: - # "\$\(eval \$\((host-)?(generic|autotools|cmake)-package\)\)" - # - # Implementation details: - # - # * The package list is generated from the *.mk file existence, the - # first time this function is called. Despite the memory consumption, - # this list is stored because the execution time of this script is - # noticeably shorter than rescanning the package sub-tree for each - # symbol. - if not hasattr(self, "_package_list"): - pkg_list = [] - for _, _, files in os.walk(self.package_dir): - for file_ in (f for f in files if f.endswith(".mk")): - pkg_list.append(re.sub(r"(.*?)\.mk", r"\1", file_)) - setattr(self, "_package_list", pkg_list) - for pkg in getattr(self, "_package_list"): - if type == 'real': - if pattern.match(pkg) and not self._exists_virt_symbol(pkg): - return True - if type == 'virtual': - if pattern.match('has_' + pkg): - return True - return False - - def _is_real_package(self, symbol): - return self._is_package(symbol, 'real') - - def _is_virtual_package(self, symbol): - return self._is_package(symbol, 'virtual') - - def _is_deprecated_feature(self, symbol): - return symbol.get_prompts() and self._is_deprecated(symbol) - - def _exists_virt_symbol(self, pkg_name): - """ Return True if a symbol exists that defines the package as - a virtual package, False otherwise - - :param pkg_name: The name of the package, for which to check if - a symbol exists defining it as a virtual package - - """ - virt_pattern = "BR2_PACKAGE_HAS_" + pkg_name + "$" - virt_pattern = re.sub("_", ".", virt_pattern) - virt_pattern = re.compile(virt_pattern, re.IGNORECASE) - for sym in self.config: - if virt_pattern.match(sym.get_name()): - return True - return False - - def _get_pkg_name(self, symbol): - """ Return the package name of the specified symbol. - - :param symbol: The symbol to get the package name of - - """ - - return re.sub("BR2_PACKAGE_(HOST_)?(.*)", r"\2", symbol.get_name()) - - def _get_symbol_label(self, symbol, mark_deprecated=True): - """ Return the label (a.k.a. prompt text) of the symbol. - - :param symbol: The symbol - :param mark_deprecated: Append a 'deprecated' to the label - - """ - label = symbol.get_prompts()[0] - if self._is_deprecated(symbol) and mark_deprecated: - label += " *(deprecated)*" - return label - - def _format_symbol_prompt(self, what=None, symbol=None, root=None, - enable_choice=False, header=None, - get_label_func=lambda x: x): - if what == "layout": - return ( "30%", "^1" ) - - if what == "header": - return "| {0:<40}\n".format(header) - - if what == "symbol": - return "| {0:<40}\n".format(get_label_func(symbol)) - - message = "Invalid argument 'what': '%s'\n" % str(what) - message += "Allowed values are: 'layout', 'header' and 'symbol'" - raise Exception(message) - - def _format_symbol_prompt_location(self, what=None, symbol=None, root=None, - enable_choice=False, header=None, - get_label_func=lambda x: x): - if what == "layout": - return ( "100%", "^1,4" ) - - if what == "header": - if hasattr(root, "get_title"): - loc_label = get_symbol_parents(root, None, enable_choice=enable_choice) - loc_label += [root.get_title(), "..."] - else: - loc_label = ["Location"] - return "| {0:<40} <| {1}\n".format(header, " -> ".join(loc_label)) - - if what == "symbol": - parents = get_symbol_parents(symbol, root, enable_choice) - return "| {0:<40} <| {1}\n".format(get_label_func(symbol), - " -> ".join(parents)) - - message = "Invalid argument 'what': '%s'\n" % str(what) - message += "Allowed values are: 'layout', 'header' and 'symbol'" - raise Exception(message) - - def _format_symbol_virtual(self, what=None, symbol=None, root=None, - enable_choice=False, header=None, - get_label_func=lambda x: "?"): - def _symbol_is_legacy(symbol): - selects = [ s.get_name() for s in symbol.get_selected_symbols() ] - return ("BR2_LEGACY" in selects) - - def _get_parent_package(sym): - if self._is_real_package(sym): - return None - # Trim the symbol name from its last component (separated with - # underscores), until we either find a symbol which is a real - # package, or until we have no component (i.e. just 'BR2') - name = sym.get_name() - while name != "BR2": - name = name.rsplit("_", 1)[0] - s = self.config.get_symbol(name) - if s is None: - continue - if self._is_real_package(s): - return s - return None - - def _get_providers(symbol): - providers = list() - for sym in self.config: - if not sym.is_symbol(): - continue - if _symbol_is_legacy(sym): - continue - selects = sym.get_selected_symbols() - if not selects: - continue - for s in selects: - if s == symbol: - if sym.get_prompts(): - l = self._get_symbol_label(sym,False) - parent_pkg = _get_parent_package(sym) - if parent_pkg is not None: - l = self._get_symbol_label(parent_pkg, False) \ - + " (w/ " + l + ")" - providers.append(l) - else: - providers.extend(_get_providers(sym)) - return providers - - if what == "layout": - return ( "100%", "^1,4,4" ) - - if what == "header": - return "| {0:<20} <| {1:<32} <| Providers\n".format("Virtual packages", "Symbols") - - if what == "symbol": - pkg = re.sub(r"^BR2_PACKAGE_HAS_(.+)$", r"\1", symbol.get_name()) - providers = _get_providers(symbol) - - return "| {0:<20} <| {1:<32} <| {2}\n".format(pkg.lower(), - '+' + symbol.get_name() + '+', - ", ".join(providers)) - - message = "Invalid argument 'what': '%s'\n" % str(what) - message += "Allowed values are: 'layout', 'header' and 'symbol'" - raise Exception(message) - - - def print_list(self, list_type, enable_choice=True, enable_deprecated=True, - dry_run=False, output=None): - """ Print the requested list. If not dry run, then the list is - automatically written in its own file. - - :param list_type: The list type to be generated - :param enable_choice: Flag enabling choices to appear in the list - :param enable_deprecated: Flag enabling deprecated items to appear in - the package lists - :param dry_run: Dry run (print the list in stdout instead of - writing the list file - - """ - def _get_menu(title): - """ Return the first symbol menu matching the given title. - - """ - menus = self.config.get_menus() - menu = [m for m in menus if m.get_title().lower() == title.lower()] - if not menu: - message = "No such menu: '{0}'".format(title) - raise Exception(message) - return menu[0] - - list_config = self.list_info[list_type] - root_title = list_config.get('root_menu') - if root_title: - root_item = _get_menu(root_title) - else: - root_item = self.config - filter_ = getattr(self, list_config.get('filter')) - filter_func = lambda x: filter_(x) - format_func = getattr(self, list_config.get('format')) - if not enable_deprecated and list_type != "deprecated": - filter_func = lambda x: filter_(x) and not self._is_deprecated(x) - mark_depr = list_type != "deprecated" - get_label = lambda x: self._get_symbol_label(x, mark_depr) - item_label = "Features" if list_type == "deprecated" else "Packages" - - table = format_asciidoc_table(root_item, get_label, - filter_func=filter_func, - format_func=format_func, - enable_choice=enable_choice, - sorted=list_config.get('sorted'), - item_label=item_label) - - content = self.list_in.format(table=table) - - if dry_run: - print(content) - return - - if not output: - output_dir = self.output_dir - if not output_dir: - print("Warning: Undefined output directory.") - print("\tUse source directory as output location.") - output_dir = self.base_dir - output = os.path.join(output_dir, - list_config.get('filename') + ".txt") - if not os.path.exists(os.path.dirname(output)): - os.makedirs(os.path.dirname(output)) - print("Writing the {0} list in:\n\t{1}".format(list_type, output)) - with open(output, 'w') as fout: - fout.write(content) - - -if __name__ == '__main__': - list_types = ['target-packages', 'host-packages', 'virtual-packages', 'deprecated'] - parser = ArgumentParser() - parser.add_argument("list_type", nargs="?", choices=list_types, - help="""\ -Generate the given list (generate all lists if unspecified)""") - parser.add_argument("-n", "--dry-run", dest="dry_run", action='store_true', - help="Output the generated list to stdout") - parser.add_argument("--output-target", dest="output_target", - help="Output target package file") - parser.add_argument("--output-host", dest="output_host", - help="Output host package file") - parser.add_argument("--output-virtual", dest="output_virtual", - help="Output virtual package file") - parser.add_argument("--output-deprecated", dest="output_deprecated", - help="Output deprecated file") - args = parser.parse_args() - lists = [args.list_type] if args.list_type else list_types - buildroot = Buildroot() - for list_name in lists: - output = getattr(args, "output_" + list_name.split("-", 1)[0]) - buildroot.print_list(list_name, dry_run=args.dry_run, output=output) diff --git a/bsp/buildroot/support/scripts/get-developers b/bsp/buildroot/support/scripts/get-developers new file mode 100755 index 00000000..40ed08ff --- /dev/null +++ b/bsp/buildroot/support/scripts/get-developers @@ -0,0 +1,83 @@ +#!/usr/bin/env python + +import argparse +import getdeveloperlib + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument('patches', metavar='P', type=argparse.FileType('r'), nargs='*', + help='list of patches (use - to read patches from stdin)') + parser.add_argument('-a', dest='architecture', action='store', + help='find developers in charge of this architecture') + parser.add_argument('-p', dest='package', action='store', + help='find developers in charge of this package') + parser.add_argument('-c', dest='check', action='store_const', + const=True, help='list files not handled by any developer') + return parser.parse_args() + +def __main__(): + devs = getdeveloperlib.parse_developers() + if devs is None: + sys.exit(1) + args = parse_args() + + # Check that only one action is given + action = 0 + if args.architecture is not None: + action += 1 + if args.package is not None: + action += 1 + if args.check: + action += 1 + if len(args.patches) != 0: + action += 1 + if action > 1: + print("Cannot do more than one action") + return + if action == 0: + print("No action specified") + return + + # Handle the check action + if args.check: + files = getdeveloperlib.check_developers(devs) + for f in files: + print(f) + + # Handle the architecture action + if args.architecture is not None: + for dev in devs: + if args.architecture in dev.architectures: + print(dev.name) + return + + # Handle the package action + if args.package is not None: + for dev in devs: + if args.package in dev.packages: + print(dev.name) + return + + # Handle the patches action + if len(args.patches) != 0: + (files, infras) = getdeveloperlib.analyze_patches(args.patches) + matching_devs = set() + for dev in devs: + # See if we have developers matching by package name + for f in files: + if dev.hasfile(f): + matching_devs.add(dev.name) + # See if we have developers matching by package infra + for i in infras: + if i in dev.infras: + matching_devs.add(dev.name) + + result = "--to buildroot@buildroot.org" + for dev in matching_devs: + result += " --cc \"%s\"" % dev + + if result != "": + print("git send-email %s" % result) + +__main__() + diff --git a/bsp/buildroot/support/scripts/getdeveloperlib.py b/bsp/buildroot/support/scripts/getdeveloperlib.py new file mode 100644 index 00000000..65191073 --- /dev/null +++ b/bsp/buildroot/support/scripts/getdeveloperlib.py @@ -0,0 +1,200 @@ +import sys +import os +import re +import argparse +import glob +import subprocess + +# +# Patch parsing functions +# + +FIND_INFRA_IN_PATCH = re.compile("^\+\$\(eval \$\((host-)?([^-]*)-package\)\)$") + +def analyze_patch(patch): + """Parse one patch and return the list of files modified, added or + removed by the patch.""" + files = set() + infras = set() + for line in patch: + # If the patch is adding a package, find which infra it is + m = FIND_INFRA_IN_PATCH.match(line) + if m: + infras.add(m.group(2)) + if not line.startswith("+++ "): + continue + line.strip() + fname = line[line.find("/") + 1 : ].strip() + if fname == "dev/null": + continue + files.add(fname) + return (files, infras) + +FIND_INFRA_IN_MK = re.compile("^\$\(eval \$\((host-)?([^-]*)-package\)\)$") + +def fname_get_package_infra(fname): + """Checks whether the file name passed as argument is a Buildroot .mk + file describing a package, and find the infrastructure it's using.""" + if not fname.endswith(".mk"): + return None + + if not os.path.exists(fname): + return None + + with open(fname, "r") as f: + for l in f: + l = l.strip() + m = FIND_INFRA_IN_MK.match(l) + if m: + return m.group(2) + return None + +def get_infras(files): + """Search in the list of files for .mk files, and collect the package + infrastructures used by those .mk files.""" + infras = set() + for fname in files: + infra = fname_get_package_infra(fname) + if infra: + infras.add(infra) + return infras + +def analyze_patches(patches): + """Parse a list of patches and returns the list of files modified, + added or removed by the patches, as well as the list of package + infrastructures used by those patches (if any)""" + allfiles = set() + allinfras = set() + for patch in patches: + (files, infras) = analyze_patch(patch) + allfiles = allfiles | files + allinfras = allinfras | infras + allinfras = allinfras | get_infras(allfiles) + return (allfiles, allinfras) + +# +# DEVELOPERS file parsing functions +# + +class Developer: + def __init__(self, name, files): + self.name = name + self.files = files + self.packages = parse_developer_packages(files) + self.architectures = parse_developer_architectures(files) + self.infras = parse_developer_infras(files) + + def hasfile(self, f): + f = os.path.abspath(f) + for fs in self.files: + if f.startswith(fs): + return True + return False + +def parse_developer_packages(fnames): + """Given a list of file patterns, travel through the Buildroot source + tree to find which packages are implemented by those file + patterns, and return a list of those packages.""" + packages = set() + for fname in fnames: + for root, dirs, files in os.walk(fname): + for f in files: + path = os.path.join(root, f) + if fname_get_package_infra(path): + pkg = os.path.splitext(f)[0] + packages.add(pkg) + return packages + +def parse_arches_from_config_in(fname): + """Given a path to an arch/Config.in.* file, parse it to get the list + of BR2_ARCH values for this architecture.""" + arches = set() + with open(fname, "r") as f: + parsing_arches = False + for l in f: + l = l.strip() + if l == "config BR2_ARCH": + parsing_arches = True + continue + if parsing_arches: + m = re.match("^\s*default \"([^\"]*)\".*", l) + if m: + arches.add(m.group(1)) + else: + parsing_arches = False + return arches + +def parse_developer_architectures(fnames): + """Given a list of file names, find the ones starting by + 'arch/Config.in.', and use that to determine the architecture a + developer is working on.""" + arches = set() + for fname in fnames: + if not re.match("^.*/arch/Config\.in\..*$", fname): + continue + arches = arches | parse_arches_from_config_in(fname) + return arches + +def parse_developer_infras(fnames): + infras = set() + for fname in fnames: + m = re.match("^package/pkg-([^.]*).mk$", fname) + if m: + infras.add(m.group(1)) + return infras + +def parse_developers(basepath=None): + """Parse the DEVELOPERS file and return a list of Developer objects.""" + developers = [] + linen = 0 + if basepath == None: + basepath = os.getcwd() + with open(os.path.join(basepath, "DEVELOPERS"), "r") as f: + files = [] + name = None + for l in f: + l = l.strip() + if l.startswith("#"): + continue + elif l.startswith("N:"): + if name is not None or len(files) != 0: + print("Syntax error in DEVELOPERS file, line %d" % linen) + name = l[2:].strip() + elif l.startswith("F:"): + fname = l[2:].strip() + dev_files = glob.glob(os.path.join(basepath, fname)) + if len(dev_files) == 0: + print("WARNING: '%s' doesn't match any file" % fname) + files += dev_files + elif l == "": + if not name: + continue + developers.append(Developer(name, files)) + files = [] + name = None + else: + print("Syntax error in DEVELOPERS file, line %d: '%s'" % (linen, l)) + return None + linen += 1 + # handle last developer + if name is not None: + developers.append(Developer(name, files)) + return developers + +def check_developers(developers, basepath=None): + """Look at the list of files versioned in Buildroot, and returns the + list of files that are not handled by any developer""" + if basepath == None: + basepath = os.getcwd() + cmd = ["git", "--git-dir", os.path.join(basepath, ".git"), "ls-files"] + files = subprocess.check_output(cmd).strip().split("\n") + unhandled_files = [] + for f in files: + handled = False + for d in developers: + if d.hasfile(os.path.join(basepath, f)): + handled = True + break + if not handled: + unhandled_files.append(f) + return unhandled_files diff --git a/bsp/buildroot/support/scripts/graph-depends b/bsp/buildroot/support/scripts/graph-depends index cb00383c..fbd59170 100755 --- a/bsp/buildroot/support/scripts/graph-depends +++ b/bsp/buildroot/support/scripts/graph-depends @@ -26,6 +26,8 @@ import subprocess import argparse from fnmatch import fnmatch +import pkgutil + # Modes of operation: MODE_FULL = 1 # draw full dependency graph for all selected packages MODE_PKG = 2 # draw dependency graph for a given package @@ -63,6 +65,10 @@ parser.add_argument("--transitive", dest="transitive", action='store_true', default=False) parser.add_argument("--no-transitive", dest="transitive", action='store_false', help="Draw (do not draw) transitive dependencies") +parser.add_argument("--direct", dest="direct", action='store_true', default=True, + help="Draw direct dependencies (the default)") +parser.add_argument("--reverse", dest="direct", action='store_false', + help="Draw reverse dependencies") args = parser.parse_args() check_only = args.check_only @@ -95,6 +101,16 @@ else: transitive = args.transitive +if args.direct: + get_depends_func = pkgutil.get_depends + arrow_dir = "forward" +else: + if mode == MODE_FULL: + sys.stderr.write("--reverse needs a package\n") + sys.exit(1) + get_depends_func = pkgutil.get_rdepends + arrow_dir = "back" + # Get the colours: we need exactly three colours, # so no need not split more than 4 # We'll let 'dot' validate the colours... @@ -108,28 +124,6 @@ host_colour = colours[2] allpkgs = [] -# Execute the "make -show-version" command to get the version of a given -# list of packages, and return the version formatted as a Python dictionary. -def get_version(pkgs): - sys.stderr.write("Getting version for %s\n" % pkgs) - cmd = ["make", "-s", "--no-print-directory" ] - for pkg in pkgs: - cmd.append("%s-show-version" % pkg) - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) - output = p.communicate()[0] - if p.returncode != 0: - sys.stderr.write("Error getting version %s\n" % pkgs) - sys.exit(1) - output = output.split("\n") - if len(output) != len(pkgs) + 1: - sys.stderr.write("Error getting version\n") - sys.exit(1) - version = {} - for i in range(0, len(pkgs)): - pkg = pkgs[i] - version[pkg] = output[i] - return version - # Execute the "make show-targets" command to get the list of the main # Buildroot PACKAGES and return it formatted as a Python list. This # list is used as the starting point for full dependency graphs @@ -144,33 +138,6 @@ def get_targets(): return [] return output.split(' ') -# Execute the "make -show-depends" command to get the list of -# dependencies of a given list of packages, and return the list of -# dependencies formatted as a Python dictionary. -def get_depends(pkgs): - sys.stderr.write("Getting dependencies for %s\n" % pkgs) - cmd = ["make", "-s", "--no-print-directory" ] - for pkg in pkgs: - cmd.append("%s-show-depends" % pkg) - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) - output = p.communicate()[0] - if p.returncode != 0: - sys.stderr.write("Error getting dependencies %s\n" % pkgs) - sys.exit(1) - output = output.split("\n") - if len(output) != len(pkgs) + 1: - sys.stderr.write("Error getting dependencies\n") - sys.exit(1) - deps = {} - for i in range(0, len(pkgs)): - pkg = pkgs[i] - pkg_deps = output[i].split(" ") - if pkg_deps == ['']: - deps[pkg] = [] - else: - deps[pkg] = pkg_deps - return deps - # Recursive function that builds the tree of dependencies for a given # list of packages. The dependencies are built in a list called # 'dependencies', which contains tuples of the form (pkg1 -> @@ -190,7 +157,7 @@ def get_all_depends(pkgs): if len(filtered_pkgs) == 0: return [] - depends = get_depends(filtered_pkgs) + depends = get_depends_func(filtered_pkgs) deps = set() for pkg in filtered_pkgs: @@ -363,7 +330,7 @@ if check_only: sys.exit(0) dict_deps = remove_extra_deps(dict_deps) -dict_version = get_version([pkg for pkg in allpkgs +dict_version = pkgutil.get_version([pkg for pkg in allpkgs if pkg != "all" and not pkg.startswith("root")]) # Print the attributes of a node: label and fill-color @@ -418,7 +385,7 @@ def print_pkg_deps(depth, pkg): add = False break if add: - outfile.write("%s -> %s\n" % (pkg_node_name(pkg), pkg_node_name(d))) + outfile.write("%s -> %s [dir=%s]\n" % (pkg_node_name(pkg), pkg_node_name(d), arrow_dir)) print_pkg_deps(depth+1, d) # Start printing the graph data diff --git a/bsp/buildroot/support/scripts/kconfiglib.py b/bsp/buildroot/support/scripts/kconfiglib.py deleted file mode 100644 index 0a688b54..00000000 --- a/bsp/buildroot/support/scripts/kconfiglib.py +++ /dev/null @@ -1,3541 +0,0 @@ -# This is Kconfiglib, a Python library for scripting, debugging, and extracting -# information from Kconfig-based configuration systems. To view the -# documentation, run -# -# $ pydoc kconfiglib -# -# or, if you prefer HTML, -# -# $ pydoc -w kconfiglib -# -# The examples/ subdirectory contains examples, to be run with e.g. -# -# $ make scriptconfig SCRIPT=Kconfiglib/examples/print_tree.py -# -# Look in testsuite.py for the test suite. - -""" -Kconfiglib is a Python library for scripting and extracting information from -Kconfig-based configuration systems. Features include the following: - - - Symbol values and properties can be looked up and values assigned - programmatically. - - .config files can be read and written. - - Expressions can be evaluated in the context of a Kconfig configuration. - - Relations between symbols can be quickly determined, such as finding all - symbols that reference a particular symbol. - - Highly compatible with the scripts/kconfig/*conf utilities. The test suite - automatically compares outputs between Kconfiglib and the C implementation - for a large number of cases. - -For the Linux kernel, scripts are run using - - $ make scriptconfig [ARCH=] SCRIPT= [SCRIPT_ARG=] - -Using the 'scriptconfig' target ensures that required environment variables -(SRCARCH, ARCH, srctree, KERNELVERSION, etc.) are set up correctly. - -Scripts receive the name of the Kconfig file to load in sys.argv[1]. As of -Linux 4.1.0-rc5, this is always "Kconfig" from the kernel top-level directory. -If an argument is provided with SCRIPT_ARG, it appears as sys.argv[2]. - -To get an interactive Python prompt with Kconfiglib preloaded and a Config -object 'c' created, run - - $ make iscriptconfig [ARCH=] - -Kconfiglib currently uses Python 2. For (i)scriptconfig, the Python interpreter -to use can be passed in PYTHONCMD. It defaults to 'python', but PyPy works too -and might be faster for long-running jobs. - -The examples/ directory contains short example scripts, which can be run with -e.g. - - $ make scriptconfig SCRIPT=Kconfiglib/examples/print_tree.py - -or - - $ make scriptconfig SCRIPT=Kconfiglib/examples/help_grep.py SCRIPT_ARG=kernel - -testsuite.py contains the test suite. See the top of the script for how to run -it. - -Credits: Written by Ulf "Ulfalizer" Magnusson - -Send bug reports, suggestions and other feedback to ulfalizer a.t Google's -email service. Don't wrestle with internal APIs. Tell me what you need and I -might add it in a safe way as a client API instead.""" - -import os -import re -import sys - -# File layout: -# -# Public classes -# Public functions -# Internal classes -# Internal functions -# Internal global constants - -# -# Public classes -# - -class Config(object): - - """Represents a Kconfig configuration, e.g. for i386 or ARM. This is the - set of symbols and other items appearing in the configuration together with - their values. Creating any number of Config objects -- including for - different architectures -- is safe; Kconfiglib has no global state.""" - - # - # Public interface - # - - def __init__(self, filename = "Kconfig", base_dir = None, - print_warnings = True, print_undef_assign = False): - """Creates a new Config object, representing a Kconfig configuration. - Raises Kconfig_Syntax_Error on syntax errors. - - filename (default: "Kconfig") -- The base Kconfig file of the - configuration. For the Linux kernel, you'll probably want - "Kconfig" from the top-level directory, as environment - variables will make sure the right Kconfig is included from - there (arch//Kconfig). If you are using - kconfiglib via 'make scriptconfig', the filename of the base - base Kconfig file will be in sys.argv[1]. - - base_dir (default: None) -- The base directory relative to which - 'source' statements within Kconfig files will work. For the - Linux kernel this should be the top-level directory of the - kernel tree. $-references to existing environment variables - will be expanded. - - If None (the default), the environment variable 'srctree' will - be used if set, and the current directory otherwise. 'srctree' - is set by the Linux makefiles to the top-level kernel - directory. A default of "." would not work with an alternative - build directory. - - print_warnings (default: True) -- Set to True if warnings related to - this configuration should be printed to stderr. This can - be changed later with Config.set_print_warnings(). It is - provided as a constructor argument since warnings might - be generated during parsing. - - print_undef_assign (default: False) -- Set to True if informational - messages related to assignments to undefined symbols - should be printed to stderr for this configuration. - Can be changed later with - Config.set_print_undef_assign().""" - - # The set of all symbols, indexed by name (a string) - self.syms = {} - - # Python 2/3 compatibility hack. This is the only one needed. - if sys.version_info[0] >= 3: - self.syms_iter = self.syms.values - else: - self.syms_iter = self.syms.itervalues - - # The set of all defined symbols in the configuration in the order they - # appear in the Kconfig files. This excludes the special symbols n, m, - # and y as well as symbols that are referenced but never defined. - self.kconfig_syms = [] - - # The set of all named choices (yes, choices can have names), indexed - # by name (a string) - self.named_choices = {} - - def register_special_symbol(type_, name, val): - sym = Symbol() - sym.is_special_ = True - sym.is_defined_ = True - sym.config = self - sym.name = name - sym.type = type_ - sym.cached_val = val - self.syms[name] = sym - return sym - - # The special symbols n, m and y, used as shorthand for "n", "m" and - # "y" - self.n = register_special_symbol(TRISTATE, "n", "n") - self.m = register_special_symbol(TRISTATE, "m", "m") - self.y = register_special_symbol(TRISTATE, "y", "y") - - # DEFCONFIG_LIST uses this - register_special_symbol(STRING, "UNAME_RELEASE", os.uname()[2]) - - # The symbol with "option defconfig_list" set, containing a list of - # default .config files - self.defconfig_sym = None - - # See Symbol.get_(src)arch() - self.arch = os.environ.get("ARCH") - self.srcarch = os.environ.get("SRCARCH") - - # See Config.__init__(). We need this for get_defconfig_filename(). - self.srctree = os.environ.get("srctree") - if self.srctree is None: - self.srctree = "." - - self.filename = filename - if base_dir is None: - self.base_dir = self.srctree - else: - self.base_dir = os.path.expandvars(base_dir) - - # The 'mainmenu' text - self.mainmenu_text = None - - # The filename of the most recently loaded .config file - self.config_filename = None - - # The textual header of the most recently loaded .config, uncommented - self.config_header = None - - self.print_warnings = print_warnings - self.print_undef_assign = print_undef_assign - - # Lists containing all choices, menus and comments in the configuration - - self.choices = [] - self.menus = [] - self.comments = [] - - # For parsing routines that stop when finding a line belonging to a - # different construct, these holds that line and the tokenized version - # of that line. The purpose is to avoid having to re-tokenize the line, - # which is inefficient and causes problems when recording references to - # symbols. - self.end_line = None - self.end_line_tokens = None - - # See the comment in _parse_expr(). - self.parse_expr_cur_sym_or_choice = None - self.parse_expr_line = None - self.parse_expr_filename = None - self.parse_expr_linenr = None - self.parse_expr_transform_m = None - - # Parse the Kconfig files - self.top_block = self._parse_file(filename, None, None, None) - - # Build Symbol.dep for all symbols - self._build_dep() - - def load_config(self, filename, replace = True): - """Loads symbol values from a file in the familiar .config format. - Equivalent to calling Symbol.set_user_value() to set each of the - values. - - "# CONFIG_FOO is not set" within a .config file is treated specially - and sets the user value of FOO to 'n'. The C implementation works - the same way. - - filename -- The .config file to load. $-references to environment - variables will be expanded. For scripts to work even - when an alternative build directory is used with the - Linux kernel, you need to refer to the top-level kernel - directory with "$srctree". - - replace (default: True) -- True if the configuration should replace - the old configuration; False if it should add to it.""" - - # Put this first so that a missing file doesn't screw up our state - filename = os.path.expandvars(filename) - line_feeder = _FileFeed(filename) - - self.config_filename = filename - - # - # Read header - # - - def is_header_line(line): - return line is not None and line.startswith("#") and \ - not _unset_re_match(line) - - self.config_header = None - - line = line_feeder.peek_next() - if is_header_line(line): - self.config_header = "" - while is_header_line(line_feeder.peek_next()): - self.config_header += line_feeder.get_next()[1:] - # Remove trailing newline - if self.config_header.endswith("\n"): - self.config_header = self.config_header[:-1] - - # - # Read assignments. Hotspot for some workloads. - # - - def warn_override(filename, linenr, name, old_user_val, new_user_val): - self._warn('overriding the value of {0}. ' - 'Old value: "{1}", new value: "{2}".' - .format(name, old_user_val, new_user_val), - filename, linenr) - - # Invalidate everything to keep things simple. It might be possible to - # improve performance for the case where multiple configurations are - # loaded by only invalidating a symbol (and its dependent symbols) if - # the new user value differs from the old. One complication would be - # that symbols not mentioned in the .config must lose their user value - # when replace = True, which is the usual case. - if replace: - self.unset_user_values() - else: - self._invalidate_all() - - while 1: - line = line_feeder.get_next() - if line is None: - return - - line = line.rstrip() - - set_match = _set_re_match(line) - if set_match: - name, val = set_match.groups() - - if val.startswith(('"', "'")): - if len(val) < 2 or val[-1] != val[0]: - _parse_error(line, "malformed string literal", - line_feeder.get_filename(), - line_feeder.get_linenr()) - # Strip quotes and remove escapings. The unescaping - # producedure should be safe since " can only appear as \" - # inside the string. - val = val[1:-1].replace('\\"', '"').replace("\\\\", "\\") - - if name in self.syms: - sym = self.syms[name] - if sym.user_val is not None: - warn_override(line_feeder.get_filename(), - line_feeder.get_linenr(), - name, sym.user_val, val) - - if sym.is_choice_symbol_: - user_mode = sym.parent.user_mode - if user_mode is not None and user_mode != val: - self._warn("assignment to {0} changes mode of containing " - 'choice from "{1}" to "{2}".' - .format(name, val, user_mode), - line_feeder.get_filename(), - line_feeder.get_linenr()) - - sym._set_user_value_no_invalidate(val, True) - else: - if self.print_undef_assign: - _stderr_msg('note: attempt to assign the value "{0}" to the ' - "undefined symbol {1}.".format(val, name), - line_feeder.get_filename(), - line_feeder.get_linenr()) - else: - unset_match = _unset_re_match(line) - if unset_match: - name = unset_match.group(1) - if name in self.syms: - sym = self.syms[name] - if sym.user_val is not None: - warn_override(line_feeder.get_filename(), - line_feeder.get_linenr(), - name, sym.user_val, "n") - - sym._set_user_value_no_invalidate("n", True) - - def write_config(self, filename, header = None): - """Writes out symbol values in the familiar .config format. - - Kconfiglib makes sure the format matches what the C implementation - would generate, down to whitespace. This eases testing. - - filename -- The filename under which to save the configuration. - - header (default: None) -- A textual header that will appear at the - beginning of the file, with each line commented out - automatically. None means no header.""" - - # already_written is set when _make_conf() is called on a symbol, so - # that symbols defined in multiple locations only get one entry in the - # .config. We need to reset it prior to writing out a new .config. - for sym in self.syms_iter(): - sym.already_written = False - - with open(filename, "w") as f: - # Write header - if header is not None: - f.write(_comment(header)) - f.write("\n") - - # Write configuration. - - # Passing a list around to all the nodes and appending to it to - # avoid copying was surprisingly a lot slower with PyPy, and about - # as fast with Python. Passing the file around was slower too. Been - # a while since I last measured though. - - f.write("\n".join(_make_block_conf(self.top_block))) - f.write("\n") - - def get_kconfig_filename(self): - """Returns the name of the (base) kconfig file this configuration was - loaded from.""" - return self.filename - - def get_arch(self): - """Returns the value the environment variable ARCH had at the time the - Config instance was created, or None if ARCH was not set. For the - kernel, this corresponds to the architecture being built for, with - values such as "i386" or "mips".""" - return self.arch - - def get_srcarch(self): - """Returns the value the environment variable SRCARCH had at the time - the Config instance was created, or None if SRCARCH was not set. For - the kernel, this corresponds to the particular arch/ subdirectory - containing architecture-specific code.""" - return self.srcarch - - def get_srctree(self): - """Returns the value the environment variable srctree had at the time - the Config instance was created, or None if srctree was not defined. - This variable points to the source directory and is used when building - in a separate directory.""" - return self.srctree - - def get_config_filename(self): - """Returns the filename of the most recently loaded configuration file, - or None if no configuration has been loaded.""" - return self.config_filename - - def get_mainmenu_text(self): - """Returns the text of the 'mainmenu' statement (with $-references to - symbols replaced by symbol values), or None if the configuration has no - 'mainmenu' statement.""" - return None if self.mainmenu_text is None else \ - self._expand_sym_refs(self.mainmenu_text) - - def get_defconfig_filename(self): - """Returns the name of the defconfig file, which is the first existing - file in the list given in a symbol having 'option defconfig_list' set. - $-references to symbols will be expanded ("$FOO bar" -> "foo bar" if - FOO has the value "foo"). Returns None in case of no defconfig file. - Setting 'option defconfig_list' on multiple symbols currently results - in undefined behavior. - - If the environment variable 'srctree' was set when the Config was - created, get_defconfig_filename() will first look relative to that - directory before looking in the current directory; see - Config.__init__(). - - WARNING: A wart here is that scripts/kconfig/Makefile sometimes uses the - --defconfig= option when calling the C implementation of e.g. - 'make defconfig'. This option overrides the 'option defconfig_list' - symbol, meaning the result from get_defconfig_filename() might not - match what 'make defconfig' would use. That probably ought to be worked - around somehow, so that this function always gives the "expected" - result.""" - if self.defconfig_sym is None: - return None - for filename, cond_expr in self.defconfig_sym.def_exprs: - if self._eval_expr(cond_expr) == "y": - filename = self._expand_sym_refs(filename) - # We first look in $srctree. os.path.join() won't work here as - # an absolute path in filename would override $srctree. - srctree_filename = os.path.normpath(self.srctree + "/" + filename) - if os.path.exists(srctree_filename): - return srctree_filename - if os.path.exists(filename): - return filename - return None - - def get_symbol(self, name): - """Returns the symbol with name 'name', or None if no such symbol - appears in the configuration. An alternative shorthand is conf[name], - where conf is a Config instance, though that will instead raise - KeyError if the symbol does not exist.""" - return self.syms.get(name) - - def get_top_level_items(self): - """Returns a list containing the items (symbols, menus, choice - statements and comments) at the top level of the configuration -- that - is, all items that do not appear within a menu or choice. The items - appear in the same order as within the configuration.""" - return self.top_block - - def get_symbols(self, all_symbols = True): - """Returns a list of symbols from the configuration. An alternative for - iterating over all defined symbols (in the order of definition) is - - for sym in config: - ... - - which relies on Config implementing __iter__() and is equivalent to - - for sym in config.get_symbols(False): - ... - - all_symbols (default: True) -- If True, all symbols -- including special - and undefined symbols -- will be included in the result, in - an undefined order. If False, only symbols actually defined - and not merely referred to in the configuration will be - included in the result, and will appear in the order that - they are defined within the Kconfig configuration files.""" - return self.syms.values() if all_symbols else self.kconfig_syms - - def get_choices(self): - """Returns a list containing all choice statements in the - configuration, in the order they appear in the Kconfig files.""" - return self.choices - - def get_menus(self): - """Returns a list containing all menus in the configuration, in the - order they appear in the Kconfig files.""" - return self.menus - - def get_comments(self): - """Returns a list containing all comments in the configuration, in the - order they appear in the Kconfig files.""" - return self.comments - - def eval(self, s): - """Returns the value of the expression 's' -- where 's' is represented - as a string -- in the context of the configuration. Raises - Kconfig_Syntax_Error if syntax errors are detected in 's'. - - For example, if FOO and BAR are tristate symbols at least one of which - has the value "y", then config.eval("y && (FOO || BAR)") => "y" - - This function always yields a tristate value. To get the value of - non-bool, non-tristate symbols, use Symbol.get_value(). - - The result of this function is consistent with how evaluation works for - conditional expressions in the configuration as well as in the C - implementation. "m" and m are rewritten as '"m" && MODULES' and 'm && - MODULES', respectively, and a result of "m" will get promoted to "y" if - we're running without modules. - - Syntax checking is somewhat lax, partly to be compatible with lax - parsing in the C implementation.""" - return self._eval_expr(self._parse_expr(self._tokenize(s, True), # Feed - None, # Current symbol or choice - s)) # line - - def get_config_header(self): - """Returns the (uncommented) textual header of the .config file most - recently loaded with load_config(). Returns None if no .config file has - been loaded or if the most recently loaded .config file has no header. - The header comprises all lines up to but not including the first line - that either - - 1. Does not start with "#" - 2. Has the form "# CONFIG_FOO is not set." - """ - return self.config_header - - def get_base_dir(self): - """Returns the base directory relative to which 'source' statements - will work, passed as an argument to Config.__init__().""" - return self.base_dir - - def set_print_warnings(self, print_warnings): - """Determines whether warnings related to this configuration (for - things like attempting to assign illegal values to symbols with - Symbol.set_user_value()) should be printed to stderr. - - print_warnings -- True if warnings should be printed.""" - self.print_warnings = print_warnings - - def set_print_undef_assign(self, print_undef_assign): - """Determines whether informational messages related to assignments to - undefined symbols should be printed to stderr for this configuration. - - print_undef_assign -- If True, such messages will be printed.""" - self.print_undef_assign = print_undef_assign - - def __getitem__(self, key): - """Returns the symbol with name 'name'. Raises KeyError if the symbol - does not appear in the configuration.""" - return self.syms[key] - - def __iter__(self): - """Convenience function for iterating over the set of all defined - symbols in the configuration, used like - - for sym in conf: - ... - - The iteration happens in the order of definition within the Kconfig - configuration files. Symbols only referred to but not defined will not - be included, nor will the special symbols n, m, and y. If you want to - include such symbols as well, see config.get_symbols().""" - return iter(self.kconfig_syms) - - def unset_user_values(self): - """Resets the values of all symbols, as if Config.load_config() or - Symbol.set_user_value() had never been called.""" - for sym in self.syms_iter(): - sym._unset_user_value_no_recursive_invalidate() - - def __str__(self): - """Returns a string containing various information about the Config.""" - return _sep_lines("Configuration", - "File : " + self.filename, - "Base directory : " + self.base_dir, - "Value of $ARCH at creation time : " + - ("(not set)" if self.arch is None else self.arch), - "Value of $SRCARCH at creation time : " + - ("(not set)" if self.srcarch is None else self.srcarch), - "Source tree (derived from $srctree;", - "defaults to '.' if $srctree isn't set) : " + self.srctree, - "Most recently loaded .config : " + - ("(no .config loaded)" if self.config_filename is None else - self.config_filename), - "Print warnings : " + - bool_str[self.print_warnings], - "Print assignments to undefined symbols : " + - bool_str[self.print_undef_assign]) - - # - # Private methods - # - - def _invalidate_all(self): - for sym in self.syms_iter(): - sym._invalidate() - - def _tokenize(self, s, for_eval = False, filename = None, linenr = None): - """Returns a _Feed instance containing tokens derived from the string - 's'. Registers any new symbols encountered (via _sym_lookup()). - - (I experimented with a pure regular expression implementation, but it - came out slower, less readable, and wouldn't have been as flexible.) - - for_eval -- True when parsing an expression for a call to - Config.eval(), in which case we should not treat the first - token specially nor register new symbols.""" - - # lstrip() would work here too, but removing the '\n' at the end leads - # to earlier termination in the 'while' loop below, saving lots of - # calls - s = s.strip() - if s == "" or s[0] == "#": - return _Feed([]) - - if for_eval: - i = 0 # The current index in the string being tokenized - previous = None # The previous token seen - tokens = [] - else: - # The initial word on a line is parsed specially. Let - # command_chars = [A-Za-z0-9_]. Then - # - leading non-command_chars characters on the line are ignored, and - # - the first token consists the following one or more command_chars - # characters. - # This is why things like "----help--" are accepted. - - initial_token_match = _initial_token_re_match(s) - if initial_token_match is None: - return _Feed([]) - # The current index in the string being tokenized - i = initial_token_match.end() - - keyword = _get_keyword(initial_token_match.group(1)) - if keyword is None: - # We expect a keyword as the first token - _tokenization_error(s, filename, linenr) - if keyword == T_HELP: - # Avoid junk after "help", e.g. "---", being registered as a - # symbol - return _Feed([T_HELP]) - tokens = [keyword] - previous = keyword - - # _tokenize() is a hotspot during parsing, and this speeds things up a - # bit - strlen = len(s) - append = tokens.append - - # Main tokenization loop. (Handles tokens past the first one.) - while i < strlen: - # Test for an identifier/keyword preceded by whitespace first; this - # is the most common case. - id_keyword_match = _id_keyword_re_match(s, i) - if id_keyword_match: - # We have an identifier or keyword. The above also stripped any - # whitespace for us. - name = id_keyword_match.group(1) - # Jump past it - i = id_keyword_match.end() - - # Keyword? - keyword = _get_keyword(name) - if keyword is not None: - append(keyword) - # What would ordinarily be considered a name is treated as a - # string after certain tokens. - elif previous in string_lex: - append(name) - else: - # We're dealing with a symbol. _sym_lookup() will take care - # of allocating a new Symbol instance if it's the first - # time we see it. - sym = self._sym_lookup(name, not for_eval) - - if previous == T_CONFIG or previous == T_MENUCONFIG: - # If the previous token is T_(MENU)CONFIG - # ("(menu)config"), we're tokenizing the first line of - # a symbol definition, and should remember this as a - # location where the symbol is defined. - sym.def_locations.append((filename, linenr)) - else: - # Otherwise, it's a reference to the symbol - sym.ref_locations.append((filename, linenr)) - - append(sym) - - else: - # This restrips whitespace that could have been stripped in the - # regex above, but it's worth it since identifiers/keywords are - # more common - s = s[i:].lstrip() - if s == "": - break - c = s[0] - i = 1 - - # String literal (constant symbol) - if c == '"' or c == "'": - if "\\" in s: - # Slow path: This could probably be sped up, but it's a - # very unusual case anyway. - quote = c - val = "" - while 1: - if i >= len(s): - _tokenization_error(s, filename, linenr) - c = s[i] - if c == quote: - break - if c == "\\": - if i + 1 >= len(s): - _tokenization_error(s, filename, linenr) - val += s[i + 1] - i += 2 - else: - val += c - i += 1 - i += 1 - append(val) - else: - # Fast path: If the string contains no backslashes (almost - # always) we can simply look for the matching quote. - end = s.find(c, i) - if end == -1: - _tokenization_error(s, filename, linenr) - append(s[i:end]) - i = end + 1 - - elif c == "&": - # Invalid characters are ignored - if i >= len(s) or s[i] != "&": continue - append(T_AND) - i += 1 - - elif c == "|": - # Invalid characters are ignored - if i >= len(s) or s[i] != "|": continue - append(T_OR) - i += 1 - - elif c == "!": - if i < len(s) and s[i] == "=": - append(T_UNEQUAL) - i += 1 - else: - append(T_NOT) - - elif c == "=": append(T_EQUAL) - elif c == "(": append(T_OPEN_PAREN) - elif c == ")": append(T_CLOSE_PAREN) - elif c == "#": break # Comment - - else: continue # Invalid characters are ignored - - previous = tokens[-1] - - return _Feed(tokens) - - # - # Parsing - # - - # Expression grammar: - # - # -> - # '=' - # '!=' - # '(' ')' - # '!' - # '&&' - # '||' - - def _parse_expr(self, feed, cur_sym_or_choice, line, filename = None, - linenr = None, transform_m = True): - """Parse an expression from the tokens in 'feed' using a simple - top-down approach. The result has the form (, ). - - feed -- _Feed instance containing the tokens for the expression. - - cur_sym_or_choice -- The symbol or choice currently being parsed, or - None if we're not parsing a symbol or choice. - Used for recording references to symbols. - - line -- The line containing the expression being parsed. - - filename (default: None) -- The file containing the expression. - - linenr (default: None) -- The line number containing the expression. - - transform_m (default: False) -- Determines if 'm' should be rewritten to - 'm && MODULES' -- see - parse_val_and_cond().""" - - # Use instance variables to avoid having to pass these as arguments - # through the top-down parser in _parse_expr_2(), which is tedious and - # obfuscates the code. A profiler run shows no noticeable performance - # difference. - self.parse_expr_cur_sym_or_choice = cur_sym_or_choice - self.parse_expr_line = line - self.parse_expr_filename = filename - self.parse_expr_linenr = linenr - self.parse_expr_transform_m = transform_m - - return self._parse_expr_2(feed) - - def _parse_expr_2(self, feed): - or_terms = [self._parse_or_term(feed)] - # Keep parsing additional terms while the lookahead is '||' - while feed.check(T_OR): - or_terms.append(self._parse_or_term(feed)) - return or_terms[0] if len(or_terms) == 1 else (OR, or_terms) - - def _parse_or_term(self, feed): - and_terms = [self._parse_factor(feed)] - # Keep parsing additional terms while the lookahead is '&&' - while feed.check(T_AND): - and_terms.append(self._parse_factor(feed)) - return and_terms[0] if len(and_terms) == 1 else (AND, and_terms) - - def _parse_factor(self, feed): - if feed.check(T_OPEN_PAREN): - expr_parse = self._parse_expr_2(feed) - - if not feed.check(T_CLOSE_PAREN): - _parse_error(self.parse_expr_line, - "missing end parenthesis.", - self.parse_expr_filename, - self.parse_expr_linenr) - - return expr_parse - - if feed.check(T_NOT): - return (NOT, self._parse_factor(feed)) - - sym_or_string = feed.get_next() - - if not isinstance(sym_or_string, (Symbol, str)): - _parse_error(self.parse_expr_line, - "malformed expression.", - self.parse_expr_filename, - self.parse_expr_linenr) - - if self.parse_expr_cur_sym_or_choice is not None and \ - isinstance(sym_or_string, Symbol): - self.parse_expr_cur_sym_or_choice.referenced_syms.add(sym_or_string) - - next_token = feed.peek_next() - - # For conditional expressions ('depends on ', '... if ', - # etc.), "m" and m are rewritten to "m" && MODULES. - if next_token != T_EQUAL and next_token != T_UNEQUAL: - if self.parse_expr_transform_m and (sym_or_string is self.m or - sym_or_string == "m"): - return (AND, ["m", self._sym_lookup("MODULES")]) - return sym_or_string - - relation = EQUAL if (feed.get_next() == T_EQUAL) else UNEQUAL - sym_or_string_2 = feed.get_next() - - if self.parse_expr_cur_sym_or_choice is not None and \ - isinstance(sym_or_string_2, Symbol): - self.parse_expr_cur_sym_or_choice.referenced_syms.add(sym_or_string_2) - - if sym_or_string is self.m: - sym_or_string = "m" - if sym_or_string_2 is self.m: - sym_or_string_2 = "m" - - return (relation, sym_or_string, sym_or_string_2) - - def _parse_file(self, filename, parent, deps, visible_if_deps, res = None): - """Parses the Kconfig file 'filename'. Returns a list with the Items in - the file. See _parse_block() for the meaning of the parameters.""" - return self._parse_block(_FileFeed(filename), None, parent, deps, - visible_if_deps, res) - - def _parse_block(self, line_feeder, end_marker, parent, deps, - visible_if_deps = None, res = None): - """Parses a block, which is the contents of either a file or an if, - menu, or choice statement. Returns a list with the Items in the block. - - end_marker -- The token that ends the block, e.g. T_ENDIF ("endif") for - if's. None for files. - - parent -- The enclosing menu, choice or if, or None if we're at the top - level. - - deps -- Dependencies from enclosing menus, choices and if's. - - visible_if_deps (default: None) -- 'visible if' dependencies from - enclosing menus. - - res (default: None) -- The list to add items to. If None, a new list is - created to hold the items.""" - - block = [] if res is None else res - - while 1: - # Do we already have a tokenized line that we determined wasn't - # part of whatever we were parsing earlier? See comment in - # Config.__init__(). - if self.end_line is not None: - line = self.end_line - tokens = self.end_line_tokens - tokens.go_to_start() - - self.end_line = None - self.end_line_tokens = None - else: - line = line_feeder.get_next() - if line is None: - if end_marker is not None: - raise Kconfig_Syntax_Error( - "Unexpected end of file {0}." - .format(line_feeder.get_filename())) - return block - - tokens = self._tokenize(line, False, - line_feeder.get_filename(), - line_feeder.get_linenr()) - - t0 = tokens.get_next() - if t0 is None: - continue - - # Cases are ordered roughly by frequency, which speeds things up a - # bit - - if t0 == T_CONFIG or t0 == T_MENUCONFIG: - # The tokenizer will automatically allocate a new Symbol object - # for any new names it encounters, so we don't need to worry - # about that here. - sym = tokens.get_next() - - # Symbols defined in multiple places get the parent of their - # first definition. However, for symbols whose parents are choice - # statements, the choice statement takes precedence. - if not sym.is_defined_ or isinstance(parent, Choice): - sym.parent = parent - - sym.is_defined_ = True - - self.kconfig_syms.append(sym) - block.append(sym) - - self._parse_properties(line_feeder, sym, deps, visible_if_deps) - - elif t0 == T_SOURCE: - kconfig_file = tokens.get_next() - exp_kconfig_file = self._expand_sym_refs(kconfig_file) - f = os.path.join(self.base_dir, exp_kconfig_file) - - if not os.path.exists(f): - raise IOError('{0}:{1}: sourced file "{2}" (expands to ' - '"{3}") not found. Perhaps base_dir ' - '(argument to Config.__init__(), currently ' - '"{4}") is set to the wrong value.' - .format(line_feeder.get_filename(), - line_feeder.get_linenr(), - kconfig_file, exp_kconfig_file, - self.base_dir)) - - # Add items to the same block - self._parse_file(f, parent, deps, visible_if_deps, block) - - elif t0 == end_marker: - # We have reached the end of the block - return block - - elif t0 == T_IF: - # If statements are treated as syntactic sugar for adding - # dependencies to enclosed items and do not have an explicit - # object representation. - - dep_expr = self._parse_expr(tokens, None, line, - line_feeder.get_filename(), - line_feeder.get_linenr()) - self._parse_block(line_feeder, - T_ENDIF, - parent, - _make_and(dep_expr, deps), - visible_if_deps, - block) # Add items to the same block - - elif t0 == T_COMMENT: - comment = Comment() - - comment.config = self - comment.parent = parent - comment.filename = line_feeder.get_filename() - comment.linenr = line_feeder.get_linenr() - comment.text = tokens.get_next() - - self.comments.append(comment) - block.append(comment) - - self._parse_properties(line_feeder, comment, deps, visible_if_deps) - - elif t0 == T_MENU: - menu = Menu() - - menu.config = self - menu.parent = parent - menu.filename = line_feeder.get_filename() - menu.linenr = line_feeder.get_linenr() - menu.title = tokens.get_next() - - self.menus.append(menu) - block.append(menu) - - # Parse properties and contents - self._parse_properties(line_feeder, menu, deps, visible_if_deps) - menu.block = self._parse_block(line_feeder, - T_ENDMENU, - menu, - menu.dep_expr, - _make_and(visible_if_deps, - menu.visible_if_expr)) - - elif t0 == T_CHOICE: - name = tokens.get_next() - if name is None: - choice = Choice() - self.choices.append(choice) - else: - # Named choice - choice = self.named_choices.get(name) - if choice is None: - choice = Choice() - choice.name = name - self.named_choices[name] = choice - self.choices.append(choice) - - choice.config = self - choice.parent = parent - - choice.def_locations.append((line_feeder.get_filename(), - line_feeder.get_linenr())) - - # Parse properties and contents - self._parse_properties(line_feeder, choice, deps, visible_if_deps) - choice.block = self._parse_block(line_feeder, - T_ENDCHOICE, - choice, - deps, - visible_if_deps) - - choice._determine_actual_symbols() - - # If no type is set for the choice, its type is that of the first - # choice item - if choice.type == UNKNOWN: - for item in choice.get_symbols(): - if item.type != UNKNOWN: - choice.type = item.type - break - - # Each choice item of UNKNOWN type gets the type of the choice - for item in choice.get_symbols(): - if item.type == UNKNOWN: - item.type = choice.type - - block.append(choice) - - elif t0 == T_MAINMENU: - text = tokens.get_next() - - if self.mainmenu_text is not None: - self._warn("overriding 'mainmenu' text. " - 'Old value: "{0}", new value: "{1}".' - .format(self.mainmenu_text, text), - line_feeder.get_filename(), - line_feeder.get_linenr()) - - self.mainmenu_text = text - - else: - _parse_error(line, "unrecognized construct.", - line_feeder.get_filename(), - line_feeder.get_linenr()) - - def _parse_properties(self, line_feeder, stmt, deps, visible_if_deps): - """Parsing of properties for symbols, menus, choices, and comments.""" - - def parse_val_and_cond(tokens, line, filename, linenr): - """Parses ' if ' constructs, where the 'if' part is - optional. Returns a tuple containing the parsed expressions, with - None as the second element if the 'if' part is missing.""" - val = self._parse_expr(tokens, stmt, line, filename, linenr, False) - if tokens.check(T_IF): - return (val, self._parse_expr(tokens, stmt, line, filename, linenr)) - return (val, None) - - # In case the symbol is defined in multiple locations, we need to - # remember what prompts, defaults, and selects are new for this - # definition, as "depends on" should only apply to the local - # definition. - new_prompt = None - new_def_exprs = [] - new_selects = [] - - # Dependencies from 'depends on' statements - depends_on_expr = None - - while 1: - line = line_feeder.get_next() - if line is None: - break - - filename = line_feeder.get_filename() - linenr = line_feeder.get_linenr() - - tokens = self._tokenize(line, False, filename, linenr) - - t0 = tokens.get_next() - if t0 is None: - continue - - # Cases are ordered roughly by frequency, which speeds things up a - # bit - - if t0 == T_DEPENDS: - if not tokens.check(T_ON): - _parse_error(line, 'expected "on" after "depends".', filename, linenr) - - parsed_deps = self._parse_expr(tokens, stmt, line, filename, linenr) - - if isinstance(stmt, (Menu, Comment)): - stmt.dep_expr = _make_and(stmt.dep_expr, parsed_deps) - else: - depends_on_expr = _make_and(depends_on_expr, parsed_deps) - - elif t0 == T_HELP: - # Find first non-blank (not all-space) line and get its - # indentation - - line_feeder.remove_blank() - line = line_feeder.get_next() - if line is None: - stmt.help = "" - break - - indent = _indentation(line) - if indent == 0: - # If the first non-empty lines has zero indent, there is no - # help text - stmt.help = "" - line_feeder.go_back() - break - - # The help text goes on till the first non-empty line with less - # indent - help_lines = [_deindent(line, indent)] - while 1: - line = line_feeder.get_next() - if line is None or \ - (not line.isspace() and _indentation(line) < indent): - stmt.help = "".join(help_lines) - break - help_lines.append(_deindent(line, indent)) - - if line is None: - break - - line_feeder.go_back() - - elif t0 == T_SELECT: - target = tokens.get_next() - - stmt.referenced_syms.add(target) - stmt.selected_syms.add(target) - - if tokens.check(T_IF): - new_selects.append((target, - self._parse_expr(tokens, stmt, line, filename, linenr))) - else: - new_selects.append((target, None)) - - elif t0 in (T_BOOL, T_TRISTATE, T_INT, T_HEX, T_STRING): - stmt.type = token_to_type[t0] - if len(tokens) > 1: - new_prompt = parse_val_and_cond(tokens, line, filename, linenr) - - elif t0 == T_DEFAULT: - new_def_exprs.append(parse_val_and_cond(tokens, line, filename, linenr)) - - elif t0 == T_DEF_BOOL: - stmt.type = BOOL - if len(tokens) > 1: - new_def_exprs.append(parse_val_and_cond(tokens, line, filename, linenr)) - - elif t0 == T_PROMPT: - # 'prompt' properties override each other within a single - # definition of a symbol, but additional prompts can be added - # by defining the symbol multiple times; hence 'new_prompt' - # instead of 'prompt'. - new_prompt = parse_val_and_cond(tokens, line, filename, linenr) - - elif t0 == T_RANGE: - lower = tokens.get_next() - upper = tokens.get_next() - stmt.referenced_syms.add(lower) - stmt.referenced_syms.add(upper) - - if tokens.check(T_IF): - stmt.ranges.append((lower, upper, - self._parse_expr(tokens, stmt, line, filename, linenr))) - else: - stmt.ranges.append((lower, upper, None)) - - elif t0 == T_DEF_TRISTATE: - stmt.type = TRISTATE - if len(tokens) > 1: - new_def_exprs.append(parse_val_and_cond(tokens, line, filename, linenr)) - - elif t0 == T_OPTION: - if tokens.check(T_ENV) and tokens.check(T_EQUAL): - env_var = tokens.get_next() - - stmt.is_special_ = True - stmt.is_from_env = True - - if env_var not in os.environ: - self._warn("The symbol {0} references the " - "non-existent environment variable {1} and " - "will get the empty string as its value. " - "If you're using kconfiglib via " - "'make (i)scriptconfig', it should have " - "set up the environment correctly for you. " - "If you still got this message, that " - "might be an error, and you should email " - "ulfalizer a.t Google's email service.""" - .format(stmt.name, env_var), - filename, linenr) - - stmt.cached_val = "" - else: - stmt.cached_val = os.environ[env_var] - - elif tokens.check(T_DEFCONFIG_LIST): - self.defconfig_sym = stmt - - elif tokens.check(T_MODULES): - # To reduce warning spam, only warn if 'option modules' is - # set on some symbol that isn't MODULES, which should be - # safe. I haven't run into any projects that make use - # modules besides the kernel yet, and there it's likely to - # keep being called "MODULES". - if stmt.name != "MODULES": - self._warn("the 'modules' option is not supported. " - "Let me know if this is a problem for you; " - "it shouldn't be that hard to implement. " - "(Note that modules are still supported -- " - "Kconfiglib just assumes the symbol name " - "MODULES, like older versions of the C " - "implementation did when 'option modules' " - "wasn't used.)", - filename, linenr) - - elif tokens.check(T_ALLNOCONFIG_Y): - if not isinstance(stmt, Symbol): - _parse_error(line, - "the 'allnoconfig_y' option is only valid for symbols.", - filename, - linenr) - stmt.allnoconfig_y = True - - else: - _parse_error(line, "unrecognized option.", filename, linenr) - - elif t0 == T_VISIBLE: - if not tokens.check(T_IF): - _parse_error(line, 'expected "if" after "visible".', filename, linenr) - if not isinstance(stmt, Menu): - _parse_error(line, - "'visible if' is only valid for menus.", - filename, - linenr) - - parsed_deps = self._parse_expr(tokens, stmt, line, filename, linenr) - stmt.visible_if_expr = _make_and(stmt.visible_if_expr, parsed_deps) - - elif t0 == T_OPTIONAL: - if not isinstance(stmt, Choice): - _parse_error(line, - '"optional" is only valid for choices.', - filename, - linenr) - stmt.optional = True - - else: - # See comment in Config.__init__() - self.end_line = line - self.end_line_tokens = tokens - break - - # Propagate dependencies from enclosing menus and if's. - - # For menus and comments.. - if isinstance(stmt, (Menu, Comment)): - stmt.orig_deps = stmt.dep_expr - stmt.deps_from_containing = deps - stmt.dep_expr = _make_and(stmt.dep_expr, deps) - - stmt.all_referenced_syms = \ - stmt.referenced_syms | _get_expr_syms(deps) - - # For symbols and choices.. - else: - - # See comment for 'menu_dep' - stmt.menu_dep = depends_on_expr - - # Propagate dependencies specified with 'depends on' to any new - # default expressions, prompts, and selections. ("New" since a - # symbol might be defined in multiple places and the dependencies - # should only apply to the local definition.) - - new_def_exprs = [(val_expr, _make_and(cond_expr, depends_on_expr)) - for val_expr, cond_expr in new_def_exprs] - - new_selects = [(target, _make_and(cond_expr, depends_on_expr)) - for target, cond_expr in new_selects] - - if new_prompt is not None: - prompt, cond_expr = new_prompt - - # 'visible if' dependencies from enclosing menus get propagated - # to prompts - if visible_if_deps is not None: - cond_expr = _make_and(cond_expr, visible_if_deps) - - new_prompt = (prompt, _make_and(cond_expr, depends_on_expr)) - - # We save the original expressions -- before any menu and if - # conditions have been propagated -- so these can be retrieved - # later. - - stmt.orig_def_exprs.extend(new_def_exprs) - if new_prompt is not None: - stmt.orig_prompts.append(new_prompt) - - # Only symbols can select - if isinstance(stmt, Symbol): - stmt.orig_selects.extend(new_selects) - - # Save dependencies from enclosing menus and if's - stmt.deps_from_containing = deps - - # The set of symbols referenced directly by the symbol/choice plus - # all symbols referenced by enclosing menus and if's. - stmt.all_referenced_syms = \ - stmt.referenced_syms | _get_expr_syms(deps) - - # Propagate dependencies from enclosing menus and if's - - stmt.def_exprs.extend([(val_expr, _make_and(cond_expr, deps)) - for val_expr, cond_expr in new_def_exprs]) - - for target, cond in new_selects: - target.rev_dep = _make_or(target.rev_dep, - _make_and(stmt, - _make_and(cond, deps))) - - if new_prompt is not None: - prompt, cond_expr = new_prompt - stmt.prompts.append((prompt, _make_and(cond_expr, deps))) - - # - # Symbol table manipulation - # - - def _sym_lookup(self, name, add_sym_if_not_exists = True): - """Fetches the symbol 'name' from the symbol table, optionally adding - it if it does not exist (this is usually what we want).""" - if name in self.syms: - return self.syms[name] - - new_sym = Symbol() - new_sym.config = self - new_sym.name = name - - if add_sym_if_not_exists: - self.syms[name] = new_sym - else: - # This warning is generated while evaluating an expression - # containing undefined symbols using Config.eval() - self._warn("no symbol {0} in configuration".format(name)) - - return new_sym - - # - # Evaluation of symbols and expressions - # - - def _eval_expr(self, expr): - """Evaluates an expression and returns one of the tristate values "n", - "m" or "y".""" - res = self._eval_expr_2(expr) - - # Promote "m" to "y" if we're running without modules. Internally, "m" - # is often rewritten to "m" && MODULES by both the C implementation and - # kconfiglib, which takes care of cases where "m" should be false if - # we're running without modules. - if res == "m" and not self._has_modules(): - return "y" - - return res - - def _eval_expr_2(self, expr): - if expr is None: - return "y" - - if isinstance(expr, Symbol): - # Non-bool/tristate symbols are always "n" in a tristate sense, - # regardless of their value - if expr.type != BOOL and expr.type != TRISTATE: - return "n" - return expr.get_value() - - if isinstance(expr, str): - return expr if (expr == "y" or expr == "m") else "n" - - first_expr = expr[0] - - if first_expr == AND: - res = "y" - for subexpr in expr[1]: - ev = self._eval_expr_2(subexpr) - # Return immediately upon discovering an "n" term - if ev == "n": - return "n" - if ev == "m": - res = "m" - # 'res' is either "m" or "y" here; we already handled the - # short-circuiting "n" case in the loop. - return res - - if first_expr == OR: - res = "n" - for subexpr in expr[1]: - ev = self._eval_expr_2(subexpr) - # Return immediately upon discovering a "y" term - if ev == "y": - return "y" - if ev == "m": - res = "m" - # 'res' is either "n" or "m" here; we already handled the - # short-circuiting "y" case in the loop. - return res - - if first_expr == NOT: - ev = self._eval_expr_2(expr[1]) - if ev == "y": - return "n" - return "y" if (ev == "n") else "m" - - if first_expr == EQUAL: - return "y" if (_str_val(expr[1]) == _str_val(expr[2])) else "n" - - if first_expr == UNEQUAL: - return "y" if (_str_val(expr[1]) != _str_val(expr[2])) else "n" - - _internal_error("Internal error while evaluating expression: " - "unknown operation {0}.".format(first_expr)) - - def _eval_min(self, e1, e2): - """Returns the minimum value of the two expressions. Equates None with - 'y'.""" - e1_eval = self._eval_expr(e1) - e2_eval = self._eval_expr(e2) - return e1_eval if tri_less(e1_eval, e2_eval) else e2_eval - - def _eval_max(self, e1, e2): - """Returns the maximum value of the two expressions. Equates None with - 'y'.""" - e1_eval = self._eval_expr(e1) - e2_eval = self._eval_expr(e2) - return e1_eval if tri_greater(e1_eval, e2_eval) else e2_eval - - # - # Methods related to the MODULES symbol - # - - def _has_modules(self): - modules_sym = self.syms.get("MODULES") - return (modules_sym is not None) and (modules_sym.get_value() == "y") - - # - # Dependency tracking - # - - def _build_dep(self): - """Populates the Symbol.dep sets, linking the symbol to the symbols - that immediately depend on it in the sense that changing the value of - the symbol might affect the values of those other symbols. This is used - for caching/invalidation purposes. The calculated sets might be larger - than necessary as we don't do any complicated analysis of the - expressions.""" - - # Adds 'sym' as a directly dependent symbol to all symbols that appear - # in the expression 'e' - def add_expr_deps(e, sym): - for s in _get_expr_syms(e): - s.dep.add(sym) - - # The directly dependent symbols of a symbol are: - # - Any symbols whose prompts, default values, rev_dep (select - # condition), or ranges depend on the symbol - # - Any symbols that belong to the same choice statement as the symbol - # (these won't be included in 'dep' as that makes the dependency - # graph unwieldy, but Symbol._get_dependent() will include them) - # - Any symbols in a choice statement that depends on the symbol - for sym in self.syms_iter(): - for _, e in sym.prompts: - add_expr_deps(e, sym) - - for v, e in sym.def_exprs: - add_expr_deps(v, sym) - add_expr_deps(e, sym) - - add_expr_deps(sym.rev_dep, sym) - - for l, u, e in sym.ranges: - add_expr_deps(l, sym) - add_expr_deps(u, sym) - add_expr_deps(e, sym) - - if sym.is_choice_symbol_: - choice = sym.parent - for _, e in choice.prompts: - add_expr_deps(e, sym) - for _, e in choice.def_exprs: - add_expr_deps(e, sym) - - def _expr_val_str(self, expr, no_value_str = "(none)", get_val_instead_of_eval = False): - # Since values are valid expressions, _expr_to_str() will get a nice - # string representation for those as well. - - if expr is None: - return no_value_str - - if get_val_instead_of_eval: - if isinstance(expr, str): - return _expr_to_str(expr) - val = expr.get_value() - else: - val = self._eval_expr(expr) - - return "{0} (value: {1})".format(_expr_to_str(expr), _expr_to_str(val)) - - def _expand_sym_refs(self, s): - """Expands $-references to symbols in 's' to symbol values, or to the - empty string for undefined symbols.""" - - while 1: - sym_ref_match = _sym_ref_re_search(s) - if sym_ref_match is None: - return s - - sym_name = sym_ref_match.group(0)[1:] - sym = self.syms.get(sym_name) - expansion = "" if sym is None else sym.get_value() - - s = s[:sym_ref_match.start()] + \ - expansion + \ - s[sym_ref_match.end():] - - def _get_sym_or_choice_str(self, sc): - """Symbols and choices have many properties in common, so we factor out - common __str__() stuff here. "sc" is short for "symbol or choice".""" - - # As we deal a lot with string representations here, use some - # convenient shorthand: - s = _expr_to_str - - # - # Common symbol/choice properties - # - - user_val_str = "(no user value)" if sc.user_val is None else s(sc.user_val) - - # Build prompts string - if sc.prompts == []: - prompts_str = " (no prompts)" - else: - prompts_str_rows = [] - for prompt, cond_expr in sc.orig_prompts: - if cond_expr is None: - prompts_str_rows.append(' "{0}"'.format(prompt)) - else: - prompts_str_rows.append(' "{0}" if {1}' - .format(prompt, self._expr_val_str(cond_expr))) - prompts_str = "\n".join(prompts_str_rows) - - # Build locations string - if sc.def_locations == []: - locations_str = "(no locations)" - else: - locations_str = " ".join(["{0}:{1}".format(filename, linenr) for - (filename, linenr) in sc.def_locations]) - - # Build additional-dependencies-from-menus-and-if's string - additional_deps_str = " " + self._expr_val_str(sc.deps_from_containing, - "(no additional dependencies)") - - # - # Symbol-specific stuff - # - - if isinstance(sc, Symbol): - # Build ranges string - if isinstance(sc, Symbol): - if sc.ranges == []: - ranges_str = " (no ranges)" - else: - ranges_str_rows = [] - for l, u, cond_expr in sc.ranges: - if cond_expr is None: - ranges_str_rows.append(" [{0}, {1}]".format(s(l), s(u))) - else: - ranges_str_rows.append(" [{0}, {1}] if {2}" - .format(s(l), s(u), self._expr_val_str(cond_expr))) - ranges_str = "\n".join(ranges_str_rows) - - # Build default values string - if sc.def_exprs == []: - defaults_str = " (no default values)" - else: - defaults_str_rows = [] - for val_expr, cond_expr in sc.orig_def_exprs: - row_str = " " + self._expr_val_str(val_expr, "(none)", sc.type == STRING) - defaults_str_rows.append(row_str) - defaults_str_rows.append(" Condition: " + self._expr_val_str(cond_expr)) - defaults_str = "\n".join(defaults_str_rows) - - # Build selects string - if sc.orig_selects == []: - selects_str = " (no selects)" - else: - selects_str_rows = [] - for target, cond_expr in sc.orig_selects: - if cond_expr is None: - selects_str_rows.append(" {0}".format(target.name)) - else: - selects_str_rows.append(" {0} if ".format(target.name) + - self._expr_val_str(cond_expr)) - selects_str = "\n".join(selects_str_rows) - - res = _sep_lines("Symbol " + - ("(no name)" if sc.name is None else sc.name), - "Type : " + typename[sc.type], - "Value : " + s(sc.get_value()), - "User value : " + user_val_str, - "Visibility : " + s(sc.get_visibility()), - "Is choice item : " + bool_str[sc.is_choice_symbol_], - "Is defined : " + bool_str[sc.is_defined_], - "Is from env. : " + bool_str[sc.is_from_env], - "Is special : " + bool_str[sc.is_special_] + "\n") - if sc.ranges != []: - res += _sep_lines("Ranges:", - ranges_str + "\n") - res += _sep_lines("Prompts:", - prompts_str, - "Default values:", - defaults_str, - "Selects:", - selects_str, - "Reverse (select-related) dependencies:", - " (no reverse dependencies)" if sc.rev_dep == "n" - else " " + self._expr_val_str(sc.rev_dep), - "Additional dependencies from enclosing menus and if's:", - additional_deps_str, - "Locations: " + locations_str) - - return res - - # - # Choice-specific stuff - # - - # Build selected symbol string - sel = sc.get_selection() - sel_str = "(no selection)" if sel is None else sel.name - - # Build default values string - if sc.def_exprs == []: - defaults_str = " (no default values)" - else: - defaults_str_rows = [] - for sym, cond_expr in sc.orig_def_exprs: - if cond_expr is None: - defaults_str_rows.append(" {0}".format(sym.name)) - else: - defaults_str_rows.append(" {0} if ".format(sym.name) + - self._expr_val_str(cond_expr)) - defaults_str = "\n".join(defaults_str_rows) - - # Build contained symbols string - names = [sym.name for sym in sc.get_symbols()] - syms_string = "(empty)" if names == [] else " ".join(names) - - return _sep_lines("Choice", - "Name (for named choices): " + - ("(no name)" if sc.name is None else sc.name), - "Type : " + typename[sc.type], - "Selected symbol : " + sel_str, - "User value : " + user_val_str, - "Mode : " + s(sc.get_mode()), - "Visibility : " + s(sc.get_visibility()), - "Optional : " + bool_str[sc.optional], - "Prompts:", - prompts_str, - "Defaults:", - defaults_str, - "Choice symbols:", - " " + syms_string, - "Additional dependencies from enclosing menus and if's:", - additional_deps_str, - "Locations: " + locations_str) - - def _expr_depends_on(self, expr, sym): - """Reimplementation of expr_depends_symbol() from mconf.c. Used to - determine if a submenu should be implicitly created, which influences what - items inside choice statements are considered choice items.""" - if expr is None: - return False - - def rec(expr): - if isinstance(expr, str): - return False - if isinstance(expr, Symbol): - return expr is sym - - e0 = expr[0] - if e0 == EQUAL or e0 == UNEQUAL: - return self._eq_to_sym(expr) is sym - if e0 == AND: - for and_expr in expr[1]: - if rec(and_expr): - return True - return False - - return rec(expr) - - def _eq_to_sym(self, eq): - """_expr_depends_on() helper. For (in)equalities of the form sym = y/m - or sym != n, returns sym. For other (in)equalities, returns None.""" - relation, left, right = eq - left = self._transform_n_m_y(left) - right = self._transform_n_m_y(right) - - # Make sure the symbol (if any) appears to the left - if not isinstance(left, Symbol): - left, right = right, left - if not isinstance(left, Symbol): - return None - if (relation == EQUAL and (right == "y" or right == "m")) or \ - (relation == UNEQUAL and right == "n"): - return left - return None - - def _transform_n_m_y(self, item): - """_eq_to_sym() helper. Translates the symbols n, m, and y to their - string equivalents.""" - if item is self.n: - return "n" - if item is self.m: - return "m" - if item is self.y: - return "y" - return item - - def _warn(self, msg, filename = None, linenr = None): - """For printing warnings to stderr.""" - if self.print_warnings: - _stderr_msg("warning: " + msg, filename, linenr) - -class Item(object): - - """Base class for symbols and other Kconfig constructs. Subclasses are - Symbol, Choice, Menu, and Comment.""" - - def is_symbol(self): - """Returns True if the item is a symbol. Short for - isinstance(item, kconfiglib.Symbol).""" - return isinstance(self, Symbol) - - def is_choice(self): - """Returns True if the item is a choice. Short for - isinstance(item, kconfiglib.Choice).""" - return isinstance(self, Choice) - - def is_menu(self): - """Returns True if the item is a menu. Short for - isinstance(item, kconfiglib.Menu).""" - return isinstance(self, Menu) - - def is_comment(self): - """Returns True if the item is a comment. Short for - isinstance(item, kconfiglib.Comment).""" - return isinstance(self, Comment) - -class Symbol(Item): - - """Represents a configuration symbol - e.g. FOO for - - config FOO - ...""" - - # - # Public interface - # - - def get_value(self): - """Calculate and return the value of the symbol. See also - Symbol.set_user_value().""" - - if self.cached_val is not None: - return self.cached_val - - self.write_to_conf = False - - # As a quirk of Kconfig, undefined symbols get their name as their - # value. This is why things like "FOO = bar" work for seeing if FOO has - # the value "bar". - if self.type == UNKNOWN: - self.cached_val = self.name - return self.name - - new_val = default_value[self.type] - - vis = _get_visibility(self) - - if self.type == BOOL or self.type == TRISTATE: - # The visibility and mode (modules-only or single-selection) of - # choice items will be taken into account in _get_visibility() - if self.is_choice_symbol_: - if vis != "n": - choice = self.parent - mode = choice.get_mode() - - self.write_to_conf = (mode != "n") - - if mode == "y": - new_val = "y" if (choice.get_selection() is self) else "n" - elif mode == "m": - if self.user_val == "m" or self.user_val == "y": - new_val = "m" - - else: - # If the symbol is visible and has a user value, use that. - # Otherwise, look at defaults. - use_defaults = True - - if vis != "n": - self.write_to_conf = True - if self.user_val is not None: - new_val = self.config._eval_min(self.user_val, vis) - use_defaults = False - - if use_defaults: - for val_expr, cond_expr in self.def_exprs: - cond_eval = self.config._eval_expr(cond_expr) - if cond_eval != "n": - self.write_to_conf = True - new_val = self.config._eval_min(val_expr, cond_eval) - break - - # Reverse (select-related) dependencies take precedence - rev_dep_val = self.config._eval_expr(self.rev_dep) - if rev_dep_val != "n": - self.write_to_conf = True - new_val = self.config._eval_max(new_val, rev_dep_val) - - # Promote "m" to "y" for booleans - if new_val == "m" and self.type == BOOL: - new_val = "y" - - elif self.type == STRING: - use_defaults = True - - if vis != "n": - self.write_to_conf = True - if self.user_val is not None: - new_val = self.user_val - use_defaults = False - - if use_defaults: - for val_expr, cond_expr in self.def_exprs: - if self.config._eval_expr(cond_expr) != "n": - self.write_to_conf = True - new_val = _str_val(val_expr) - break - - elif self.type == HEX or self.type == INT: - has_active_range = False - low = None - high = None - use_defaults = True - - base = 16 if self.type == HEX else 10 - - for(l, h, cond_expr) in self.ranges: - if self.config._eval_expr(cond_expr) != "n": - has_active_range = True - - low_str = _str_val(l) - high_str = _str_val(h) - low = int(low_str, base) if \ - _is_base_n(low_str, base) else 0 - high = int(high_str, base) if \ - _is_base_n(high_str, base) else 0 - - break - - if vis != "n": - self.write_to_conf = True - - if self.user_val is not None and \ - _is_base_n(self.user_val, base) and \ - (not has_active_range or - low <= int(self.user_val, base) <= high): - - # If the user value is OK, it is stored in exactly the same - # form as specified in the assignment (with or without - # "0x", etc). - - use_defaults = False - new_val = self.user_val - - if use_defaults: - for val_expr, cond_expr in self.def_exprs: - if self.config._eval_expr(cond_expr) != "n": - self.write_to_conf = True - - # If the default value is OK, it is stored in exactly - # the same form as specified. Otherwise, it is clamped - # to the range, and the output has "0x" as appropriate - # for the type. - - new_val = _str_val(val_expr) - - if _is_base_n(new_val, base): - new_val_num = int(new_val, base) - if has_active_range: - clamped_val = None - - if new_val_num < low: - clamped_val = low - elif new_val_num > high: - clamped_val = high - - if clamped_val is not None: - new_val = (hex(clamped_val) if \ - self.type == HEX else str(clamped_val)) - - break - else: # For the for loop - # If no user value or default kicks in but the hex/int has - # an active range, then the low end of the range is used, - # provided it's > 0, with "0x" prepended as appropriate. - if has_active_range and low > 0: - new_val = (hex(low) if self.type == HEX else str(low)) - - self.cached_val = new_val - return new_val - - def set_user_value(self, v): - """Sets the user value of the symbol. - - Equal in effect to assigning the value to the symbol within a .config - file. Use get_lower/upper_bound() or get_assignable_values() to find - the range of currently assignable values for bool and tristate symbols; - setting values outside this range will cause the user value to differ - from the result of Symbol.get_value() (be truncated). Values that are - invalid for the type (such as a_bool.set_user_value("foo")) are - ignored, and a warning is emitted if an attempt is made to assign such - a value. - - For any type of symbol, is_modifiable() can be used to check if a user - value will currently have any effect on the symbol, as determined by - its visibility and range of assignable values. Any value that is valid - for the type (bool, tristate, etc.) will end up being reflected in - get_user_value() though, and might have an effect later if conditions - change. To get rid of the user value, use unset_user_value(). - - Any symbols dependent on the symbol are (recursively) invalidated, so - things will just work with regards to dependencies. - - v -- The user value to give to the symbol.""" - self._set_user_value_no_invalidate(v, False) - - # There might be something more efficient you could do here, but play - # it safe. - if self.name == "MODULES": - self.config._invalidate_all() - return - - self._invalidate() - self._invalidate_dependent() - - def unset_user_value(self): - """Resets the user value of the symbol, as if the symbol had never - gotten a user value via Config.load_config() or - Symbol.set_user_value().""" - self._unset_user_value_no_recursive_invalidate() - self._invalidate_dependent() - - def get_user_value(self): - """Returns the value assigned to the symbol in a .config or via - Symbol.set_user_value() (provided the value was valid for the type of the - symbol). Returns None in case of no user value.""" - return self.user_val - - def get_name(self): - """Returns the name of the symbol.""" - return self.name - - def get_prompts(self): - """Returns a list of prompts defined for the symbol, in the order they - appear in the configuration files. Returns the empty list for symbols - with no prompt. - - This list will have a single entry for the vast majority of symbols - having prompts, but having multiple prompts for a single symbol is - possible through having multiple 'config' entries for it.""" - return [prompt for prompt, _ in self.orig_prompts] - - def get_upper_bound(self): - """For string/hex/int symbols and for bool and tristate symbols that - cannot be modified (see is_modifiable()), returns None. - - Otherwise, returns the highest value the symbol can be set to with - Symbol.set_user_value() (that will not be truncated): one of "m" or "y", - arranged from lowest to highest. This corresponds to the highest value - the symbol could be given in e.g. the 'make menuconfig' interface. - - See also the tri_less*() and tri_greater*() functions, which could come - in handy.""" - if self.type != BOOL and self.type != TRISTATE: - return None - rev_dep = self.config._eval_expr(self.rev_dep) - # A bool selected to "m" gets promoted to "y" - if self.type == BOOL and rev_dep == "m": - rev_dep = "y" - vis = _get_visibility(self) - if (tri_to_int[vis] - tri_to_int[rev_dep]) > 0: - return vis - return None - - def get_lower_bound(self): - """For string/hex/int symbols and for bool and tristate symbols that - cannot be modified (see is_modifiable()), returns None. - - Otherwise, returns the lowest value the symbol can be set to with - Symbol.set_user_value() (that will not be truncated): one of "n" or "m", - arranged from lowest to highest. This corresponds to the lowest value - the symbol could be given in e.g. the 'make menuconfig' interface. - - See also the tri_less*() and tri_greater*() functions, which could come - in handy.""" - if self.type != BOOL and self.type != TRISTATE: - return None - rev_dep = self.config._eval_expr(self.rev_dep) - # A bool selected to "m" gets promoted to "y" - if self.type == BOOL and rev_dep == "m": - rev_dep = "y" - if (tri_to_int[_get_visibility(self)] - tri_to_int[rev_dep]) > 0: - return rev_dep - return None - - def get_assignable_values(self): - """For string/hex/int symbols and for bool and tristate symbols that - cannot be modified (see is_modifiable()), returns the empty list. - - Otherwise, returns a list containing the user values that can be - assigned to the symbol (that won't be truncated). Usage example: - - if "m" in sym.get_assignable_values(): - sym.set_user_value("m") - - This is basically a more convenient interface to - get_lower/upper_bound() when wanting to test if a particular tristate - value can be assigned.""" - if self.type != BOOL and self.type != TRISTATE: - return [] - rev_dep = self.config._eval_expr(self.rev_dep) - # A bool selected to "m" gets promoted to "y" - if self.type == BOOL and rev_dep == "m": - rev_dep = "y" - res = ["n", "m", "y"][tri_to_int[rev_dep] : - tri_to_int[_get_visibility(self)] + 1] - return res if len(res) > 1 else [] - - def get_type(self): - """Returns the type of the symbol: one of UNKNOWN, BOOL, TRISTATE, - STRING, HEX, or INT. These are defined at the top level of the module, - so you'd do something like - - if sym.get_type() == kconfiglib.STRING: - ...""" - return self.type - - def get_visibility(self): - """Returns the visibility of the symbol: one of "n", "m" or "y". For - bool and tristate symbols, this is an upper bound on the value users - can set for the symbol. For other types of symbols, a visibility of "n" - means the user value will be ignored. A visibility of "n" corresponds - to not being visible in the 'make *config' interfaces. - - Example (assuming we're running with modules enabled -- i.e., MODULES - set to 'y'): - - # Assume this has been assigned 'n' - config N_SYM - tristate "N_SYM" - - # Assume this has been assigned 'm' - config M_SYM - tristate "M_SYM" - - # Has visibility 'n' - config A - tristate "A" - depends on N_SYM - - # Has visibility 'm' - config B - tristate "B" - depends on M_SYM - - # Has visibility 'y' - config C - tristate "C" - - # Has no prompt, and hence visibility 'n' - config D - tristate - - Having visibility be tri-valued ensures that e.g. a symbol cannot be - set to "y" by the user if it depends on a symbol with value "m", which - wouldn't be safe. - - You should probably look at get_lower/upper_bound(), - get_assignable_values() and is_modifiable() before using this.""" - return _get_visibility(self) - - def get_parent(self): - """Returns the menu or choice statement that contains the symbol, or - None if the symbol is at the top level. Note that if statements are - treated as syntactic and do not have an explicit class - representation.""" - return self.parent - - def get_referenced_symbols(self, refs_from_enclosing = False): - """Returns the set() of all symbols referenced by this symbol. For - example, the symbol defined by - - config FOO - bool - prompt "foo" if A && B - default C if D - depends on E - select F if G - - references the symbols A through G. - - refs_from_enclosing (default: False) -- If True, the symbols - referenced by enclosing menus and if's will be - included in the result.""" - return self.all_referenced_syms if refs_from_enclosing else self.referenced_syms - - def get_selected_symbols(self): - """Returns the set() of all symbols X for which this symbol has a - 'select X' or 'select X if Y' (regardless of whether Y is satisfied or - not). This is a subset of the symbols returned by - get_referenced_symbols().""" - return self.selected_syms - - def get_help(self): - """Returns the help text of the symbol, or None if the symbol has no - help text.""" - return self.help - - def get_config(self): - """Returns the Config instance this symbol is from.""" - return self.config - - def get_def_locations(self): - """Returns a list of (filename, linenr) tuples, where filename (string) - and linenr (int) represent a location where the symbol is defined. For - the vast majority of symbols this list will only contain one element. - For the following Kconfig, FOO would get two entries: the lines marked - with *. - - config FOO * - bool "foo prompt 1" - - config FOO * - bool "foo prompt 2" - """ - return self.def_locations - - def get_ref_locations(self): - """Returns a list of (filename, linenr) tuples, where filename (string) - and linenr (int) represent a location where the symbol is referenced in - the configuration. For example, the lines marked by * would be included - for FOO below: - - config A - bool - default BAR || FOO * - - config B - tristate - depends on FOO * - default m if FOO * - - if FOO * - config A - bool "A" - endif - - config FOO (definition not included) - bool - """ - return self.ref_locations - - def is_modifiable(self): - """Returns True if the value of the symbol could be modified by calling - Symbol.set_user_value(). - - For bools and tristates, this corresponds to the symbol being visible - in the 'make menuconfig' interface and not already being pinned to a - specific value (e.g. because it is selected by another symbol). - - For strings and numbers, this corresponds to just being visible. (See - Symbol.get_visibility().)""" - if self.is_special_: - return False - if self.type == BOOL or self.type == TRISTATE: - rev_dep = self.config._eval_expr(self.rev_dep) - # A bool selected to "m" gets promoted to "y" - if self.type == BOOL and rev_dep == "m": - rev_dep = "y" - return (tri_to_int[_get_visibility(self)] - - tri_to_int[rev_dep]) > 0 - return _get_visibility(self) != "n" - - def is_defined(self): - """Returns False if the symbol is referred to in the Kconfig but never - actually defined.""" - return self.is_defined_ - - def is_special(self): - """Returns True if the symbol is one of the special symbols n, m, y, or - UNAME_RELEASE, or gets its value from the environment.""" - return self.is_special_ - - def is_from_environment(self): - """Returns True if the symbol gets its value from the environment.""" - return self.is_from_env - - def has_ranges(self): - """Returns True if the symbol is of type INT or HEX and has ranges that - limit what values it can take on.""" - return self.ranges != [] - - def is_choice_symbol(self): - """Returns True if the symbol is in a choice statement and is an actual - choice symbol (see Choice.get_symbols()).""" - return self.is_choice_symbol_ - - def is_choice_selection(self): - """Returns True if the symbol is contained in a choice statement and is - the selected item. Equivalent to - 'sym.is_choice_symbol() and sym.get_parent().get_selection() is sym'.""" - return self.is_choice_symbol_ and self.parent.get_selection() is self - - def is_allnoconfig_y(self): - """Returns True if the symbol has the 'allnoconfig_y' option set.""" - return self.allnoconfig_y - - def __str__(self): - """Returns a string containing various information about the symbol.""" - return self.config._get_sym_or_choice_str(self) - - # - # Private methods - # - - def __init__(self): - """Symbol constructor -- not intended to be called directly by - kconfiglib clients.""" - - self.prompts = [] - self.cached_visibility = None - - self.config = None - - self.parent = None - self.name = None - self.type = UNKNOWN - - self.def_exprs = [] - self.ranges = [] - self.rev_dep = "n" - - # The prompt, default value and select conditions without any - # dependencies from menus or if's propagated to them - - self.orig_prompts = [] - self.orig_def_exprs = [] - self.orig_selects = [] - - # Dependencies inherited from containing menus and if's - self.deps_from_containing = None - - self.help = None - - # The set of symbols referenced by this symbol (see - # get_referenced_symbols()) - self.referenced_syms = set() - - # The set of symbols selected by this symbol (see - # get_selected_symbols()) - self.selected_syms = set() - - # Like 'referenced_syms', but includes symbols from - # dependencies inherited from enclosing menus and if's - self.all_referenced_syms = set() - - # This is set to True for "actual" choice symbols. See - # Choice._determine_actual_symbols(). The trailing underscore avoids a - # collision with is_choice_symbol(). - self.is_choice_symbol_ = False - - # This records only dependencies specified with 'depends on'. Needed - # when determining actual choice items (hrrrr...). See also - # Choice._determine_actual_symbols(). - self.menu_dep = None - - # See Symbol.get_ref/def_locations(). - self.def_locations = [] - self.ref_locations = [] - - self.user_val = None - - # Flags - - # Should the symbol get an entry in .config? - self.write_to_conf = False - - # Caches the calculated value - self.cached_val = None - - # Populated in Config._build_dep() after parsing. Links the symbol to - # the symbols that immediately depend on it (in a caching/invalidation - # sense). The total set of dependent symbols for the symbol (the - # transitive closure) is calculated on an as-needed basis in - # _get_dependent(). - self.dep = set() - - # Caches the total list of dependent symbols. Calculated in - # _get_dependent(). - self.cached_deps = None - - # Does the symbol have an entry in the Kconfig file? The trailing - # underscore avoids a collision with is_defined(). - self.is_defined_ = False - - # Does the symbol get its value in some special way, e.g. from the - # environment or by being one of the special symbols n, m, and y? If - # so, the value is stored in self.cached_val, which is never - # invalidated. The trailing underscore avoids a collision with - # is_special(). - self.is_special_ = False - - # Does the symbol get its value from the environment? - self.is_from_env = False - - # Does the symbol have the 'allnoconfig_y' option set? - self.allnoconfig_y = False - - def _invalidate(self): - if self.is_special_: - return - - if self.is_choice_symbol_: - self.parent._invalidate() - - self.cached_val = None - self.cached_visibility = None - self.write_to_conf = False - - def _invalidate_dependent(self): - for sym in self._get_dependent(): - sym._invalidate() - - def _set_user_value_no_invalidate(self, v, suppress_load_warnings): - """Like set_user_value(), but does not invalidate any symbols. - - suppress_load_warnings -- - some warnings are annoying when loading a .config that can be helpful - when manually invoking set_user_value(). This flag is set to True to - suppress such warnings. - - Perhaps this could be made optional for load_config() instead.""" - - if self.is_special_: - if self.is_from_env: - self.config._warn('attempt to assign the value "{0}" to the ' - 'symbol {1}, which gets its value from the ' - 'environment. Assignment ignored.' - .format(v, self.name)) - else: - self.config._warn('attempt to assign the value "{0}" to the ' - 'special symbol {1}. Assignment ignored.' - .format(v, self.name)) - return - - if not self.is_defined_: - filename, linenr = self.ref_locations[0] - if self.config.print_undef_assign: - _stderr_msg('note: attempt to assign the value "{0}" to {1}, ' - "which is referenced at {2}:{3} but never " - "defined. Assignment ignored." - .format(v, self.name, filename, linenr)) - return - - # Check if the value is valid for our type - if not ((self.type == BOOL and (v == "y" or v == "n") ) or - (self.type == TRISTATE and (v == "y" or v == "m" or - v == "n") ) or - (self.type == STRING ) or - (self.type == INT and _is_base_n(v, 10) ) or - (self.type == HEX and _is_base_n(v, 16) )): - self.config._warn('the value "{0}" is invalid for {1}, which has type {2}. ' - "Assignment ignored." - .format(v, self.name, typename[self.type])) - return - - if self.prompts == [] and not suppress_load_warnings: - self.config._warn('assigning "{0}" to the symbol {1} which ' - 'lacks prompts and thus has visibility "n". ' - 'The assignment will have no effect.' - .format(v, self.name)) - - self.user_val = v - - if self.is_choice_symbol_ and (self.type == BOOL or - self.type == TRISTATE): - choice = self.parent - if v == "y": - choice.user_val = self - choice.user_mode = "y" - elif v == "m": - choice.user_val = None - choice.user_mode = "m" - - def _unset_user_value_no_recursive_invalidate(self): - self._invalidate() - self.user_val = None - - if self.is_choice_symbol_: - self.parent._unset_user_value() - - def _make_conf(self): - if self.already_written: - return [] - - self.already_written = True - - # Note: write_to_conf is determined in get_value() - val = self.get_value() - if not self.write_to_conf: - return [] - - if self.type == BOOL or self.type == TRISTATE: - if val == "m" or val == "y": - return ["CONFIG_{0}={1}".format(self.name, val)] - return ["# CONFIG_{0} is not set".format(self.name)] - - elif self.type == STRING: - # Escape \ and " - return ['CONFIG_{0}="{1}"' - .format(self.name, - val.replace("\\", "\\\\").replace('"', '\\"'))] - - elif self.type == INT or self.type == HEX: - return ["CONFIG_{0}={1}".format(self.name, val)] - - else: - _internal_error('Internal error while creating .config: unknown type "{0}".' - .format(self.type)) - - def _get_dependent(self): - """Returns the set of symbols that should be invalidated if the value - of the symbol changes, because they might be affected by the change. - Note that this is an internal API -- it's probably of limited - usefulness to clients.""" - if self.cached_deps is not None: - return self.cached_deps - - res = set() - - self._add_dependent_ignore_siblings(res) - if self.is_choice_symbol_: - for s in self.parent.get_symbols(): - if s is not self: - res.add(s) - s._add_dependent_ignore_siblings(res) - - self.cached_deps = res - return res - - def _add_dependent_ignore_siblings(self, to): - """Calculating dependencies gets a bit tricky for choice items as they - all depend on each other, potentially leading to infinite recursion. - This helper function calculates dependencies ignoring the other symbols - in the choice. It also works fine for symbols that are not choice - items.""" - for s in self.dep: - to.add(s) - to |= s._get_dependent() - - def _has_auto_menu_dep_on(self, on): - """See Choice._determine_actual_symbols().""" - if not isinstance(self.parent, Choice): - _internal_error("Attempt to determine auto menu dependency for symbol ouside of choice.") - - if self.prompts == []: - # If we have no prompt, use the menu dependencies instead (what was - # specified with 'depends on') - return self.menu_dep is not None and \ - self.config._expr_depends_on(self.menu_dep, on) - - for _, cond_expr in self.prompts: - if self.config._expr_depends_on(cond_expr, on): - return True - - return False - -class Menu(Item): - - """Represents a menu statement.""" - - # - # Public interface - # - - def get_config(self): - """Return the Config instance this menu is from.""" - return self.config - - def get_visibility(self): - """Returns the visibility of the menu. This also affects the visibility - of subitems. See also Symbol.get_visibility().""" - return self.config._eval_expr(self.dep_expr) - - def get_visible_if_visibility(self): - """Returns the visibility the menu gets from its 'visible if' - condition. "y" if the menu has no 'visible if' condition.""" - return self.config._eval_expr(self.visible_if_expr) - - def get_items(self, recursive = False): - """Returns a list containing the items (symbols, menus, choice - statements and comments) in in the menu, in the same order that the - items appear within the menu. - - recursive (default: False) -- True if items contained in items within - the menu should be included - recursively (preorder).""" - - if not recursive: - return self.block - - res = [] - for item in self.block: - res.append(item) - if isinstance(item, Menu): - res.extend(item.get_items(True)) - elif isinstance(item, Choice): - res.extend(item.get_items()) - return res - - def get_symbols(self, recursive = False): - """Returns a list containing the symbols in the menu, in the same order - that they appear within the menu. - - recursive (default: False) -- True if symbols contained in items within - the menu should be included - recursively.""" - - return [item for item in self.get_items(recursive) if isinstance(item, Symbol)] - - def get_title(self): - """Returns the title text of the menu.""" - return self.title - - def get_parent(self): - """Returns the menu or choice statement that contains the menu, or - None if the menu is at the top level. Note that if statements are - treated as syntactic sugar and do not have an explicit class - representation.""" - return self.parent - - def get_referenced_symbols(self, refs_from_enclosing = False): - """See Symbol.get_referenced_symbols().""" - return self.all_referenced_syms if refs_from_enclosing else self.referenced_syms - - def get_location(self): - """Returns the location of the menu as a (filename, linenr) tuple, - where filename is a string and linenr an int.""" - return (self.filename, self.linenr) - - def __str__(self): - """Returns a string containing various information about the menu.""" - depends_on_str = self.config._expr_val_str(self.orig_deps, - "(no dependencies)") - visible_if_str = self.config._expr_val_str(self.visible_if_expr, - "(no dependencies)") - - additional_deps_str = " " + self.config._expr_val_str(self.deps_from_containing, - "(no additional dependencies)") - - return _sep_lines("Menu", - "Title : " + self.title, - "'depends on' dependencies : " + depends_on_str, - "'visible if' dependencies : " + visible_if_str, - "Additional dependencies from enclosing menus and if's:", - additional_deps_str, - "Location: {0}:{1}".format(self.filename, self.linenr)) - - # - # Private methods - # - - def __init__(self): - """Menu constructor -- not intended to be called directly by - kconfiglib clients.""" - - self.config = None - - self.parent = None - self.title = None - self.block = None - self.dep_expr = None - - # Dependency expression without dependencies from enclosing menus and - # if's propagated - self.orig_deps = None - - # Dependencies inherited from containing menus and if's - self.deps_from_containing = None - - # The 'visible if' expression - self.visible_if_expr = None - - # The set of symbols referenced by this menu (see - # get_referenced_symbols()) - self.referenced_syms = set() - - # Like 'referenced_syms', but includes symbols from - # dependencies inherited from enclosing menus and if's - self.all_referenced_syms = None - - self.filename = None - self.linenr = None - - def _make_conf(self): - item_conf = _make_block_conf(self.block) - - if self.config._eval_expr(self.dep_expr) != "n" and \ - self.config._eval_expr(self.visible_if_expr) != "n": - return ["\n#\n# {0}\n#".format(self.title)] + item_conf - return item_conf - -class Choice(Item): - - """Represents a choice statement. A choice can be in one of three modes: - - "n" - The choice is not visible and no symbols can be selected. - - "m" - Any number of symbols can be set to "m". The rest will be "n". This - is safe since potentially conflicting options don't actually get - compiled into the kernel simultaneously with "m". - - "y" - One symbol will be "y" while the rest are "n". - - Only tristate choices can be in "m" mode, and the visibility of the choice - is an upper bound on the mode, so that e.g. a choice that depends on a - symbol with value "m" will be in "m" mode. - - The mode changes automatically when a value is assigned to a symbol within - the choice. - - See Symbol.get_visibility() too.""" - - # - # Public interface - # - - def get_selection(self): - """Returns the symbol selected (either by the user or through - defaults), or None if either no symbol is selected or the mode is not - "y".""" - if self.cached_selection is not None: - if self.cached_selection == NO_SELECTION: - return None - return self.cached_selection - - if self.get_mode() != "y": - return self._cache_ret(None) - - # User choice available? - if self.user_val is not None and _get_visibility(self.user_val) == "y": - return self._cache_ret(self.user_val) - - if self.optional: - return self._cache_ret(None) - - return self._cache_ret(self.get_selection_from_defaults()) - - def get_selection_from_defaults(self): - """Like Choice.get_selection(), but acts as if no symbol has been - selected by the user and no 'optional' flag is in effect.""" - - if self.actual_symbols == []: - return None - - for symbol, cond_expr in self.def_exprs: - if self.config._eval_expr(cond_expr) != "n": - chosen_symbol = symbol - break - else: - chosen_symbol = self.actual_symbols[0] - - # Is the chosen symbol visible? - if _get_visibility(chosen_symbol) != "n": - return chosen_symbol - # Otherwise, pick the first visible symbol - for sym in self.actual_symbols: - if _get_visibility(sym) != "n": - return sym - return None - - def get_user_selection(self): - """If the choice is in "y" mode and has a user-selected symbol, returns - that symbol. Otherwise, returns None.""" - return self.user_val - - def get_config(self): - """Returns the Config instance this choice is from.""" - return self.config - - def get_name(self): - """For named choices, returns the name. Returns None for unnamed - choices. No named choices appear anywhere in the kernel Kconfig files - as of Linux 3.7.0-rc8.""" - return self.name - - def get_prompts(self): - """Returns a list of prompts defined for the choice, in the order they - appear in the configuration files. Returns the empty list for choices - with no prompt. - - This list will have a single entry for the vast majority of choices - having prompts, but having multiple prompts for a single choice is - possible through having multiple 'choice' entries for it (though I'm - not sure if that ever happens in practice).""" - return [prompt for prompt, _ in self.orig_prompts] - - def get_help(self): - """Returns the help text of the choice, or None if the choice has no - help text.""" - return self.help - - def get_type(self): - """Returns the type of the choice. See Symbol.get_type().""" - return self.type - - def get_items(self): - """Gets all items contained in the choice in the same order as within - the configuration ("items" instead of "symbols" since choices and - comments might appear within choices. This only happens in one place as - of Linux 3.7.0-rc8, in drivers/usb/gadget/Kconfig).""" - return self.block - - def get_symbols(self): - """Returns a list containing the choice's symbols. - - A quirk (perhaps a bug) of Kconfig is that you can put items within a - choice that will not be considered members of the choice insofar as - selection is concerned. This happens for example if one symbol within a - choice 'depends on' the symbol preceding it, or if you put non-symbol - items within choices. - - As of Linux 3.7.0-rc8, this seems to be used intentionally in one - place: drivers/usb/gadget/Kconfig. - - This function returns the "proper" symbols of the choice in the order - they appear in the choice, excluding such items. If you want all items - in the choice, use get_items().""" - return self.actual_symbols - - def get_parent(self): - """Returns the menu or choice statement that contains the choice, or - None if the choice is at the top level. Note that if statements are - treated as syntactic sugar and do not have an explicit class - representation.""" - return self.parent - - def get_referenced_symbols(self, refs_from_enclosing = False): - """See Symbol.get_referenced_symbols().""" - return self.all_referenced_syms if refs_from_enclosing else self.referenced_syms - - def get_def_locations(self): - """Returns a list of (filename, linenr) tuples, where filename (string) - and linenr (int) represent a location where the choice is defined. For - the vast majority of choices (all of them as of Linux 3.7.0-rc8) this - list will only contain one element, but its possible for named choices - to be defined in multiple locations.""" - return self.def_locations - - def get_visibility(self): - """Returns the visibility of the choice statement: one of "n", "m" or - "y". This acts as an upper limit on the mode of the choice (though bool - choices can only have the mode "y"). See the class documentation for an - explanation of modes.""" - return _get_visibility(self) - - def get_mode(self): - """Returns the mode of the choice. See the class documentation for - an explanation of modes.""" - minimum_mode = "n" if self.optional else "m" - mode = self.user_mode if self.user_mode is not None else minimum_mode - mode = self.config._eval_min(mode, _get_visibility(self)) - - # Promote "m" to "y" for boolean choices - if mode == "m" and self.type == BOOL: - return "y" - - return mode - - def is_optional(self): - """Returns True if the choice has the 'optional' flag set (and so will - default to "n" mode).""" - return self.optional - - def __str__(self): - """Returns a string containing various information about the choice - statement.""" - return self.config._get_sym_or_choice_str(self) - - # - # Private methods - # - - def __init__(self): - """Choice constructor -- not intended to be called directly by - kconfiglib clients.""" - - self.prompts = [] - self.cached_visibility = None - - self.config = None - - self.parent = None - self.name = None # Yes, choices can be named - self.type = UNKNOWN - self.def_exprs = [] - self.help = None - self.optional = False - self.block = None - - # The prompts and default values without any dependencies from - # enclosing menus or if's propagated - - self.orig_prompts = [] - self.orig_def_exprs = [] - - # Dependencies inherited from containing menus and if's - self.deps_from_containing = None - - # We need to filter out symbols that appear within the choice block but - # are not considered choice items (see - # Choice._determine_actual_symbols()) This list holds the "actual" choice - # items. - self.actual_symbols = [] - - # The set of symbols referenced by this choice (see - # get_referenced_symbols()) - self.referenced_syms = set() - - # Like 'referenced_syms', but includes symbols from - # dependencies inherited from enclosing menus and if's - self.all_referenced_syms = set() - - # See Choice.get_def_locations() - self.def_locations = [] - - self.user_val = None - self.user_mode = None - - self.cached_selection = None - - def _determine_actual_symbols(self): - """If a symbol's visibility depends on the preceding symbol within a - choice, it is no longer viewed as a choice item. (This is quite - possibly a bug, but some things consciously use it... ugh. It stems - from automatic submenu creation.) In addition, it's possible to have - choices and comments within choices, and those shouldn't be considered - choice items either. Only drivers/usb/gadget/Kconfig seems to depend on - any of this. This method computes the "actual" items in the choice and - sets the is_choice_symbol_ flag on them (retrieved via - is_choice_symbol()). - - Don't let this scare you: an earlier version simply checked for a - sequence of symbols where all symbols after the first appeared in the - 'depends on' expression of the first, and that worked fine. The added - complexity is to be future-proof in the event that - drivers/usb/gadget/Kconfig turns even more sinister. It might very well - be overkilling things (especially if that file is refactored ;).""" - - # Items might depend on each other in a tree structure, so we need a - # stack to keep track of the current tentative parent - stack = [] - - for item in self.block: - if not isinstance(item, Symbol): - stack = [] - continue - - while stack != []: - if item._has_auto_menu_dep_on(stack[-1]): - # The item should not be viewed as a choice item, so don't - # set item.is_choice_symbol_. - stack.append(item) - break - else: - stack.pop() - else: - item.is_choice_symbol_ = True - self.actual_symbols.append(item) - stack.append(item) - - def _cache_ret(self, selection): - # As None is used to indicate the lack of a cached value we can't use - # that to cache the fact that the choice has no selection. Instead, we - # use the symbolic constant NO_SELECTION. - if selection is None: - self.cached_selection = NO_SELECTION - else: - self.cached_selection = selection - - return selection - - def _invalidate(self): - self.cached_selection = None - self.cached_visibility = None - - def _unset_user_value(self): - self._invalidate() - self.user_val = None - self.user_mode = None - - def _make_conf(self): - return _make_block_conf(self.block) - -class Comment(Item): - - """Represents a comment statement.""" - - # - # Public interface - # - - def get_config(self): - """Returns the Config instance this comment is from.""" - return self.config - - def get_visibility(self): - """Returns the visibility of the comment. See also - Symbol.get_visibility().""" - return self.config._eval_expr(self.dep_expr) - - def get_text(self): - """Returns the text of the comment.""" - return self.text - - def get_parent(self): - """Returns the menu or choice statement that contains the comment, or - None if the comment is at the top level. Note that if statements are - treated as syntactic sugar and do not have an explicit class - representation.""" - return self.parent - - def get_referenced_symbols(self, refs_from_enclosing = False): - """See Symbol.get_referenced_symbols().""" - return self.all_referenced_syms if refs_from_enclosing else self.referenced_syms - - def get_location(self): - """Returns the location of the comment as a (filename, linenr) tuple, - where filename is a string and linenr an int.""" - return (self.filename, self.linenr) - - def __str__(self): - """Returns a string containing various information about the comment.""" - dep_str = self.config._expr_val_str(self.orig_deps, "(no dependencies)") - - additional_deps_str = " " + self.config._expr_val_str(self.deps_from_containing, - "(no additional dependencies)") - - return _sep_lines("Comment", - "Text: " + str(self.text), - "Dependencies: " + dep_str, - "Additional dependencies from enclosing menus and if's:", - additional_deps_str, - "Location: {0}:{1}".format(self.filename, self.linenr)) - - # - # Private methods - # - - def __init__(self): - """Comment constructor -- not intended to be called directly by - kconfiglib clients.""" - - self.config = None - - self.parent = None - self.text = None - self.dep_expr = None - - # Dependency expression without dependencies from enclosing menus and - # if's propagated - self.orig_deps = None - - # Dependencies inherited from containing menus and if's - self.deps_from_containing = None - - # The set of symbols referenced by this comment (see - # get_referenced_symbols()) - self.referenced_syms = set() - - # Like 'referenced_syms', but includes symbols from - # dependencies inherited from enclosing menus and if's - self.all_referenced_syms = None - - self.filename = None - self.linenr = None - - def _make_conf(self): - if self.config._eval_expr(self.dep_expr) != "n": - return ["\n#\n# {0}\n#".format(self.text)] - return [] - -class Kconfig_Syntax_Error(Exception): - """Exception raised for syntax errors.""" - pass - -class Internal_Error(Exception): - """Exception raised for internal errors.""" - pass - -# -# Public functions -# - -def tri_less(v1, v2): - """Returns True if the tristate v1 is less than the tristate v2, where "n", - "m" and "y" are ordered from lowest to highest.""" - return tri_to_int[v1] < tri_to_int[v2] - -def tri_less_eq(v1, v2): - """Returns True if the tristate v1 is less than or equal to the tristate - v2, where "n", "m" and "y" are ordered from lowest to highest.""" - return tri_to_int[v1] <= tri_to_int[v2] - -def tri_greater(v1, v2): - """Returns True if the tristate v1 is greater than the tristate v2, where - "n", "m" and "y" are ordered from lowest to highest.""" - return tri_to_int[v1] > tri_to_int[v2] - -def tri_greater_eq(v1, v2): - """Returns True if the tristate v1 is greater than or equal to the tristate - v2, where "n", "m" and "y" are ordered from lowest to highest.""" - return tri_to_int[v1] >= tri_to_int[v2] - -# -# Internal classes -# - -class _Feed(object): - - """Class for working with sequences in a stream-like fashion; handy for tokens.""" - - def __init__(self, items): - self.items = items - self.length = len(self.items) - self.i = 0 - - def get_next(self): - if self.i >= self.length: - return None - - item = self.items[self.i] - self.i += 1 - return item - - def peek_next(self): - return None if self.i >= self.length else self.items[self.i] - - def check(self, token): - """Check if the next token is 'token'. If so, remove it from the token - feed and return True. Otherwise, leave it in and return False.""" - if self.i < self.length and self.items[self.i] == token: - self.i += 1 - return True - return False - - def go_back(self): - if self.i <= 0: - _internal_error("Attempt to move back in Feed while already at the beginning.") - self.i -= 1 - - def go_to_start(self): - self.i = 0 - - def __len__(self): - return self.length - -class _FileFeed(_Feed): - - """_Feed subclass that feeds lines from a file. Joins any line ending in - \\ with the following line. Keeps track of the filename and current line - number.""" - - def __init__(self, filename): - self.filename = _clean_up_path(filename) - _Feed.__init__(self, _get_lines(filename)) - - def remove_blank(self): - """Removes lines until the first non-blank (not all-space) line.""" - while self.i < self.length and self.items[self.i].isspace(): - self.i += 1 - - def get_filename(self): - return self.filename - - def get_linenr(self): - return self.i - -# -# Internal functions -# - -def _get_visibility(sc): - """Symbols and Choices have a "visibility" that acts as an upper bound on - the values a user can set for them, corresponding to the visibility in e.g. - 'make menuconfig'. This function calculates the visibility for the Symbol - or Choice 'sc' -- the logic is nearly identical.""" - if sc.cached_visibility is None: - vis = "n" - for _, cond_expr in sc.prompts: - vis = sc.config._eval_max(vis, cond_expr) - - if isinstance(sc, Symbol) and sc.is_choice_symbol_: - vis = sc.config._eval_min(vis, _get_visibility(sc.parent)) - - # Promote "m" to "y" if we're dealing with a non-tristate - if vis == "m" and sc.type != TRISTATE: - vis = "y" - - sc.cached_visibility = vis - - return sc.cached_visibility - -def _make_and(e1, e2): - """Constructs an AND (&&) expression. Performs trivial simplification. - Nones equate to 'y'. - - Note: returns None if e1 == e2 == None.""" - if e1 == "n" or e2 == "n": - return "n" - if e1 is None or e1 == "y": - return e2 - if e2 is None or e2 == "y": - return e1 - - # Prefer to merge/update argument list if possible instead of creating - # a new AND node - - if isinstance(e1, tuple) and e1[0] == AND: - if isinstance(e2, tuple) and e2[0] == AND: - return (AND, e1[1] + e2[1]) - return (AND, e1[1] + [e2]) - - if isinstance(e2, tuple) and e2[0] == AND: - return (AND, e2[1] + [e1]) - - return (AND, [e1, e2]) - -def _make_or(e1, e2): - """Constructs an OR (||) expression. Performs trivial simplification and - avoids Nones. Nones equate to 'y', which is usually what we want, but needs - to be kept in mind.""" - - # Perform trivial simplification and avoid None's (which - # correspond to y's) - if e1 is None or e2 is None or e1 == "y" or e2 == "y": - return "y" - if e1 == "n": - return e2 - if e2 == "n": - return e1 - - # Prefer to merge/update argument list if possible instead of creating - # a new OR node - - if isinstance(e1, tuple) and e1[0] == OR: - if isinstance(e2, tuple) and e2[0] == OR: - return (OR, e1[1] + e2[1]) - return (OR, e1[1] + [e2]) - - if isinstance(e2, tuple) and e2[0] == OR: - return (OR, e2[1] + [e1]) - - return (OR, [e1, e2]) - -def _get_expr_syms(expr): - """Returns the set() of symbols appearing in expr.""" - res = set() - if expr is None: - return res - - def rec(expr): - if isinstance(expr, Symbol): - res.add(expr) - return - if isinstance(expr, str): - return - - e0 = expr[0] - if e0 == AND or e0 == OR: - for term in expr[1]: - rec(term) - elif e0 == NOT: - rec(expr[1]) - elif e0 == EQUAL or e0 == UNEQUAL: - _, v1, v2 = expr - if isinstance(v1, Symbol): - res.add(v1) - if isinstance(v2, Symbol): - res.add(v2) - else: - _internal_error("Internal error while fetching symbols from an " - "expression with token stream {0}.".format(expr)) - - rec(expr) - return res - -def _str_val(obj): - """Returns the value of obj as a string. If obj is not a string (constant - symbol), it must be a Symbol.""" - return obj if isinstance(obj, str) else obj.get_value() - -def _make_block_conf(block): - """Returns a list of .config strings for a block (list) of items.""" - - # Collect the substrings in a list and later use join() instead of += to - # build the final .config contents. With older Python versions, this yields - # linear instead of quadratic complexity. - strings = [] - for item in block: - strings.extend(item._make_conf()) - return strings - -def _sym_str_string(sym_or_str): - if isinstance(sym_or_str, str): - return '"' + sym_or_str + '"' - return sym_or_str.name - -def _intersperse(lst, op): - """_expr_to_str() helper. Gets the string representation of each expression in lst - and produces a list where op has been inserted between the elements.""" - if lst == []: - return "" - - res = [] - - def handle_sub_expr(expr): - no_parens = isinstance(expr, (str, Symbol)) or \ - expr[0] in (EQUAL, UNEQUAL) or \ - precedence[op] <= precedence[expr[0]] - if not no_parens: - res.append("(") - res.extend(_expr_to_str_rec(expr)) - if not no_parens: - res.append(")") - - op_str = op_to_str[op] - - handle_sub_expr(lst[0]) - for expr in lst[1:]: - res.append(op_str) - handle_sub_expr(expr) - - return res - -def _expr_to_str_rec(expr): - if expr is None: - return [""] - - if isinstance(expr, (Symbol, str)): - return [_sym_str_string(expr)] - - e0 = expr[0] - - if e0 == AND or e0 == OR: - return _intersperse(expr[1], expr[0]) - - if e0 == NOT: - need_parens = not isinstance(expr[1], (str, Symbol)) - - res = ["!"] - if need_parens: - res.append("(") - res.extend(_expr_to_str_rec(expr[1])) - if need_parens: - res.append(")") - return res - - if e0 == EQUAL or e0 == UNEQUAL: - return [_sym_str_string(expr[1]), - op_to_str[expr[0]], - _sym_str_string(expr[2])] - -def _expr_to_str(expr): - return "".join(_expr_to_str_rec(expr)) - -def _indentation(line): - """Returns the length of the line's leading whitespace, treating tab stops - as being spaced 8 characters apart.""" - line = line.expandtabs() - return len(line) - len(line.lstrip()) - -def _deindent(line, indent): - """Deindent 'line' by 'indent' spaces.""" - line = line.expandtabs() - if len(line) <= indent: - return line - return line[indent:] - -def _is_base_n(s, n): - try: - int(s, n) - return True - except ValueError: - return False - -def _sep_lines(*args): - """Returns a string comprised of all arguments, with newlines inserted - between them.""" - return "\n".join(args) - -def _comment(s): - """Returns a new string with "#" inserted before each line in 's'.""" - if not s: - return "#" - res = "".join(["#" + line for line in s.splitlines(True)]) - if s.endswith("\n"): - return res + "#" - return res - -def _get_lines(filename): - """Returns a list of lines from 'filename', joining any line ending in \\ - with the following line.""" - with open(filename, "r") as f: - lines = [] - accum = "" - for line in f: - if line.endswith("\\\n"): - accum += line[:-2] - else: - lines.append(accum + line) - accum = "" - return lines - -def _clean_up_path(path): - """Strips an initial "./" and any trailing slashes from 'path'.""" - if path.startswith("./"): - path = path[2:] - return path.rstrip("/") - -def _stderr_msg(msg, filename, linenr): - if filename is not None: - sys.stderr.write("{0}:{1}: ".format(_clean_up_path(filename), linenr)) - sys.stderr.write(msg + "\n") - -def _tokenization_error(s, filename, linenr): - loc = "" if filename is None else "{0}:{1}: ".format(filename, linenr) - raise Kconfig_Syntax_Error("{0}Couldn't tokenize '{1}'" - .format(loc, s.strip())) - -def _parse_error(s, msg, filename, linenr): - loc = "" if filename is None else "{0}:{1}: ".format(filename, linenr) - raise Kconfig_Syntax_Error("{0}Couldn't parse '{1}'{2}" - .format(loc, s.strip(), - "." if msg is None else ": " + msg)) - -def _internal_error(msg): - raise Internal_Error(msg + - "\nSorry! You may want to send an email to ulfalizer a.t Google's " \ - "email service to tell me about this. Include the message above " \ - "and the stack trace and describe what you were doing.") - -# -# Internal global constants -# - -# Tokens -(T_AND, T_OR, T_NOT, - T_OPEN_PAREN, T_CLOSE_PAREN, - T_EQUAL, T_UNEQUAL, - T_MAINMENU, T_MENU, T_ENDMENU, - T_SOURCE, T_CHOICE, T_ENDCHOICE, - T_COMMENT, T_CONFIG, T_MENUCONFIG, - T_HELP, T_IF, T_ENDIF, T_DEPENDS, T_ON, - T_OPTIONAL, T_PROMPT, T_DEFAULT, - T_BOOL, T_TRISTATE, T_HEX, T_INT, T_STRING, - T_DEF_BOOL, T_DEF_TRISTATE, - T_SELECT, T_RANGE, T_OPTION, T_ALLNOCONFIG_Y, T_ENV, - T_DEFCONFIG_LIST, T_MODULES, T_VISIBLE) = range(39) - -# The leading underscore before the function assignments below prevent pydoc -# from listing them. The constants could be hidden too, but they're fairly -# obviously internal anyway, so don't bother spamming the code. - -# Keyword to token map. Note that the get() method is assigned directly as a -# small optimization. -_get_keyword = { "mainmenu" : T_MAINMENU, - "menu" : T_MENU, - "endmenu" : T_ENDMENU, - "endif" : T_ENDIF, - "endchoice" : T_ENDCHOICE, - "source" : T_SOURCE, - "choice" : T_CHOICE, - "config" : T_CONFIG, - "comment" : T_COMMENT, - "menuconfig" : T_MENUCONFIG, - "help" : T_HELP, - "if" : T_IF, - "depends" : T_DEPENDS, - "on" : T_ON, - "optional" : T_OPTIONAL, - "prompt" : T_PROMPT, - "default" : T_DEFAULT, - "bool" : T_BOOL, - "boolean" : T_BOOL, - "tristate" : T_TRISTATE, - "int" : T_INT, - "hex" : T_HEX, - "def_bool" : T_DEF_BOOL, - "def_tristate" : T_DEF_TRISTATE, - "string" : T_STRING, - "select" : T_SELECT, - "range" : T_RANGE, - "option" : T_OPTION, - "allnoconfig_y" : T_ALLNOCONFIG_Y, - "env" : T_ENV, - "defconfig_list" : T_DEFCONFIG_LIST, - "modules" : T_MODULES, - "visible" : T_VISIBLE }.get - -# Strings to use for True and False -bool_str = { False : "false", True : "true" } - -# Tokens after which identifier-like lexemes are treated as strings. T_CHOICE -# is included to avoid symbols being registered for named choices. -string_lex = frozenset((T_BOOL, T_TRISTATE, T_INT, T_HEX, T_STRING, T_CHOICE, - T_PROMPT, T_MENU, T_COMMENT, T_SOURCE, T_MAINMENU)) - -# Matches the initial token on a line; see _tokenize(). -_initial_token_re_match = re.compile(r"[^\w]*(\w+)").match - -# Matches an identifier/keyword optionally preceded by whitespace -_id_keyword_re_match = re.compile(r"\s*([\w./-]+)").match - -# Regular expressions for parsing .config files -_set_re_match = re.compile(r"CONFIG_(\w+)=(.*)").match -_unset_re_match = re.compile(r"# CONFIG_(\w+) is not set").match - -# Regular expression for finding $-references to symbols in strings -_sym_ref_re_search = re.compile(r"\$[A-Za-z0-9_]+").search - -# Integers representing symbol types -UNKNOWN, BOOL, TRISTATE, STRING, HEX, INT = range(6) - -# Strings to use for types -typename = { UNKNOWN : "unknown", BOOL : "bool", TRISTATE : "tristate", - STRING : "string", HEX : "hex", INT : "int" } - -# Token to type mapping -token_to_type = { T_BOOL : BOOL, T_TRISTATE : TRISTATE, T_STRING : STRING, - T_INT : INT, T_HEX : HEX } - -# Default values for symbols of different types (the value the symbol gets if -# it is not assigned a user value and none of its 'default' clauses kick in) -default_value = { BOOL : "n", TRISTATE : "n", STRING : "", INT : "", HEX : "" } - -# Indicates that no item is selected in a choice statement -NO_SELECTION = 0 - -# Integers representing expression types -AND, OR, NOT, EQUAL, UNEQUAL = range(5) - -# Map from tristate values to integers -tri_to_int = { "n" : 0, "m" : 1, "y" : 2 } - -# Printing-related stuff - -op_to_str = { AND : " && ", OR : " || ", EQUAL : " = ", UNEQUAL : " != " } -precedence = { OR : 0, AND : 1, NOT : 2 } diff --git a/bsp/buildroot/support/scripts/mkusers b/bsp/buildroot/support/scripts/mkusers index e2c24c72..d8345787 100755 --- a/bsp/buildroot/support/scripts/mkusers +++ b/bsp/buildroot/support/scripts/mkusers @@ -35,7 +35,7 @@ PASSWD="${TARGET_DIR}/etc/passwd" SHADOW="${TARGET_DIR}/etc/shadow" GROUP="${TARGET_DIR}/etc/group" # /etc/gshadow is not part of the standard skeleton, so not everybody -# will have it, but some may hav it, and its content must be in sync +# will have it, but some may have it, and its content must be in sync # with /etc/group, so any use of gshadow must be conditional. GSHADOW="${TARGET_DIR}/etc/gshadow" @@ -43,7 +43,7 @@ GSHADOW="${TARGET_DIR}/etc/gshadow" # such as: # BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" # which when sourced from a shell script will eventually try to execute -# a command name 'CONFIG_DIR', which is plain wrong for virtually every +# a command named 'CONFIG_DIR', which is plain wrong for virtually every # systems out there. # So, we have to scan that file instead. Sigh... :-( PASSWD_METHOD="$( sed -r -e '/^BR2_TARGET_GENERIC_PASSWD_METHOD="(.*)"$/!d;' \ diff --git a/bsp/buildroot/support/scripts/pkg-stats b/bsp/buildroot/support/scripts/pkg-stats index cc3bef45..421fa5cf 100755 --- a/bsp/buildroot/support/scripts/pkg-stats +++ b/bsp/buildroot/support/scripts/pkg-stats @@ -94,6 +94,7 @@ for i in $(find boot/ linux/ package/ -name '*.mk' | sort) ; do if test \ $i = "boot/common.mk" -o \ + $i = "linux/linux-ext-ev3dev-linux-drivers.mk" -o \ $i = "linux/linux-ext-fbtft.mk" -o \ $i = "linux/linux-ext-xenomai.mk" -o \ $i = "linux/linux-ext-rtai.mk" -o \ diff --git a/bsp/buildroot/support/scripts/pkgutil.py b/bsp/buildroot/support/scripts/pkgutil.py new file mode 100644 index 00000000..a0e2352b --- /dev/null +++ b/bsp/buildroot/support/scripts/pkgutil.py @@ -0,0 +1,62 @@ +# Copyright (C) 2010-2013 Thomas Petazzoni + +import sys +import subprocess + +# Execute the "make -show-version" command to get the version of a given +# list of packages, and return the version formatted as a Python dictionary. +def get_version(pkgs): + sys.stderr.write("Getting version for %s\n" % pkgs) + cmd = ["make", "-s", "--no-print-directory" ] + for pkg in pkgs: + cmd.append("%s-show-version" % pkg) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) + output = p.communicate()[0] + if p.returncode != 0: + sys.stderr.write("Error getting version %s\n" % pkgs) + sys.exit(1) + output = output.split("\n") + if len(output) != len(pkgs) + 1: + sys.stderr.write("Error getting version\n") + sys.exit(1) + version = {} + for i in range(0, len(pkgs)): + pkg = pkgs[i] + version[pkg] = output[i] + return version + +def _get_depends(pkgs, rule): + sys.stderr.write("Getting dependencies for %s\n" % pkgs) + cmd = ["make", "-s", "--no-print-directory" ] + for pkg in pkgs: + cmd.append("%s-%s" % (pkg, rule)) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) + output = p.communicate()[0] + if p.returncode != 0: + sys.stderr.write("Error getting dependencies %s\n" % pkgs) + sys.exit(1) + output = output.split("\n") + if len(output) != len(pkgs) + 1: + sys.stderr.write("Error getting dependencies\n") + sys.exit(1) + deps = {} + for i in range(0, len(pkgs)): + pkg = pkgs[i] + pkg_deps = output[i].split(" ") + if pkg_deps == ['']: + deps[pkg] = [] + else: + deps[pkg] = pkg_deps + return deps + +# Execute the "make -show-depends" command to get the list of +# dependencies of a given list of packages, and return the list of +# dependencies formatted as a Python dictionary. +def get_depends(pkgs): + return _get_depends(pkgs, 'show-depends') + +# Execute the "make -show-rdepends" command to get the list of +# reverse dependencies of a given list of packages, and return the +# list of dependencies formatted as a Python dictionary. +def get_rdepends(pkgs): + return _get_depends(pkgs, 'show-rdepends') diff --git a/bsp/buildroot/support/scripts/readme.kconfiglib b/bsp/buildroot/support/scripts/readme.kconfiglib deleted file mode 100644 index 4b653b84..00000000 --- a/bsp/buildroot/support/scripts/readme.kconfiglib +++ /dev/null @@ -1,30 +0,0 @@ -Readme -====== - -Kconfiglib ----------- - -This python module, developped by Ulf Magnusson and released under the ISC -license, is fetched from: - -https://github.com/ulfalizer/Kconfiglib -commit: a95f477eafc0b6708c3ce671fce7302ecec4f789 - -Kconfiglib license -~~~~~~~~~~~~~~~~~~ - -License (ISC) - -Copyright (c) 2011-2013, Ulf Magnusson - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. diff --git a/bsp/buildroot/support/scripts/scancpan b/bsp/buildroot/support/scripts/scancpan index 3ee543a3..b6123de0 100755 --- a/bsp/buildroot/support/scripts/scancpan +++ b/bsp/buildroot/support/scripts/scancpan @@ -484,9 +484,9 @@ use HTTP::Tiny; use Safe; use MetaCPAN::API::Tiny; -# Below, 5.022 should be aligned with the version of perl actually +# Below, 5.024 should be aligned with the version of perl actually # bundled in Buildroot: -die <<"MSG" if $] < 5.022; +die <<"MSG" if $] < 5.024; This script needs a host perl with the same major version as Buildroot target perl. Your current host perl is: @@ -494,7 +494,7 @@ Your current host perl is: version $] You may install a local one by running: - perlbrew install perl-5.22.2 + perlbrew install perl-5.24.0 MSG my ($help, $man, $quiet, $force, $recommend, $test, $host); diff --git a/bsp/buildroot/support/scripts/size-stats b/bsp/buildroot/support/scripts/size-stats index 0ddcc079..af450003 100755 --- a/bsp/buildroot/support/scripts/size-stats +++ b/bsp/buildroot/support/scripts/size-stats @@ -88,11 +88,20 @@ def build_package_dict(builddir): def build_package_size(filesdict, builddir): pkgsize = collections.defaultdict(int) + seeninodes = set() for root, _, files in os.walk(os.path.join(builddir, "target")): for f in files: fpath = os.path.join(root, f) if os.path.islink(fpath): continue + + st = os.stat(fpath) + if st.st_ino in seeninodes: + # hard link + continue + else: + seeninodes.add(st.st_ino) + frelpath = os.path.relpath(fpath, os.path.join(builddir, "target")) if not frelpath in filesdict: print("WARNING: %s is not part of any package" % frelpath) @@ -100,7 +109,7 @@ def build_package_size(filesdict, builddir): else: pkg = filesdict[frelpath][0] - pkgsize[pkg] += os.path.getsize(fpath) + pkgsize[pkg] += st.st_size return pkgsize diff --git a/bsp/buildroot/support/scripts/test-pkg b/bsp/buildroot/support/scripts/test-pkg new file mode 100755 index 00000000..a040ce1a --- /dev/null +++ b/bsp/buildroot/support/scripts/test-pkg @@ -0,0 +1,195 @@ +#!/bin/bash +set -e + +TOOLCHAINS_URL='http://autobuild.buildroot.org/toolchains/configs/toolchain-configs.csv' + +main() { + local o O opts + local cfg dir pkg random toolchain + local ret nb nb_skip nb_fail + local -a toolchains + + o='hc:d:p:r:' + O='help,config-snippet:build-dir:package:,random:' + opts="$(getopt -n "${my_name}" -o "${o}" -l "${O}" -- "${@}")" + eval set -- "${opts}" + + random=0 + while [ ${#} -gt 0 ]; do + case "${1}" in + (-h|--help) + help; exit 0 + ;; + (-c|--config-snippet) + cfg="${2}"; shift 2 + ;; + (-d|--build-dir) + dir="${2}"; shift 2 + ;; + (-p|--package) + pkg="${2}"; shift 2 + ;; + (-r|--random) + random="${2}"; shift 2 + ;; + (--) + shift; break + ;; + esac + done + if [ -z "${cfg}" ]; then + printf "error: no config snippet specified\n" >&2; exit 1 + fi + if [ ! -e "${cfg}" ]; then + printf "error: %s: no such file\n" "${cfg}" >&2; exit 1 + fi + if [ -z "${dir}" ]; then + dir="${HOME}/br-test-pkg" + fi + + # Extract the URLs of the toolchains; drop internal toolchains + # E.g.: http://server/path/to/name.config,arch,libc + # --> http://server/path/to/name.config + toolchains=($(curl -s "${TOOLCHAINS_URL}" \ + |sed -r -e 's/,.*//; /internal/d;' \ + |if [ ${random} -gt 0 ]; then \ + sort -R |head -n ${random} + else + cat + fi |sort + ) + ) + + if [ ${#toolchains[@]} -eq 0 ]; then + printf "error: no toolchain found (networking issue?)\n" >&2; exit 1 + fi + + nb=0 + nb_skip=0 + nb_fail=0 + for toolchain in "${toolchains[@]}"; do + build_one "${dir}" "${toolchain}" "${cfg}" "${pkg}" && ret=0 || ret=${?} + case ${ret} in + (0) ;; + (1) : $((nb_skip++));; + (2) : $((nb_fail++));; + esac + : $((nb++)) + done + + printf "%d builds, %d skipped, %d failed\n" ${nb} ${nb_skip} ${nb_fail} +} + +build_one() { + local dir="${1}" + local url="${2}" + local cfg="${3}" + local pkg="${4}" + local toolchain + + # Using basename(1) on a URL works nicely + toolchain="$(basename "${url}" .config)" + + printf "%40s: " "${toolchain}" + + dir="${dir}/${toolchain}" + mkdir -p "${dir}" + + if ! curl -s "${url}" >"${dir}/.config"; then + printf "FAILED\n" + return 2 + fi + + cat >>"${dir}/.config" <<-_EOF_ + BR2_INIT_NONE=y + BR2_SYSTEM_BIN_SH_NONE=y + # BR2_PACKAGE_BUSYBOX is not set + # BR2_TARGET_ROOTFS_TAR is not set + _EOF_ + cat "${cfg}" >>"${dir}/.config" + + if ! make O="${dir}" olddefconfig >/dev/null 2>&1; then + printf "FAILED\n" + return 2 + fi + # We want all the options from the snippet to be present as-is (set + # or not set) in the actual .config; if one of them is not, it means + # some dependency from the toolchain or arch is not available, in + # which case this config is untestable and we skip it. + # We don't care about the locale to sort in, as long as both sort are + # done in the same locale. + comm -23 <(sort "${cfg}") <(sort "${dir}/.config") >"${dir}/missing.config" + if [ -s "${dir}/missing.config" ]; then + printf "SKIPPED\n" + return 1 + fi + # Remove file, it's empty anyway. + rm -f "${dir}/missing.config" + + if [ -n "${pkg}" ]; then + if ! make O="${dir}" "${pkg}-dirclean" >> "${dir}/logfile" 2>&1; then + printf "FAILED\n" + return 2 + fi + fi + + # shellcheck disable=SC2086 + if ! make O="${dir}" ${pkg} >> "${dir}/logfile" 2>&1; then + printf "FAILED\n" + return 2 + fi + + printf "OK\n" +} + +help() { + cat <<_EOF_ +test-pkg: test-build a package against various toolchains and architectures + +The supplied config snippet is appended to each toolchain config, the +resulting configuration is checked to ensure it still contains all options +specified in the snippet; if any is missing, the build is skipped, on the +assumption that the package under test requires a toolchain or architecture +feature that is missing. + +In case failures are noticed, you can fix the package and just re-run the +same command again; it will re-run the test where it failed. If you did +specify a package (with -p), the package build dir will be removed first. + +The list of toolchains is retrieved from the Buildroot autobuilders, available +at ${TOOLCHAINS_URL}. + +Options: + + -h, --help + Print this help. + + -c CFG, --config-snippet CFG + Use the CFG file as the source for the config snippet. This file + should contain all the config options required to build a package. + + -d DIR, --build-dir DIR + Do the builds in directory DIR, one sub-dir per toolchain. + + -p PKG, --package PKG + Test-build the package PKG, by running 'make PKG'; if not specified, + just runs 'make'. + + -r N, --random N + Limit the tests to the N randomly selected toolchains, instead of + building with all toolchains. + +Example: + + Testing libcec would require a config snippet that contains: + BR2_PACKAGE_LIBCEC=y + + Testing libcurl with openSSL support would require a snippet such as: + BR2_PACKAGE_OPENSSL=y + BR2_PACKAGE_LIBCURL=y + +_EOF_ +} + +my_name="${0##*/}" +main "${@}" diff --git a/bsp/buildroot/system/Config.in b/bsp/buildroot/system/Config.in index 353421a9..3ddf8433 100644 --- a/bsp/buildroot/system/Config.in +++ b/bsp/buildroot/system/Config.in @@ -127,7 +127,7 @@ config BR2_INIT_SYSTEMD depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 select BR2_ROOTFS_MERGED_USR select BR2_PACKAGE_SYSTEMD - select BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW + select BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW if BR2_ROOTFS_SKELETON_DEFAULT comment "systemd needs a glibc toolchain, headers >= 3.10" depends on !(BR2_TOOLCHAIN_USES_GLIBC \ @@ -158,7 +158,7 @@ config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV bool "Dynamic using devtmpfs + eudev" - depends on BR2_USE_WCHAR + depends on BR2_USE_WCHAR # eudev depends on !BR2_STATIC_LIBS depends on BR2_USE_MMU # eudev select BR2_PACKAGE_EUDEV @@ -276,13 +276,19 @@ config BR2_SYSTEM_BIN_SH_DASH depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS select BR2_PACKAGE_DASH +config BR2_SYSTEM_BIN_SH_MKSH + bool "mksh" + depends on BR2_USE_MMU # mksh + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_MKSH + config BR2_SYSTEM_BIN_SH_ZSH bool "zsh" depends on BR2_USE_MMU # zsh depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS select BR2_PACKAGE_ZSH -comment "bash, dash, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS" +comment "bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS" depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS && BR2_PACKAGE_BUSYBOX config BR2_SYSTEM_BIN_SH_NONE @@ -295,6 +301,7 @@ config BR2_SYSTEM_BIN_SH default "busybox" if BR2_SYSTEM_BIN_SH_BUSYBOX default "bash" if BR2_SYSTEM_BIN_SH_BASH default "dash" if BR2_SYSTEM_BIN_SH_DASH + default "mksh" if BR2_SYSTEM_BIN_SH_MKSH default "zsh" if BR2_SYSTEM_BIN_SH_ZSH menuconfig BR2_TARGET_GENERIC_GETTY @@ -365,7 +372,7 @@ config BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW config BR2_SYSTEM_DHCP string "Network interface to configure through DHCP" default "" - depends on !BR2_PACKAGE_SYSTEMD_NETWORKD && (BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN) + depends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || BR2_PACKAGE_SYSTEMD_NETWORKD help Enter here the name of the network interface (E.G. eth0) to automatically configure through DHCP at bootup. @@ -375,11 +382,8 @@ config BR2_SYSTEM_DHCP For more complicated network setups use an overlay to overwrite /etc/network/interfaces or add a networkd configuration file. -comment "automatic network configuration via DHCP is not compatible with networkd" - depends on BR2_PACKAGE_SYSTEMD_NETWORKD - -comment "automatic network configuration via DHCP needs ifupdown or busybox" - depends on !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN) +comment "automatic network configuration via DHCP needs ifupdown or busybox or networkd" + depends on !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || BR2_PACKAGE_SYSTEMD_NETWORKD) endif # BR2_ROOTFS_SKELETON_DEFAULT @@ -502,7 +506,7 @@ config BR2_ROOTFS_POST_FAKEROOT_SCRIPT This gives users the opportunity to do customisations of the content of the rootfs, which would otherwise require root - rigths. + rights. These scripts are called with the target directory name as first argument. The build will fail on the first scripts that diff --git a/bsp/buildroot/system/skeleton/etc/group b/bsp/buildroot/system/skeleton/etc/group index c813da20..76346b35 100644 --- a/bsp/buildroot/system/skeleton/etc/group +++ b/bsp/buildroot/system/skeleton/etc/group @@ -22,5 +22,5 @@ plugdev:x:46: staff:x:50: lock:x:54: netdev:x:82: -nogroup:x:99: users:x:100: +nogroup:x:65534: diff --git a/bsp/buildroot/system/skeleton/etc/passwd b/bsp/buildroot/system/skeleton/etc/passwd index 883265ad..d8281d25 100644 --- a/bsp/buildroot/system/skeleton/etc/passwd +++ b/bsp/buildroot/system/skeleton/etc/passwd @@ -6,4 +6,4 @@ sync:x:4:100:sync:/bin:/bin/sync mail:x:8:8:mail:/var/spool/mail:/bin/false www-data:x:33:33:www-data:/var/www:/bin/false operator:x:37:37:Operator:/var:/bin/false -nobody:x:99:99:nobody:/home:/bin/false +nobody:x:65534:65534:nobody:/home:/bin/false diff --git a/bsp/buildroot/toolchain/helpers.mk b/bsp/buildroot/toolchain/helpers.mk index 3991bc1c..72e72923 100644 --- a/bsp/buildroot/toolchain/helpers.mk +++ b/bsp/buildroot/toolchain/helpers.mk @@ -145,8 +145,7 @@ check_kernel_headers_version = \ check_gcc_version = \ expected_version="$(strip $2)" ; \ if [ -z "$${expected_version}" ]; then \ - printf "Internal error, gcc version unknown (no GCC_AT_LEAST_X_Y selected)\n"; \ - exit 1 ; \ + exit 0 ; \ fi; \ real_version=`$(1) --version | sed -r -e '1!d; s/^[^)]+\) ([^[:space:]]+).*/\1/;'` ; \ if [[ ! "$${real_version}" =~ ^$${expected_version}\. ]] ; then \ diff --git a/bsp/buildroot/toolchain/toolchain-buildroot/Config.in b/bsp/buildroot/toolchain/toolchain-buildroot/Config.in index 0b97bbf6..91cddc23 100644 --- a/bsp/buildroot/toolchain/toolchain-buildroot/Config.in +++ b/bsp/buildroot/toolchain/toolchain-buildroot/Config.in @@ -2,6 +2,8 @@ if BR2_TOOLCHAIN_BUILDROOT +comment "Toolchain Buildroot Options" + config BR2_TOOLCHAIN_BUILDROOT_VENDOR string "custom toolchain vendor name" default "buildroot" @@ -18,24 +20,20 @@ config BR2_TOOLCHAIN_BUILDROOT_VENDOR If you're not sure, just leave the default "buildroot" value. -source "package/linux-headers/Config.in.host" - choice prompt "C library" default BR2_TOOLCHAIN_UCLIBC - default BR2_TOOLCHAIN_BUILDROOT_GLIBC if BR2_aarch64 || BR2_aarch64_be \ - || BR2_powerpc64 + default BR2_TOOLCHAIN_BUILDROOT_GLIBC if BR2_powerpc64 config BR2_TOOLCHAIN_BUILDROOT_UCLIBC bool "uClibc-ng" select BR2_TOOLCHAIN_USES_UCLIBC - depends on BR2_arcle || BR2_arceb || BR2_arm || BR2_armeb || \ + depends on BR2_aarch64 || BR2_aarch64_be || BR2_arcle || BR2_arceb || \ + BR2_arm || BR2_armeb || \ BR2_bfin || BR2_i386 || BR2_m68k || BR2_microblaze || \ BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \ - BR2_powerpc || BR2_sh2a || BR2_sh4 || BR2_sh4eb || \ - BR2_sparc || BR2_xtensa || BR2_x86_64 - # Unsupported for MIPS R6 - depends on !BR2_mips_32r6 && !BR2_mips_64r6 + BR2_or1k || BR2_powerpc || BR2_sh2a || BR2_sh4 || \ + BR2_sh4eb || BR2_sparc || BR2_xtensa || BR2_x86_64 help This option selects uClibc-ng as the C library for the cross-compilation toolchain. @@ -48,8 +46,8 @@ config BR2_TOOLCHAIN_BUILDROOT_GLIBC BR2_aarch64_be || BR2_i386 || BR2_mips || \ BR2_mipsel || BR2_mips64 || BR2_mips64el|| \ BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \ - BR2_sh || BR2_sh64 || BR2_sparc64 || \ - BR2_x86_64 || BR2_microblaze || BR2_nios2 + BR2_sh || BR2_sparc64 || BR2_x86_64 || \ + BR2_microblaze || BR2_nios2 depends on BR2_USE_MMU depends on !BR2_STATIC_LIBS depends on !BR2_powerpc_SPE @@ -68,12 +66,11 @@ comment "glibc only available with shared lib support" config BR2_TOOLCHAIN_BUILDROOT_MUSL bool "musl" - depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ - BR2_microblaze || BR2_mips || BR2_mipsel || BR2_powerpc || \ - BR2_sh || BR2_x86_64 + depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ + BR2_microblaze || BR2_mips || BR2_mipsel || BR2_mips64 || \ + BR2_mips64el || BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \ + BR2_sh || BR2_x86_64 depends on !BR2_powerpc_SPE # not supported, build breaks - # Unsupported for MIPS R6 - depends on !BR2_mips_32r6 && !BR2_mips_64r6 # sh2 nommu is supported by musl, but we don't have support # for it in Buildroot. depends on BR2_USE_MMU @@ -90,6 +87,7 @@ config BR2_TOOLCHAIN_BUILDROOT_LIBC default "glibc" if BR2_TOOLCHAIN_BUILDROOT_GLIBC default "musl" if BR2_TOOLCHAIN_BUILDROOT_MUSL +source "package/linux-headers/Config.in.host" source "package/linux-headers/Config.in" source "package/musl/Config.in" source "package/uclibc/Config.in" diff --git a/bsp/buildroot/toolchain/toolchain-common.in b/bsp/buildroot/toolchain/toolchain-common.in index 03fa880e..96d57097 100644 --- a/bsp/buildroot/toolchain/toolchain-common.in +++ b/bsp/buildroot/toolchain/toolchain-common.in @@ -5,6 +5,19 @@ # so put it here instead source "package/gdb/Config.in.host" +comment "Toolchain Generic Options" + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735 +# exception_ptr, nested_exception, and future from libstdc++ are not +# available for architectures not supporting always lock-free atomic +# ints before GCC 7 +config BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + bool + default y if BR2_nios2 + default y if BR2_ARM_CPU_ARMV4 + default y if BR2_ARM_CPU_ARMV5 + default y if BR2_sparc_v8 + # https://sourceware.org/bugzilla/show_bug.cgi?id=19405 config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405 bool @@ -222,10 +235,20 @@ config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 bool select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + # This order guarantees that the highest version is set, as kconfig # stops affecting a value on the first matching default. config BR2_TOOLCHAIN_HEADERS_AT_LEAST string + default "4.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 + default "4.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 default "4.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 default "4.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 default "4.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 diff --git a/bsp/buildroot/toolchain/toolchain-external/Config.in b/bsp/buildroot/toolchain/toolchain-external/Config.in index 63b77127..35db5824 100644 --- a/bsp/buildroot/toolchain/toolchain-external/Config.in +++ b/bsp/buildroot/toolchain/toolchain-external/Config.in @@ -1,644 +1,49 @@ if BR2_TOOLCHAIN_EXTERNAL +comment "Toolchain External Options" + choice prompt "Toolchain" comment "glibc toolchains only available with shared lib support" depends on BR2_STATIC_LIBS -comment "Linaro toolchains available for Cortex-A + EABIhf" - depends on BR2_arm || BR2_armeb - depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF - depends on !BR2_STATIC_LIBS +# Kept toolchains sorted by architecture in order to use some toolchain +# as default choice -# Note: we use the same symbol for both Linaro toolchains. -# Since they have different dependencies (the host), we can -# give them different prompts and different help texts. -config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM - bool "Linaro ARM 2014.09" - depends on BR2_arm - depends on BR2_ARM_CPU_ARMV7A - depends on BR2_HOSTARCH = "x86" - depends on BR2_ARM_EABIHF - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Linaro toolchain for the ARM architecture. It uses Linaro - GCC 2014.09 (based on gcc 4.9), Linaro GDB 2013.10 (based on - GDB 7.6), eglibc 2.19, Binutils 2014.09 (based on 2.24). It - generates code that runs on all Cortex-A profile devices, - but tuned for the Cortex-A9. The code generated is Thumb 2, - with the hard floating point calling convention, and uses - the VFPv3-D16 FPU instructions. +# Aarch64 (use Linaro toolchain by default) +source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in" +source "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in" -# See the note above. -config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM - bool "Linaro ARM 2016.02" - depends on BR2_arm - depends on BR2_ARM_CPU_ARMV7A - depends on BR2_HOSTARCH = "x86_64" - depends on BR2_ARM_EABIHF - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 - select BR2_TOOLCHAIN_GCC_AT_LEAST_5 - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Linaro toolchain for the ARM architecture. It uses Linaro - GCC 2016.02 (based on gcc 5.3), Linaro GDB 2016.02 (based on - GDB 7.10), glibc 2.21, Binutils 2015.10 (based on 2.25). It - generates code that runs on all Cortex-A profile devices, - but tuned for the Cortex-A9. The code generated is Thumb 2, - with the hard floating point calling convention, and uses - the VFPv3-D16 FPU instructions. +# ARC +source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in" -# See the note above. -config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB - bool "Linaro armeb 2014.09" - depends on BR2_armeb - depends on BR2_ARM_CPU_ARMV7A - depends on BR2_HOSTARCH = "x86" - depends on BR2_ARM_EABIHF - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Linaro toolchain for the ARM big endian architecture. It - uses Linaro GCC 2014.09 (based on gcc 4.9), Linaro GDB - 2013.10 (based on GDB 7.6), eglibc 2.19, Binutils 2014.09 - (based on 2.24). It generates code that runs on all Cortex-A - profile devices, but tuned for the Cortex-A9. The code - generated is Thumb 2, with the hard floating point calling - convention, and uses the VFPv3-D16 FPU instructions. +# ARM (use Linaro toolchain by default) +source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in" +source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in" -# See the note above. -config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB - bool "Linaro armeb 2016.02" - depends on BR2_armeb - depends on BR2_ARM_CPU_ARMV7A - depends on BR2_HOSTARCH = "x86_64" - depends on BR2_ARM_EABIHF - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 - select BR2_TOOLCHAIN_GCC_AT_LEAST_5 - help - Linaro toolchain for the ARM big endian architecture. It - uses Linaro GCC 2016.02 (based on gcc 5.3), Linaro GDB - 2016.02 (based on GDB 7.10), glibc 2.21, Binutils 2015.10 - (based on 2.25). It generates code that runs on all Cortex-A - profile devices, but tuned for the Cortex-A9. The code - generated is Thumb 2, with the hard floating point calling - convention, and uses the VFPv3-D16 FPU instructions. +# ARM big-endian +source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in" -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM - bool "Sourcery CodeBench ARM 2014.05" - depends on BR2_arm - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on BR2_ARM_EABI - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 - help - Sourcery CodeBench toolchain for the ARM architecture, from - Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc - 2.18 and gdb 7.7.50, kernel headers 3.13. It has support - for the following variants: - - ARMv5TE, little endian, soft-float, glibc - Select ARM926T, ARM10T, XScale or another ARMv5 core - Select BR2_SOFT_FLOAT - - ARMv4T, little endian, soft-float, glibc - Select ARM720T, ARM920T, ARM922T or another ARMv4 core - Select BR2_SOFT_FLOAT - - ARMv7-A, Thumb 2, little endian, soft-float, glibc - Select Cortex-A8, Cortex-A9 or another ARMv7-A core - Select BR2_SOFT_FLOAT - Set BR2_TARGET_OPTIMIZATION to -mthumb +# MIPS (use codesourcery toolchain by default) +source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in" +source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in" +source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in" -comment "Sourcery CodeBench toolchains available for the EABI ABI" - depends on BR2_arm - depends on !BR2_ARM_EABI - depends on !BR2_STATIC_LIBS +# NIOSII +source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in" -config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A - bool "Arago ARMv7 2011.09" - depends on BR2_arm - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on BR2_ARM_CPU_ARMV7A - depends on BR2_ARM_EABI - depends on BR2_ARM_CPU_HAS_VFPV3 - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 - # kernel headers: 2.6.31 - help - Texas Instruments Arago 2011.09 toolchain, with gcc 4.5.3, - binutils 2.20.1, glibc 2.12, gdb 7.2. +# SH4a +source "toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in" - This toolchain uses -mfloat-abi=softfp (i.e can use FPU - instructions, but passes floating point function arguments - in integer registers), and requires a VFPv3 floating point - unit to work properly. This unit is available on most - Cortex-A ARM processors, but not all. +# x86/x86_64 (use amd64 toolchain by default for AMD64) +source "toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in" +source "toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in" -config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE - bool "Arago ARMv5 2011.09" - depends on BR2_arm - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on !BR2_ARM_CPU_ARMV4 - depends on BR2_ARM_EABI - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 - # kernel headers: 2.6.31 - help - Texas Instruments Arago ARMv5 2011.09 toolchain, with gcc - 4.5.3, binutils 2.20.1, glibc 2.12, gdb 7.2. - - This toolchain uses software-floating point. - -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS - bool "Sourcery CodeBench MIPS 2016.05" - depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el - depends on BR2_mips_32r2 || BR2_mips_64r2 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on !BR2_MIPS_NABI32 - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 - select BR2_TOOLCHAIN_GCC_AT_LEAST_5 - help - Sourcery CodeBench toolchain for the MIPS architecture, from - Mentor Graphics. It uses gcc 5.3, binutils 2.25.51, glibc - 2.23, uClibc 0.9.30 and gdb 7.10.50, kernel headers 4.4.1. It - has support for the following variants: - - MIPS32r2 - Big-Endian, 2008 NaN, O32 - Select MIPS (big endian) core - Disable BR2_SOFT_FLOAT - Set BR2_TARGET_OPTIMIZATION to -mnan=2008 - - MIPS32r2 - Big-Endian, O32 - Select MIPS (big endian) core - Disable BR2_SOFT_FLOAT - - MIPS32r2 - Big-Endian, O32, MIPS16 - Select MIPS (big endian) core - Disable BR2_SOFT_FLOAT - Set BR2_TARGET_OPTIMIZATION to -mips16 - - MIPS32r2 - Big-Endian, Soft-Float, O32 - Select MIPS (big endian) core - Select BR2_SOFT_FLOAT - - MIPS32r2 - Big-Endian, Soft-Float, O32, MIPS16 - Select MIPS (big endian) core - Select BR2_SOFT_FLOAT - Set BR2_TARGET_OPTIMIZATION to -mips16 - - MIPS32r2 - Little-Endian, 2008 NaN, O32 - Select MIPS (little endian) core - Disable BR2_SOFT_FLOAT - Set BR2_TARGET_OPTIMIZATION to -mnan=2008 - - MIPS32r2 - Little-Endian, O32 - Select MIPS (little endian) core - Disable BR2_SOFT_FLOAT - - MIPS32r2 - Little-Endian, O32, MIPS16 - Select MIPS (little endian) core - Disable BR2_SOFT_FLOAT - Set BR2_TARGET_OPTIMIZATION to -mips16 - - MIPS32r2 - Little-Endian, Soft-Float, O32 - Select MIPS (little endian) core - Select BR2_SOFT_FLOAT - - MIPS32r2 - Little-Endian, Soft-Float, O32, MIPS16 - Select MIPS (little endian) core - Select BR2_SOFT_FLOAT - Set BR2_TARGET_OPTIMIZATION to -mips16 - - MIPS32r2 - Little-Endian, Soft-Float, O32, microMIPS - Select MIPS (little endian) core - Select BR2_SOFT_FLOAT - Set BR2_TARGET_OPTIMIZATION to -mmicromips - - MIPS32r2 - uClibc, Big-Endian, 2008 NaN, O32 - Not usable in Buildroot yet. - - MIPS32r2 - uClibc, Big-Endian, O32 - Not usable in Buildroot yet. - - MIPS32r2 - uClibc, Big-Endian, Soft-Float, O32 - Not usable in Buildroot yet. - - MIPS32r2 - uClibc, Little-Endian, 2008 NaN, O32 - Not usable in Buildroot yet. - - MIPS32r2 - uClibc, Little-Endian, O32 - Not usable in Buildroot yet. - - MIPS32r2 - uClibc, Little-Endian, Soft-Float, O32 - Not usable in Buildroot yet. - - MIPS64r2 - Big-Endian, N64 - Select MIPS64 (big endian) core - Select the n64 ABI - Disable BR2_SOFT_FLOAT - - MIPS64r2 - Big-Endian, Soft-Float, N64 - Select MIPS64 (big endian) core - Select the n64 ABI - Select BR2_SOFT_FLOAT - - MIPS64r2 - Little-Endian, N64 - Select MIPS64 (little endian) core - Select the n64 ABI - Disable BR2_SOFT_FLOAT - - MIPS64r2 - Little-Endian, Soft-Float, N64 - Select MIPS64 (little endian) core - Select the n64 ABI - Select BR2_SOFT_FLOAT - -comment "Sourcery CodeBench toolchains are only available for MIPS/MIPS64 o32 and n64" - depends on BR2_MIPS_NABI32 - depends on !BR2_STATIC_LIBS - -config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS - bool "Codescape IMG GNU Linux Toolchain 2016.05" - depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on BR2_mips_32r6 || (BR2_mips_64r6 && !BR2_MIPS_SOFT_FLOAT) - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Codescape IMG GNU Linux Toolchain 2015.10 for the MIPS - architecture, from Imagination Technologies. It uses gcc - 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel - headers 4.0. It has support for the following variants: - - MIPS32r6 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI - Select 'MIPS (big endian)' Target Architecture - Select 'mips 32r6' Target Architecture Variant - Disable 'Use soft-float' - - MIPS32r6 - Big-Endian, Soft-Float, 2008 NaN, o32 ABI - Select 'MIPS (big endian)' Target Architecture - Select 'mips 32r6' Target Architecture Variant - Enable 'Use soft-float' - - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI - Select 'MIPS (little endian)' Target Architecture - Select 'mips 32r6' Target Architecture Variant - Disable 'Use soft-float' - - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI - Select 'MIPS (little endian)' Target Architecture - Select 'mips 32r6' Target Architecture Variant - Enable 'Use soft-float' - - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS - Select 'MIPS (little endian)' Target Architecture - Select 'mips 32r6' Target Architecture Variant - Disable 'Use soft-float' - Set BR2_TARGET_OPTIMIZATION to '-mmicromips' - - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI, microMIPS - Select 'MIPS (little endian)' Target Architecture - Select 'mips 32r6' Target Architecture Variant - Enable 'Use soft-float' - Set BR2_TARGET_OPTIMIZATION to '-mmicromips' - - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n32 ABI - Select 'MIPS64 (big endian)' Target Architecture - Select 'mips 64r6' Target Architecture Variant - Select 'n32' Target ABI - Disable 'Use soft-float' - - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n32 ABI - Select 'MIPS64 (little endian)' Target Architecture - Select 'mips 64r6' Target Architecture Variant - Select 'n32' Target ABI - Disable 'Use soft-float' - - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n64 ABI - Select 'MIPS64 (big endian)' Target Architecture - Select 'mips 64r6' Target Architecture Variant - Select 'n64' Target ABI - Disable 'Use soft-float' - - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n64 ABI - Select 'MIPS64 (little endian)' Target Architecture - Select 'mips 64r6' Target Architecture Variant - Select 'n64' Target ABI - Disable 'Use soft-float' - -config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS - bool "Codescape MTI GNU Linux Toolchain 2016.05" - depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on BR2_mips_32r2 || (BR2_mips_64r2 && !BR2_MIPS_SOFT_FLOAT) - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Codescape MTI GNU Linux Toolchain 2015.10 for the MIPS - architecture, from Imagination Technologies. It uses gcc - 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel - headers 4.0. It has support for the following variants: - - MIPS32r2 - Big-Endian, Hard-Float, Legacy NaN, o32 ABI - Select 'MIPS (big endian)' Target Architecture - Select 'mips 32r2' Target Architecture Variant - Disable 'Use soft-float' - - MIPS32r2 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI - Select 'MIPS (big endian)' Target Architecture - Select 'mips 32r2' Target Architecture Variant - Disable 'Use soft-float' - Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' - - MIPS32r2 - Big-Endian, Soft-Float, Legacy NaN, o32 ABI - Select 'MIPS (big endian)' Target Architecture - Select 'mips 32r2' Target Architecture Variant - Enable 'Use soft-float' - - MIPS32r2 - Little-Endian, Hard-Float, Legacy NaN, o32 ABI - Select 'MIPS (little endian)' Target Architecture - Select 'mips 32r2' Target Architecture Variant - Disable 'Use soft-float' - - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI - Select 'MIPS (little endian)' Target Architecture - Select 'mips 32r2' Target Architecture Variant - Disable 'Use soft-float' - Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' - - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI - Select 'MIPS (little endian)' Target Architecture - Select 'mips 32r2' Target Architecture Variant - Enable 'Use soft-float' - - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS - Select 'MIPS (little endian)' Target Architecture - Select 'mips 32r2' Target Architecture Variant - Enable 'Use soft-float' - Set BR2_TARGET_OPTIMIZATION to '-mmicromips' - - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI, microMIPS - Select 'MIPS (little endian)' Target Architecture - Select 'mips 32r2' Target Architecture Variant - Disable 'Use soft-float' - Set BR2_TARGET_OPTIMIZATION to '-mmicromips' - - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n32 ABI - Select 'MIPS64 (big endian)' Target Architecture - Select 'mips 64r2' Target Architecture Variant - Select 'n32' Target ABI - Disable 'Use soft-float' - - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n32 ABI - Select 'MIPS64 (little endian)' Target Architecture - Select 'mips 64r2' Target Architecture Variant - Select 'n32' Target ABI - Disable 'Use soft-float' - - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n64 ABI - Select 'MIPS64 (big endian)' Target Architecture - Select 'mips 64r2' Target Architecture Variant - Select 'n64' Target ABI - Disable 'Use soft-float' - - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n64 ABI - Select 'MIPS64 (little endian)' Target Architecture - Select 'mips 64r2' Target Architecture Variant - Select 'n64' Target ABI - Disable 'Use soft-float' - -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII - bool "Sourcery CodeBench Nios-II 2016.05" - depends on BR2_nios2 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 - select BR2_TOOLCHAIN_GCC_AT_LEAST_5 - select BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405 # based-on binutils-2.25.1 - help - Sourcery CodeBench toolchain for the Nios-II architecture, - from Mentor Graphics. It uses gcc 5.3, binutils 2.25.51, - glibc 2.23, gdb 7.10.50 and kernel headers 4.4. - -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH - bool "Sourcery CodeBench SH 2012.09" - depends on BR2_sh4a || BR2_sh4aeb - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 - help - Sourcery CodeBench toolchain for the SuperH architecture, - from Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51, - glibc 2.16, uClibc 0.9.30, gdb 7.4.50 and kernel headers - 3.5.4. It has support for the following variants: - - SH4A, glibc, little endian - Default. - - SH4A, glibc, big endian - Add -mb to BR2_TARGET_OPTIMIZATION - - SH4A, uClibc, little endian - Not usable in Buildroot yet. - - SH4A, uClibc, big endian - Not usable in Buildroot yet. - -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64 - bool "Sourcery CodeBench AMD64 2015.11" - depends on BR2_x86_64 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on !BR2_STATIC_LIBS - depends on BR2_x86_jaguar || BR2_x86_steamroller - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 - select BR2_TOOLCHAIN_GCC_AT_LEAST_5 - help - Sourcery CodeBench toolchain for the amd64 (x86_64) - architectures, from Mentor Graphics. It uses gcc 5.2, - binutils 2.25.51, glibc 2.22, gdb 7.10.50 and kernel headers - 4.2. It has support for the following variants: - - AMD Puma/Jaguar (family 16h), glibc - Default for x86_64, nothing special to do. - - AMD Steamroller (family 15h), glibc - Select a steamroller core. - No other architecture variants are supported since glibc - is optimized for one of these two baselines. - -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 - bool "Sourcery CodeBench x86/x86_64 2012.09" - depends on BR2_i386 || BR2_x86_64 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on !BR2_STATIC_LIBS - depends on !BR2_x86_jaguar - depends on !BR2_x86_steamroller - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 - help - Sourcery CodeBench toolchain for the x86/x86_64 - architectures, from Mentor Graphics. It uses gcc 4.7.2, - binutils 2.23.51, glibc 2.16, gdb 7.4.50 and kernel headers - 3.5.4. It has support for the following variants: - - Intel Pentium 4, glibc, 32 bits - Default for x86, nothing special to do. - - Intel Atom, glibc, 32 bits - Select an Atom core - - Intel Xeon, glibc, 64 bits - Default for x86_64, nothing special to do. - - Intel Core 2, glibc, 64 bits - Select a Core 2 core - Other architecture variants (beyond Pentium-4/Xeon) are - supported as well, but glibc is not optimised for it. - -config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX - bool "Blackfin.uclinux.org 2014R1" - depends on BR2_bfin - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - select BR2_TOOLCHAIN_EXTERNAL_UCLIBC - select BR2_INSTALL_LIBSTDCPP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_USE_WCHAR - select BR2_TOOLCHAIN_HAS_THREADS - select BR2_TOOLCHAIN_HAS_THREADS_DEBUG - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Toolchain for the Blackfin architecture, from - http://blackfin.uclinux.org. - -# See note about Linaro ARM/ARMEB toolchains, above. -config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 - bool "Linaro AArch64 14.09" - depends on BR2_aarch64 - depends on BR2_HOSTARCH = "x86" - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_INSTALL_LIBSTDCPP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Toolchain for the AArch64 architecture, from - http://www.linaro.org/engineering/armv8/ - -# See note about Linaro ARM/ARMEB toolchains, above. -config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 - bool "Linaro AArch64 2016.02" - depends on BR2_aarch64 - depends on BR2_HOSTARCH = "x86_64" - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_INSTALL_LIBSTDCPP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 - select BR2_TOOLCHAIN_GCC_AT_LEAST_5 - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Toolchain for the AArch64 architecture, from - http://www.linaro.org/engineering/armv8/ - -config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 - bool "CodeSourcery AArch64 2014.11" - depends on BR2_aarch64 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - select BR2_TOOLCHAIN_HAS_SSP - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 - help - Sourcery CodeBench toolchain for the AArch64 architecture, - from Mentor Graphics. It uses gcc 4.9.1, binutils - 2.24.51.20140217, glibc 2.20, gdb 7.7.50 and kernel headers - 3.16.2. - -config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS - bool "Musl 1.1.12 toolchain" - depends on (BR2_arm && BR2_ARM_EABI && BR2_USE_MMU) || \ - (BR2_arm && BR2_ARM_EABIHF && !BR2_ARM_CPU_ARMV4 && BR2_USE_MMU) || \ - (BR2_armeb && BR2_ARM_EABI && !BR2_ARM_CPU_ARMV7A && BR2_USE_MMU) || \ - BR2_i386 || (BR2_mips && !BR2_SOFT_FLOAT) || \ - BR2_mipsel || (BR2_powerpc && BR2_powerpc_CLASSIC) || \ - BR2_sh4 || BR2_sh4eb || \ - BR2_x86_64 - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - # Unsupported for MIPS R6 - depends on !BR2_mips_32r6 && !BR2_mips_64r6 - select BR2_TOOLCHAIN_EXTERNAL_MUSL - select BR2_TOOLCHAIN_HAS_SSP - select BR2_INSTALL_LIBSTDCPP - select BR2_HOSTARCH_NEEDS_IA32_LIBS - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 - select BR2_TOOLCHAIN_GCC_AT_LEAST_5 - help - Toolchain based on the Musl C library, provided by the - musl-cross project. It uses gcc 5.3, binutils 2.25.1 and - musl 1.1.12. It does not have a cross debugger included. - - The ARM soft-float toolchain is built for ARMv4t, while the - ARM hard-float toolchain is built for ARMv5t. - The x86 toolchain is built for i486. - - http://musl.codu.org/ - -config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC - bool "Synopsys ARC 2014.12 toolchain" - depends on BR2_arc - depends on BR2_HOSTARCH = "x86_64" - # does not provide IPv6, and lacks many uClibc features - # expected by Buildroot. The next Synopsys toolchain version - # should fix those problems. - depends on BROKEN - select BR2_TOOLCHAIN_EXTERNAL_UCLIBC - select BR2_INSTALL_LIBSTDCPP - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - select BR2_ENABLE_LOCALE - select BR2_USE_WCHAR - select BR2_TOOLCHAIN_HAS_THREADS - select BR2_TOOLCHAIN_HAS_THREADS_DEBUG - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 - help - Toolchain for the ARC cores, from - https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases - -config BR2_TOOLCHAIN_EXTERNAL_CUSTOM - bool "Custom toolchain" - help - Use this option to use a custom toolchain pre-installed on - your system. +# Kept last, so it remains the non-default choice, unless there isn't +# any available toolchain profile for the currently selected +# architecture. +source "toolchain/toolchain-external/toolchain-external-custom/Config.in" endchoice @@ -671,51 +76,6 @@ config BR2_TOOLCHAIN_EXTERNAL_PATH help Path to where the external toolchain is installed. -config BR2_TOOLCHAIN_EXTERNAL_URL - string "Toolchain URL" - depends on BR2_TOOLCHAIN_EXTERNAL_CUSTOM && BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD - help - URL of the custom toolchain tarball to download and install. - -config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX - string "Toolchain prefix" - depends on BR2_TOOLCHAIN_EXTERNAL_CUSTOM - default "$(ARCH)-linux" - -config BR2_TOOLCHAIN_EXTERNAL_PREFIX - string - default "arc-linux" if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC && BR2_arcle - default "arceb-linux" if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC && BR2_arceb - default "arm-linux-gnueabihf" if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM - default "armeb-linux-gnueabihf" if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB - default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM - default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A - default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE - default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 - default "aarch64-amd-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 - default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS - default "nios2-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII - default "sh-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH - default "i686-pc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 - default "x86_64-amd-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64 - default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX && BR2_BINFMT_FLAT - default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX && BR2_BINFMT_FDPIC - default "arm-linux-musleabi" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_arm && BR2_ARM_EABI - default "arm-linux-musleabihf" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_arm && BR2_ARM_EABIHF - default "mips-img-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS - default "mips-mti-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS - default "armeb-linux-musleabi" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_armeb - default "i486-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_i386 - default "mips-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && (BR2_mips && !BR2_SOFT_FLOAT) - default "mipsel-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && (BR2_mipsel && !BR2_SOFT_FLOAT) - default "mipsel-sf-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && (BR2_mipsel && BR2_SOFT_FLOAT) - default "powerpc-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_powerpc - default "sh4-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_sh4 - default "sh4eb-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_sh4eb - default "x86_64-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_x86_64 - default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX \ - if BR2_TOOLCHAIN_EXTERNAL_CUSTOM - config BR2_TOOLCHAIN_EXTERNAL_GLIBC bool select BR2_TOOLCHAIN_USES_GLIBC @@ -730,325 +90,52 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL # Compatibility headers: cdefs.h, queue.h select BR2_PACKAGE_MUSL_COMPAT_HEADERS -if BR2_TOOLCHAIN_EXTERNAL_CUSTOM - -choice - bool "External toolchain gcc version" - default BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 - help - Set to the gcc version that is used by your external - toolchain. - -config BR2_TOOLCHAIN_EXTERNAL_GCC_6 - bool "6.x" - select BR2_TOOLCHAIN_GCC_AT_LEAST_6 - -config BR2_TOOLCHAIN_EXTERNAL_GCC_5 - bool "5.x" - select BR2_TOOLCHAIN_GCC_AT_LEAST_5 - -config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9 - bool "4.9.x" - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 - -config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8 - bool "4.8.x" - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 - -config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7 - bool "4.7.x" - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 - -config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6 - bool "4.6.x" - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 - -config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5 - bool "4.5.x" - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 - -config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4 - bool "4.4.x" - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 - -config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 - bool "4.3.x" - select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 - -endchoice - -choice - bool "External toolchain kernel headers series" - default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD - help - Set to the kernel headers version that were used to build - this external toolchain. - - This is used to hide/show some packages that have strict - requirements on the version of kernel headers. - - If unsure what version your toolchain is using, you can look - at the value of LINUX_VERSION_CODE in linux/version.h in your - toolchain. The Linux version is M.m.p, with: - M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF - m = ( LINUX_VERSION_CODE >> 8 ) & 0xFF - p = ( LINUX_VERSION_CODE >> 0 ) & 0xFF - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7 - bool "4.7.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6 - bool "4.6.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5 - bool "4.5.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4 - bool "4.4.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3 - bool "4.3.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2 - bool "4.2.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1 - bool "4.1.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0 - bool "4.0.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19 - bool "3.19.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18 - bool "3.18.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17 - bool "3.17.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16 - bool "3.16.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15 - bool "3.15.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14 - bool "3.14.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13 - bool "3.13.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12 - bool "3.12.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11 - bool "3.11.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10 - bool "3.10.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9 - bool "3.9.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8 - bool "3.8.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7 - bool "3.7.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6 - bool "3.6.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5 - bool "3.5.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4 - bool "3.4.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3 - bool "3.3.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2 - bool "3.2.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1 - bool "3.1.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0 - bool "3.0.x" - select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 - -config BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD - bool "2.6.x" - -endchoice - -choice - prompt "External toolchain C library" - default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC - -config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC - bool "uClibc" - select BR2_TOOLCHAIN_EXTERNAL_UCLIBC - # For the time being, we assume that all custom external - # toolchains have shadow password support. - select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS - help - Select this option if your external toolchain uses the - uClibc C library (available from http://www.uclibc.org/). - -config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC - bool "glibc/eglibc" - depends on !BR2_STATIC_LIBS - select BR2_TOOLCHAIN_EXTERNAL_GLIBC - help - Select this option if your external toolchain uses the GNU C - library (available from https://www.gnu.org/software/libc/) - or its variant the eglibc library (http://www.eglibc.org/). - - Note: eglibc is a variant of glibc that (among other things) - can be configured to exclude some of its features. Using a - toolchain with eglibc configured to exclude key features may - cause build failures to some packages. - -comment "glibc only available with shared lib support" - depends on BR2_STATIC_LIBS - -config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL - bool "musl" - select BR2_TOOLCHAIN_EXTERNAL_MUSL - help - Select this option if your external toolchain uses the - 'musl' C library, available from http://www.musl-libc.org/. - -endchoice - -if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC - -config BR2_TOOLCHAIN_EXTERNAL_WCHAR - bool "Toolchain has WCHAR support?" - select BR2_USE_WCHAR - help - Select this option if your external toolchain supports - WCHAR. If you don't know, leave the default value, Buildroot - will tell you if it's correct or not. - -config BR2_TOOLCHAIN_EXTERNAL_LOCALE - bool "Toolchain has locale support?" - select BR2_TOOLCHAIN_EXTERNAL_WCHAR - select BR2_ENABLE_LOCALE - help - Select this option if your external toolchain has locale - support. If you don't know, leave the default value, - Buildroot will tell you if it's correct or not. - -config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS - bool "Toolchain has threads support?" - select BR2_TOOLCHAIN_HAS_THREADS +# Make sure the virtual-package infra checks the provider +config BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL + bool default y - help - Select this option if your external toolchain has thread - support. If you don't know, leave the default value, - Buildroot will tell you if it's correct or not. -if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + string -config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG - bool "Toolchain has threads debugging support?" - select BR2_TOOLCHAIN_HAS_THREADS_DEBUG - default y - help - Select this option if your external toolchain has thread - debugging support. If you don't know, leave the default - value, Buildroot will tell you if it's correct or not. +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + string -config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL - bool "Toolchain has NPTL threads support?" - select BR2_TOOLCHAIN_HAS_THREADS_NPTL - default y - help - Select this option if your external toolchain uses the NPTL - (Native Posix Thread Library) implementation of Posix - threads. If you don't know, leave the default value, - Buildroot will tell you if it's correct or not. +# Kept toolchains sorted as in the choice above +# The toolchain Config.in.options must define +# BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL and BR2_TOOLCHAIN_EXTERNAL_PREFIX -endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS +# Aarch64 +source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options" -endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC +# ARC +source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options" -config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP - bool "Toolchain has SSP support?" - select BR2_TOOLCHAIN_HAS_SSP - default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC - default y if BR2_TOOLCHAIN_EXTERNAL_MUSL - help - Selection this option if your external toolchain has Stack - Smashing Protection support enabled. If you don't know, - leave the default value, Buildroot will tell you if it's - correct or not. +# ARM +source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options" -config BR2_TOOLCHAIN_EXTERNAL_INET_RPC - bool "Toolchain has RPC support?" - select BR2_TOOLCHAIN_HAS_NATIVE_RPC - depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL - default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC - help - Select this option if your external toolchain supports - RPC. If you don't know, leave the default value, Buildroot - will tell you if it's correct or not. +# ARM big-endian +source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options" -config BR2_TOOLCHAIN_EXTERNAL_CXX - bool "Toolchain has C++ support?" - select BR2_INSTALL_LIBSTDCPP - help - Select this option if your external toolchain has C++ - support. If you don't know, leave the default value, - Buildroot will tell you if it's correct or not. +# MIPS +source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options" -config BR2_TOOLCHAIN_EXTERNAL_FORTRAN - bool "Toolchain has Fortran support?" - select BR2_TOOLCHAIN_HAS_FORTRAN - help - Select this option if your external toolchain has Fortran - support. If you don't know, leave the default value, - Buildroot will tell you if it's correct or not. +# NIOSII +source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options" -config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS - string "Extra toolchain libraries to be copied to target" - help - If your external toolchain provides extra libraries that - need to be copied to the target filesystem, enter them - here, separated by spaces. +# SH4a +source "toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options" -endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM +# x86/x86_64 +source "toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options" + +# Custom toolchains +source "toolchain/toolchain-external/toolchain-external-custom/Config.in.options" config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY bool "Copy gdb server to the Target" @@ -1057,31 +144,4 @@ config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY Copy the gdbserver provided by the external toolchain to the target. -# When the FDPIC shared binary format is used, the corresponding libraries are -# always installed. When a different binary format is used, we offer the option -# of installing the FDPIC shared libraries. -config BR2_BFIN_INSTALL_FDPIC_SHARED - bool "Install FDPIC shared libraries" - depends on BR2_bfin && !BR2_BINFMT_FDPIC - help - The Linux kernel supports running both FDPIC and FLAT applications - concurrently if the binary format specific libraries are installed - properly. This option allows developer to install FDPIC libraries - into a buildroot rootfs image built with binary format that is not - FDPIC. - -# When the FLAT shared binary format is used, we force the installation -# of the corresponding libraries. When a different binary format is -# used, we offer the option of installing the FLAT shared libraries. -config BR2_BFIN_INSTALL_FLAT_SHARED - bool "Install FLAT shared libraries" if !BR2_BINFMT_FLAT_SHARED - depends on BR2_bfin - default y if BR2_BINFMT_FLAT_SHARED - help - The Linux kernel supports running both FDPIC and FLAT applications - concurrently if the binary format specific libraries are installed - properly. This option allows developer to install FLAT libraries - into a buildroot rootfs image built with binary format that is not - shared FLAT. - endif # BR2_TOOLCHAIN_EXTERNAL diff --git a/bsp/buildroot/toolchain/toolchain-external/pkg-toolchain-external.mk b/bsp/buildroot/toolchain/toolchain-external/pkg-toolchain-external.mk new file mode 100644 index 00000000..11a1bf5e --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/pkg-toolchain-external.mk @@ -0,0 +1,607 @@ +################################################################################ +# External toolchain package infrastructure +# +# This package infrastructure implements the support for external +# toolchains, i.e toolchains that are available pre-built, ready to +# use. Such toolchain may either be readily available on the Web +# (Linaro, Sourcery CodeBench, from processor vendors) or may be built +# with tools like Crosstool-NG or Buildroot itself. So far, we have +# tested this with: +# +# * Toolchains generated by Crosstool-NG +# * Toolchains generated by Buildroot +# * Toolchains provided by Linaro for the ARM and AArch64 +# architectures +# * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, +# MIPS, PowerPC, x86, x86_64 and NIOS 2 architectures. For the MIPS +# toolchain, the -muclibc variant isn't supported yet, only the +# default glibc-based variant is. +# * Xilinx toolchains for the Microblaze architecture +# * Synopsys DesignWare toolchains for ARC cores +# +# The basic principle is the following +# +# 1. If the toolchain is not pre-installed, download and extract it +# in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR). Otherwise, +# $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) points to were the toolchain has +# already been installed by the user. +# +# 2. For all external toolchains, perform some checks on the +# conformity between the toolchain configuration described in the +# Buildroot menuconfig system, and the real configuration of the +# external toolchain. This is for example important to make sure that +# the Buildroot configuration system knows whether the toolchain +# supports RPC, IPv6, locales, large files, etc. Unfortunately, these +# things cannot be detected automatically, since the value of these +# options (such as BR2_TOOLCHAIN_HAS_NATIVE_RPC) are needed at +# configuration time because these options are used as dependencies +# for other options. And at configuration time, we are not able to +# retrieve the external toolchain configuration. +# +# 3. Copy the libraries needed at runtime to the target directory, +# $(TARGET_DIR). Obviously, things such as the C library, the dynamic +# loader and a few other utility libraries are needed if dynamic +# applications are to be executed on the target system. +# +# 4. Copy the libraries and headers to the staging directory. This +# will allow all further calls to gcc to be made using --sysroot +# $(STAGING_DIR), which greatly simplifies the compilation of the +# packages when using external toolchains. So in the end, only the +# cross-compiler binaries remains external, all libraries and headers +# are imported into the Buildroot tree. +# +# 5. Build a toolchain wrapper which executes the external toolchain +# with a number of arguments (sysroot/march/mtune/..) hardcoded, +# so we're sure the correct configuration is always used and the +# toolchain behaves similar to an internal toolchain. +# This toolchain wrapper and symlinks are installed into +# $(HOST_DIR)/usr/bin like for the internal toolchains, and the rest +# of Buildroot is handled identical for the 2 toolchain types. +################################################################################ + +# +# Definitions of where the toolchain can be found +# + +TOOLCHAIN_EXTERNAL_PREFIX = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX)) +TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR = $(HOST_DIR)/opt/ext-toolchain + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) +TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) +else +TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH)) +endif + +ifeq ($(TOOLCHAIN_EXTERNAL_INSTALL_DIR),) +ifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),) +# if no path set, figure it out from path +TOOLCHAIN_EXTERNAL_BIN := $(shell dirname $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc)) +endif +else +TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/bin +endif + +# If this is a buildroot toolchain, it already has a wrapper which we want to +# bypass. Since this is only evaluated after it has been extracted, we can use +# $(wildcard ...) here. +TOOLCHAIN_EXTERNAL_SUFFIX = \ + $(if $(wildcard $(TOOLCHAIN_EXTERNAL_BIN)/*.br_real),.br_real) + +TOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)- +TOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX) +TOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX) +TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX) +TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf$(TOOLCHAIN_EXTERNAL_SUFFIX) + +# Normal handling of downloaded toolchain tarball extraction. +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) +# As a regular package, the toolchain gets extracted in $(@D), but +# since it's actually a fairly special package, we need it to be moved +# into TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR. +define TOOLCHAIN_EXTERNAL_MOVE + rm -rf $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) + mkdir -p $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) + mv $(@D)/* $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)/ +endef +endif + +# +# Definitions of the list of libraries that should be copied to the target. +# +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y) +TOOLCHAIN_EXTERNAL_LIBS += libatomic.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.* +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_ARM_EABIHF),yy) +TOOLCHAIN_EXTERNAL_LIBS += ld-linux-armhf.so.* +else +TOOLCHAIN_EXTERNAL_LIBS += ld*.so.* +endif +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +TOOLCHAIN_EXTERNAL_LIBS += libpthread.so.* +ifneq ($(BR2_PACKAGE_GDB)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),) +TOOLCHAIN_EXTERNAL_LIBS += libthread_db.so.* +endif # gdbserver +endif # ! no threads +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y) +TOOLCHAIN_EXTERNAL_LIBS += libnss_files.so.* libnss_dns.so.* libmvec.so.* libanl.so.* +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y) +TOOLCHAIN_EXTERNAL_LIBS += libc.so libgcc_s.so.* +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +TOOLCHAIN_EXTERNAL_LIBS += libstdc++.so.* +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y) +TOOLCHAIN_EXTERNAL_LIBS += libgfortran.so.* +# fortran needs quadmath on x86 and x86_64 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y) +TOOLCHAIN_EXTERNAL_LIBS += libquadmath.so* +endif +endif + +TOOLCHAIN_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) + + +# +# Definition of the CFLAGS to use with the external toolchain, as well as the +# common toolchain wrapper build arguments +# +ifeq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),) +CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU)) +else +CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION)) +endif +CC_TARGET_ARCH_ := $(call qstrip,$(BR2_GCC_TARGET_ARCH)) +CC_TARGET_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_ABI)) +CC_TARGET_FPU_ := $(call qstrip,$(BR2_GCC_TARGET_FPU)) +CC_TARGET_FLOAT_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) +CC_TARGET_MODE_ := $(call qstrip,$(BR2_GCC_TARGET_MODE)) + +# march/mtune/floating point mode needs to be passed to the external toolchain +# to select the right multilib variant +ifeq ($(BR2_x86_64),y) +TOOLCHAIN_EXTERNAL_CFLAGS += -m64 +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_64 +endif +ifneq ($(CC_TARGET_ARCH_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -march=$(CC_TARGET_ARCH_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='"$(CC_TARGET_ARCH_)"' +endif +ifneq ($(CC_TARGET_CPU_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mcpu=$(CC_TARGET_CPU_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='"$(CC_TARGET_CPU_)"' +endif +ifneq ($(CC_TARGET_ABI_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(CC_TARGET_ABI_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='"$(CC_TARGET_ABI_)"' +endif +ifneq ($(CC_TARGET_FPU_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mfpu=$(CC_TARGET_FPU_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='"$(CC_TARGET_FPU_)"' +endif +ifneq ($(CC_TARGET_FLOAT_ABI_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mfloat-abi=$(CC_TARGET_FLOAT_ABI_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='"$(CC_TARGET_FLOAT_ABI_)"' +endif +ifneq ($(CC_TARGET_MODE_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -m$(CC_TARGET_MODE_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='"$(CC_TARGET_MODE_)"' +endif +ifeq ($(BR2_BINFMT_FLAT),y) +TOOLCHAIN_EXTERNAL_CFLAGS += -Wl,-elf2flt +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_BINFMT_FLAT +endif +ifeq ($(BR2_mipsel)$(BR2_mips64el),y) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_LITTLE_ENDIAN +TOOLCHAIN_EXTERNAL_CFLAGS += -EL +endif +ifeq ($(BR2_mips)$(BR2_mips64),y) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_BIG_ENDIAN +TOOLCHAIN_EXTERNAL_CFLAGS += -EB +endif +ifeq ($(BR2_arceb),y) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARC_TARGET_BIG_ENDIAN +TOOLCHAIN_EXTERNAL_CFLAGS += -EB +endif + +TOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION)) + +ifeq ($(BR2_SOFT_FLOAT),y) +TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_SOFTFLOAT=1 +endif + +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ + -DBR_CROSS_PATH_SUFFIX='"$(TOOLCHAIN_EXTERNAL_SUFFIX)"' + +ifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),) +# TOOLCHAIN_EXTERNAL_BIN points outside HOST_DIR => absolute path +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ + -DBR_CROSS_PATH_ABS='"$(TOOLCHAIN_EXTERNAL_BIN)"' +else +# TOOLCHAIN_EXTERNAL_BIN points inside HOST_DIR => relative path +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ + -DBR_CROSS_PATH_REL='"$(TOOLCHAIN_EXTERNAL_BIN:$(HOST_DIR)/%=%)"' +endif + + +# +# The following functions creates the symbolic links needed to get the +# cross-compilation tools visible in $(HOST_DIR)/usr/bin. Some of +# links are done directly to the corresponding tool in the external +# toolchain installation directory, while some other links are done to +# the toolchain wrapper (preprocessor, C, C++ and Fortran compiler) +# +# We skip gdb symlink when we are building our own gdb to prevent two +# gdb's in $(HOST_DIR)/usr/bin. +# +# The LTO support in gcc creates wrappers for ar, ranlib and nm which load +# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and +# *-gcc-nm and should be used instead of the real programs when -flto is +# used. However, we should not add the toolchain wrapper for them, and they +# match the *cc-* pattern. Therefore, an additional case is added for *-ar, +# *-ranlib and *-nm. +define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER + $(Q)cd $(HOST_DIR)/usr/bin; \ + for i in $(TOOLCHAIN_EXTERNAL_CROSS)*; do \ + base=$${i##*/}; \ + case "$$base" in \ + *-ar|*-ranlib|*-nm) \ + ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \ + ;; \ + *cc|*cc-*|*++|*++-*|*cpp|*-gfortran) \ + ln -sf toolchain-wrapper $$base; \ + ;; \ + *gdb|*gdbtui) \ + if test "$(BR2_PACKAGE_HOST_GDB)" != "y"; then \ + ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \ + fi \ + ;; \ + *) \ + ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \ + ;; \ + esac; \ + done +endef + + +# Various utility functions used by the external toolchain package +# infrastructure. Those functions are mainly responsible for: +# +# - installation the toolchain libraries to $(TARGET_DIR) +# - copying the toolchain sysroot to $(STAGING_DIR) +# - installing a gdbinit file +# +# Details about sysroot directory selection. +# +# To find the sysroot directory, we use the trick of looking for the +# 'libc.a' file with the -print-file-name gcc option, and then +# mangling the path to find the base directory of the sysroot. +# +# Note that we do not use the -print-sysroot option, because it is +# only available since gcc 4.4.x, and we only recently dropped support +# for 4.2.x and 4.3.x. +# +# When doing this, we don't pass any option to gcc that could select a +# multilib variant (such as -march) as we want the "main" sysroot, +# which contains all variants of the C library in the case of multilib +# toolchains. We use the TARGET_CC_NO_SYSROOT variable, which is the +# path of the cross-compiler, without the --sysroot=$(STAGING_DIR), +# since what we want to find is the location of the original toolchain +# sysroot. This "main" sysroot directory is stored in SYSROOT_DIR. +# +# Then, multilib toolchains are a little bit more complicated, since +# they in fact have multiple sysroots, one for each variant supported +# by the toolchain. So we need to find the particular sysroot we're +# interested in. +# +# To do so, we ask the compiler where its sysroot is by passing all +# flags (including -march and al.), except the --sysroot flag since we +# want to the compiler to tell us where its original sysroot +# is. ARCH_SUBDIR will contain the subdirectory, in the main +# SYSROOT_DIR, that corresponds to the selected architecture +# variant. ARCH_SYSROOT_DIR will contain the full path to this +# location. +# +# One might wonder why we don't just bother with ARCH_SYSROOT_DIR. The +# fact is that in multilib toolchains, the header files are often only +# present in the main sysroot, and only the libraries are available in +# each variant-specific sysroot directory. + + +# toolchain_find_sysroot returns the sysroot location for the given +# compiler + flags. We need to handle cases where libc.a is in: +# +# - lib/ +# - usr/lib/ +# - lib32/ +# - lib64/ +# - lib32-fp/ (Cavium toolchain) +# - lib64-fp/ (Cavium toolchain) +# - usr/lib// (Linaro toolchain) +# +# And variations on these. +define toolchain_find_sysroot +$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\.a::') +endef + +# Returns the lib subdirectory for the given compiler + flags (i.e +# typically lib32 or lib64 for some toolchains) +define toolchain_find_libdir +$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:.*/(usr/)?(lib(32|64)?([^/]*)?)/([^/]*/)?libc.a:\2:') +endef + +# Returns the location of the libc.a file for the given compiler + flags +define toolchain_find_libc_a +$$(readlink -f $$(LANG=C $(1) -print-file-name=libc.a)) +endef + +# Integration of the toolchain into Buildroot: find the main sysroot +# and the variant-specific sysroot, then copy the needed libraries to +# the $(TARGET_DIR) and copy the whole sysroot (libraries and headers) +# to $(STAGING_DIR). +# +# Variables are defined as follows: +# +# SYSROOT_DIR: the main sysroot directory, deduced from the location of +# the libc.a file in the default multilib variant, by +# removing the usr/lib[32|64]/libc.a part of the path. +# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/ +# +# ARCH_SYSROOT_DIR: the sysroot of the selected multilib variant, +# deduced from the location of the libc.a file in the +# selected multilib variant (taking into account the +# CFLAGS), by removing usr/lib[32|64]/libc.a at the end +# of the path. +# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/ +# +# ARCH_LIB_DIR: 'lib', 'lib32' or 'lib64' depending on where libraries +# are stored. Deduced from the location of the libc.a file +# in the selected multilib variant, by looking at +# usr/lib??/libc.a. +# Ex: lib +# +# ARCH_SUBDIR: the relative location of the sysroot of the selected +# multilib variant compared to the main sysroot. +# Ex: mips16/soft-float/el +# +# SUPPORT_LIB_DIR: some toolchains, such as recent Linaro toolchains, +# store GCC support libraries (libstdc++, +# libgcc_s, etc.) outside of the sysroot. In +# this case, SUPPORT_LIB_DIR is set to a +# non-empty value, and points to the directory +# where these support libraries are +# available. Those libraries will be copied to +# our sysroot, and the directory will also be +# considered when searching libraries for copy +# to the target filesystem. +# +# Please be very careful to check the major toolchain sources: +# Buildroot, Crosstool-NG, CodeSourcery and Linaro +# before doing any modification on the below logic. + +ifeq ($(BR2_STATIC_LIBS),) +define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS + $(Q)$(call MESSAGE,"Copying external toolchain libraries to target...") + $(Q)for libs in $(TOOLCHAIN_EXTERNAL_LIBS); do \ + $(call copy_toolchain_lib_root,$$libs); \ + done +endef +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),y) +define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER + $(Q)$(call MESSAGE,"Copying gdbserver") + $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + gdbserver_found=0 ; \ + for d in $${ARCH_SYSROOT_DIR}/usr \ + $${ARCH_SYSROOT_DIR}/../debug-root/usr \ + $${ARCH_SYSROOT_DIR}/usr/$${ARCH_LIB_DIR} \ + $(TOOLCHAIN_EXTERNAL_INSTALL_DIR); do \ + if test -f $${d}/bin/gdbserver ; then \ + install -m 0755 -D $${d}/bin/gdbserver $(TARGET_DIR)/usr/bin/gdbserver ; \ + gdbserver_found=1 ; \ + break ; \ + fi ; \ + done ; \ + if [ $${gdbserver_found} -eq 0 ] ; then \ + echo "Could not find gdbserver in external toolchain" ; \ + exit 1 ; \ + fi +endef +endif + +define TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS + $(Q)SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC))" ; \ + ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + SUPPORT_LIB_DIR="" ; \ + if test `find $${ARCH_SYSROOT_DIR} -name 'libstdc++.a' | wc -l` -eq 0 ; then \ + LIBSTDCPP_A_LOCATION=$$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libstdc++.a) ; \ + if [ -e "$${LIBSTDCPP_A_LOCATION}" ]; then \ + SUPPORT_LIB_DIR=`readlink -f $${LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\+\+\.a::'` ; \ + fi ; \ + fi ; \ + if [ "$${SYSROOT_DIR}" == "$${ARCH_SYSROOT_DIR}" ] ; then \ + ARCH_SUBDIR="" ; \ + elif [ "`dirname $${ARCH_SYSROOT_DIR}`" = "`dirname $${SYSROOT_DIR}`" ] ; then \ + SYSROOT_DIR_DIRNAME=`dirname $${SYSROOT_DIR}`/ ; \ + ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR_DIRNAME}(.*)/$$:\1:"` ; \ + else \ + ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR}(.*)/$$:\1:"` ; \ + fi ; \ + $(call MESSAGE,"Copying external toolchain sysroot to staging...") ; \ + $(call copy_toolchain_sysroot,$${SYSROOT_DIR},$${ARCH_SYSROOT_DIR},$${ARCH_SUBDIR},$${ARCH_LIB_DIR},$${SUPPORT_LIB_DIR}) +endef + +# Create a symlink from (usr/)$(ARCH_LIB_DIR) to lib. +# Note: the skeleton package additionally creates lib32->lib or lib64->lib +# (as appropriate) +# +# $1: destination directory (TARGET_DIR / STAGING_DIR) +create_lib_symlinks = \ + $(Q)DESTDIR="$(strip $1)" ; \ + ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + if [ ! -e "$${DESTDIR}/$${ARCH_LIB_DIR}" -a ! -e "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ]; then \ + ln -snf lib "$${DESTDIR}/$${ARCH_LIB_DIR}" ; \ + ln -snf lib "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ; \ + fi + +define TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK + $(call create_lib_symlinks,$(STAGING_DIR)) +endef + +define TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK + $(call create_lib_symlinks,$(TARGET_DIR)) +endef + +# +# Generate gdbinit file for use with Buildroot +# +define TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT + $(Q)if test -f $(TARGET_CROSS)gdb ; then \ + $(call MESSAGE,"Installing gdbinit"); \ + $(gen_gdbinit_file); \ + fi +endef + +# Various utility functions used by the external toolchain based on musl. + +# With the musl C library, the libc.so library directly plays the role +# of the dynamic library loader. We just need to create a symbolic +# link to libc.so with the appropriate name. +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y) +ifeq ($(BR2_i386),y) +MUSL_ARCH = i386 +else ifeq ($(BR2_ARM_EABIHF),y) +MUSL_ARCH = armhf +else ifeq ($(BR2_mipsel):$(BR2_SOFT_FLOAT),y:y) +MUSL_ARCH = mipsel-sf +else ifeq ($(BR2_sh),y) +MUSL_ARCH = sh +else +MUSL_ARCH = $(ARCH) +endif +define TOOLCHAIN_EXTERNAL_MUSL_LD_LINK + ln -sf libc.so $(TARGET_DIR)/lib/ld-musl-$(MUSL_ARCH).so.1 +endef +endif + +# uClibc-ng dynamic loader is called ld-uClibc.so.1, but gcc is not +# patched specifically for uClibc-ng, so it continues to generate +# binaries that expect the dynamic loader to be named ld-uClibc.so.0, +# like with the original uClibc. Therefore, we create an additional +# symbolic link to make uClibc-ng systems work properly. +define TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO + $(Q)if test -e $(TARGET_DIR)/lib/ld-uClibc.so.1; then \ + ln -sf ld-uClibc.so.1 $(TARGET_DIR)/lib/ld-uClibc.so.0 ; \ + fi + $(Q)if test -e $(TARGET_DIR)/lib/ld64-uClibc.so.1; then \ + ln -sf ld64-uClibc.so.1 $(TARGET_DIR)/lib/ld64-uClibc.so.0 ; \ + fi +endef + + +################################################################################ +# inner-toolchain-external-package -- defines the generic installation rules +# for external toolchain packages +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ +define inner-toolchain-external-package + +$(2)_INSTALL_STAGING = YES +$(2)_ADD_TOOLCHAIN_DEPENDENCY = NO + +# In fact, we don't need to download the toolchain, since it is already +# available on the system, so force the site and source to be empty so +# that nothing will be downloaded/extracted. +ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED),y) +$(2)_SITE = +$(2)_SOURCE = +endif + +ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) +$(2)_EXCLUDES = usr/lib/locale/* + +$(2)_POST_EXTRACT_HOOKS += \ + TOOLCHAIN_EXTERNAL_MOVE +endif + +# Checks for an already installed toolchain: check the toolchain +# location, check that it is usable, and then verify that it +# matches the configuration provided in Buildroot: ABI, C++ support, +# kernel headers version, type of C library and all C library features. +define $(2)_CONFIGURE_CMDS + $$(Q)$$(call check_cross_compiler_exists,$$(TOOLCHAIN_EXTERNAL_CC)) + $$(Q)$$(call check_unusable_toolchain,$$(TOOLCHAIN_EXTERNAL_CC)) + $$(Q)SYSROOT_DIR="$$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC))" ; \ + $$(call check_kernel_headers_version,\ + $$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC)),\ + $$(call qstrip,$$(BR2_TOOLCHAIN_HEADERS_AT_LEAST))); \ + $$(call check_gcc_version,$$(TOOLCHAIN_EXTERNAL_CC),\ + $$(call qstrip,$$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \ + if test "$$(BR2_arm)" = "y" ; then \ + $$(call check_arm_abi,\ + "$$(TOOLCHAIN_EXTERNAL_CC) $$(TOOLCHAIN_EXTERNAL_CFLAGS)",\ + $$(TOOLCHAIN_EXTERNAL_READELF)) ; \ + fi ; \ + if test "$$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \ + $$(call check_cplusplus,$$(TOOLCHAIN_EXTERNAL_CXX)) ; \ + fi ; \ + if test "$$(BR2_TOOLCHAIN_HAS_FORTRAN)" = "y" ; then \ + $$(call check_fortran,$$(TOOLCHAIN_EXTERNAL_FC)) ; \ + fi ; \ + if test "$$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \ + $$(call check_uclibc,$$$${SYSROOT_DIR}) ; \ + elif test "$$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \ + $$(call check_musl,$$$${SYSROOT_DIR}) ; \ + else \ + $$(call check_glibc,$$$${SYSROOT_DIR}) ; \ + fi + $$(Q)$$(call check_toolchain_ssp,$$(TOOLCHAIN_EXTERNAL_CC)) +endef + +$(2)_TOOLCHAIN_WRAPPER_ARGS += $$(TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS) + +$(2)_BUILD_CMDS = $$(TOOLCHAIN_WRAPPER_BUILD) + +define $(2)_INSTALL_STAGING_CMDS + $$(TOOLCHAIN_WRAPPER_INSTALL) + $$(TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK) + $$(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS) + $$(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER) + $$(TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT) +endef + +ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_MUSL),y) +$(2)_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_MUSL_LD_LINK +endif + +# Even though we're installing things in both the staging, the host +# and the target directory, we do everything within the +# install-staging step, arbitrarily. +define $(2)_INSTALL_TARGET_CMDS + $$(TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK) + $$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS) + $$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER) + $$(TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO) +endef + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +toolchain-external-package = $(call inner-toolchain-external-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in new file mode 100644 index 00000000..e29c4dcb --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in @@ -0,0 +1,61 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS + bool "Codescape IMG GNU Linux Toolchain 2016.05" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_MIPS_CPU_MIPS32R6 || (BR2_MIPS_CPU_MIPS64R6 && !BR2_MIPS_SOFT_FLOAT) + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Codescape IMG GNU Linux Toolchain 2016.05 for the MIPS + architecture, from Imagination Technologies. It uses gcc + 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel + headers 4.7. It has support for the following variants: + - MIPS32r6 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Disable 'Use soft-float' + - MIPS32r6 - Big-Endian, Soft-Float, 2008 NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Enable 'Use soft-float' + - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Disable 'Use soft-float' + - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Enable 'Use soft-float' + - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Disable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Enable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n32 ABI + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n32' Target ABI + Disable 'Use soft-float' + - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n32 ABI + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n32' Target ABI + Disable 'Use soft-float' + - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n64 ABI + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n64' Target ABI + Disable 'Use soft-float' + - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n64 ABI + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n64' Target ABI + Disable 'Use soft-float' diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options new file mode 100644 index 00000000..3eaa2a95 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "mips-img-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codescape-img-mips" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash new file mode 100644 index 00000000..6a12cfa0 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash @@ -0,0 +1,4 @@ +# Codescape toolchains from Imagination Technologies +# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-06/downloads.html +sha256 8d9cdf711dd402d7bf82883d425c221038fe8ce9d0c91a3f6b30939d9d55476c Codescape.GNU.Tools.Package.2016.05-06.for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz +sha256 6e2784d6df962fe4db7510c8a62ce3947b73f54207b10e18b52da59d1bc487bd Codescape.GNU.Tools.Package.2016.05-06.for.MIPS.IMG.Linux.CentOS-5.x86_64.tar.gz diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk new file mode 100644 index 00000000..49a7027d --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# toolchain-external-codescape-img-mips +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION = 2016.05-06 +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STRIP_COMPONENTS = 2 + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION).for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz +else +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION).for.MIPS.IMG.Linux.CentOS-5.x86_64.tar.gz +endif + +# Special fixup for Codescape MIPS toolchains, that have bin- and +# sbin- directories. We create symlinks bin -> bin- and sbin +# -> sbin- so that the rest of Buildroot can find the toolchain +# tools in the appropriate location. +ifeq ($(BR2_MIPS_OABI32),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = o32 +else ifeq ($(BR2_MIPS_NABI32),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n32 +else ifeq ($(BR2_MIPS_NABI64),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n64 +endif + +define TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS + rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin + ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin + ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin +endef + +# The Codescape toolchain uses a sysroot layout that places them +# side-by-side instead of nested like multilibs. A symlink is needed +# much like for the nested sysroots which are handled in +# copy_toolchain_sysroot but there is not enough information in there +# to determine whether the sysroot layout was nested or side-by-side. +# Add the symlink here for now. +define TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK + $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \ + ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \ + ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR} +endef + +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_POST_INSTALL_STAGING_HOOKS += \ + TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS \ + TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in new file mode 100644 index 00000000..efe6f852 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in @@ -0,0 +1,72 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS + bool "Codescape MTI GNU Linux Toolchain 2016.05" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_MIPS_CPU_MIPS32R2 || (BR2_MIPS_CPU_MIPS64R2 && !BR2_MIPS_SOFT_FLOAT) || \ + BR2_MIPS_CPU_MIPS32R5 || (BR2_MIPS_CPU_MIPS64R5 && !BR2_MIPS_SOFT_FLOAT) + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Codescape MTI GNU Linux Toolchain 2016.05 for the MIPS + architecture, from Imagination Technologies. It uses gcc + 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel + headers 4.7. It has support for the following variants: + - MIPS32r2 - Big-Endian, Hard-Float, Legacy NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + - MIPS32r2 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' + - MIPS32r2 - Big-Endian, Soft-Float, Legacy NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Enable 'Use soft-float' + - MIPS32r2 - Little-Endian, Hard-Float, Legacy NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' + - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Enable 'Use soft-float' + - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Enable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n32 ABI + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n32' Target ABI + Disable 'Use soft-float' + - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n32 ABI + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n32' Target ABI + Disable 'Use soft-float' + - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n64 ABI + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n64' Target ABI + Disable 'Use soft-float' + - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n64 ABI + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n64' Target ABI + Disable 'Use soft-float' diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options new file mode 100644 index 00000000..464c9b84 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "mips-mti-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codescape-mti-mips" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash new file mode 100644 index 00000000..d31f9980 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash @@ -0,0 +1,4 @@ +# Codescape toolchains from Imagination Technologies +# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-06/downloads.html +sha256 3a7aba259beb05f0e3054b5a61a368a5085447f47361949a938ac9cc7de4227b Codescape.GNU.Tools.Package.2016.05-06.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz +sha256 a676a8b3647c8c651fb8935a75db8f00b79d36ec55676f7c05bac12b550788f7 Codescape.GNU.Tools.Package.2016.05-06.for.MIPS.MTI.Linux.CentOS-5.x86_64.tar.gz diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk new file mode 100644 index 00000000..d63a3675 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# toolchain-external-codescape-mti-mips +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION = 2016.05-06 +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STRIP_COMPONENTS = 2 + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION).for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz +else +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION).for.MIPS.MTI.Linux.CentOS-5.x86_64.tar.gz +endif + +# Special fixup for Codescape MIPS toolchains, that have bin- and +# sbin- directories. We create symlinks bin -> bin- and sbin +# -> sbin- so that the rest of Buildroot can find the toolchain +# tools in the appropriate location. +ifeq ($(BR2_MIPS_OABI32),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = o32 +else ifeq ($(BR2_MIPS_NABI32),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n32 +else ifeq ($(BR2_MIPS_NABI64),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n64 +endif + +define TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS + rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin + ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin + ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin +endef + +# The Codescape toolchain uses a sysroot layout that places them +# side-by-side instead of nested like multilibs. A symlink is needed +# much like for the nested sysroots which are handled in +# copy_toolchain_sysroot but there is not enough information in there +# to determine whether the sysroot layout was nested or side-by-side. +# Add the symlink here for now. +define TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK + $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \ + ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \ + ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR} +endef + +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_POST_INSTALL_STAGING_HOOKS += \ + TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS \ + TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in new file mode 100644 index 00000000..2fbb218e --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in @@ -0,0 +1,17 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 + bool "CodeSourcery AArch64 2014.11" + depends on BR2_aarch64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Sourcery CodeBench toolchain for the AArch64 architecture, + from Mentor Graphics. It uses gcc 4.9.1, binutils + 2.24.51.20140217, glibc 2.20, gdb 7.7.50 and kernel headers + 3.16.2. diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options new file mode 100644 index 00000000..1eab8392 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "aarch64-amd-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-aarch64" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash new file mode 100644 index 00000000..f7d3f29f --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 405aada821146755c5f2df566375c2a682456d6b8451ee47b88cf1a52b093676 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2 +sha256 3f50dd6ee433eb5b6992a1071b988e50379a738f54f58722bc60081613764716 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu.src.tar.bz2 diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk new file mode 100644 index 00000000..bc58c44c --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# toolchain-external-codesourcery-aarch64 +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SITE = http://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION = 2014.11-95 +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SOURCE = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_ACTUAL_SOURCE_TARBALL = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +define TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_STAGING_FIXUP + ln -sf ld-2.20.so $(STAGING_DIR)/lib/ld-linux-aarch64.so.1 +endef +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_STAGING_FIXUP + +define TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_TARGET_FIXUP + ln -sf ld-2.20.so $(TARGET_DIR)/lib/ld-linux-aarch64.so.1 +endef +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_POST_INSTALL_TARGET_HOOKS += TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_TARGET_FIXUP + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in new file mode 100644 index 00000000..32d79eba --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in @@ -0,0 +1,24 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64 + bool "Sourcery CodeBench AMD64 2016.11" + depends on BR2_x86_64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + depends on BR2_x86_jaguar || BR2_x86_steamroller + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + help + Sourcery CodeBench toolchain for the amd64 (x86_64) + architectures, from Mentor Graphics. It uses gcc 6.2, + binutils 2.26, glibc 2.24, gdb 7.11 and kernel headers + 4.7. It has support for the following variants: + - AMD Puma/Jaguar (family 16h), glibc + Default for x86_64, nothing special to do. + - AMD Steamroller (family 15h), glibc + Select a steamroller core. + No other architecture variants are supported since glibc + is optimized for one of these two baselines. diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options new file mode 100644 index 00000000..2ab23026 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64 + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "x86_64-amd-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-amd64" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash new file mode 100644 index 00000000..291e6a59 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a6c23837dd45a33866c60a2fd8d7af40520cd84ff1059abda797952d7ee0fafd amd-2016.11-19-x86_64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2 +sha256 d61ce0b5648ad63cca16fe233c82e7eaa6a3212a549d69a527e7a2d5350f7b4a amd-2016.11-19-x86_64-amd-linux-gnu.src.tar.bz2 diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk new file mode 100644 index 00000000..1697e5e6 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# toolchain-external-codesourcery-amd64 +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_VERSION = 2016.11-19 +TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_SOURCE = amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_ACTUAL_SOURCE_TARBALL = amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in new file mode 100644 index 00000000..6331873d --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in @@ -0,0 +1,35 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM + bool "Sourcery CodeBench ARM 2014.05" + depends on BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_ARM_EABI + # Unsupported ARM cores + depends on !BR2_cortex_a12 && !BR2_cortex_a17 && !BR2_ARM_CPU_ARMV8 + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + help + Sourcery CodeBench toolchain for the ARM architecture, from + Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc + 2.18 and gdb 7.7.50, kernel headers 3.13. It has support + for the following variants: + - ARMv5TE, little endian, soft-float, glibc + Select ARM926T, ARM10T, XScale or another ARMv5 core + Select BR2_SOFT_FLOAT + - ARMv4T, little endian, soft-float, glibc + Select ARM720T, ARM920T, ARM922T or another ARMv4 core + Select BR2_SOFT_FLOAT + - ARMv7-A, Thumb 2, little endian, soft-float, glibc + Select Cortex-A8, Cortex-A9 or another ARMv7-A core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mthumb + +comment "Sourcery CodeBench toolchains available for the EABI ABI" + depends on BR2_arm + depends on !BR2_ARM_EABI + depends on !BR2_STATIC_LIBS diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options new file mode 100644 index 00000000..7f3654dc --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "arm-none-linux-gnueabi" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-arm" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash new file mode 100644 index 00000000..535f4aaf --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 39ee0e789034334ecc89af94e838e3a4815400ac5ff980f808f466b04778532e arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 +sha256 e16a5b1e41d7ff1e74161f9405182001bc8d1360d89564e73911032e6966cc0d arm-2014.05-29-arm-none-linux-gnueabi.src.tar.bz2 diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk new file mode 100644 index 00000000..f96a0e0b --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# toolchain-external-codesourcery-arm +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION = 2014.05-29 + +TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SITE = http://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SOURCE = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_ACTUAL_SOURCE_TARBALL = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in new file mode 100644 index 00000000..6a13ae6c --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in @@ -0,0 +1,93 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + bool "Sourcery CodeBench MIPS 2016.05" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + depends on BR2_MIPS_CPU_MIPS32R2 || BR2_MIPS_CPU_MIPS64R2 + # Unsupported MIPS cores + depends on !BR2_mips_interaptiv + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_MIPS_NABI32 + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + select BR2_TOOLCHAIN_GCC_AT_LEAST_5 + help + Sourcery CodeBench toolchain for the MIPS architecture, from + Mentor Graphics. It uses gcc 5.3, binutils 2.25.51, glibc + 2.23, uClibc 0.9.30 and gdb 7.10.50, kernel headers 4.4.1. It + has support for the following variants: + - MIPS32r2 - Big-Endian, 2008 NaN, O32 + Select MIPS (big endian) core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mnan=2008 + - MIPS32r2 - Big-Endian, O32 + Select MIPS (big endian) core + Disable BR2_SOFT_FLOAT + - MIPS32r2 - Big-Endian, O32, MIPS16 + Select MIPS (big endian) core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 + - MIPS32r2 - Big-Endian, Soft-Float, O32 + Select MIPS (big endian) core + Select BR2_SOFT_FLOAT + - MIPS32r2 - Big-Endian, Soft-Float, O32, MIPS16 + Select MIPS (big endian) core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 + - MIPS32r2 - Little-Endian, 2008 NaN, O32 + Select MIPS (little endian) core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mnan=2008 + - MIPS32r2 - Little-Endian, O32 + Select MIPS (little endian) core + Disable BR2_SOFT_FLOAT + - MIPS32r2 - Little-Endian, O32, MIPS16 + Select MIPS (little endian) core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 + - MIPS32r2 - Little-Endian, Soft-Float, O32 + Select MIPS (little endian) core + Select BR2_SOFT_FLOAT + - MIPS32r2 - Little-Endian, Soft-Float, O32, MIPS16 + Select MIPS (little endian) core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 + - MIPS32r2 - Little-Endian, Soft-Float, O32, microMIPS + Select MIPS (little endian) core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mmicromips + - MIPS32r2 - uClibc, Big-Endian, 2008 NaN, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Big-Endian, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Big-Endian, Soft-Float, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Little-Endian, 2008 NaN, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Little-Endian, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Little-Endian, Soft-Float, O32 + Not usable in Buildroot yet. + - MIPS64r2 - Big-Endian, N64 + Select MIPS64 (big endian) core + Select the n64 ABI + Disable BR2_SOFT_FLOAT + - MIPS64r2 - Big-Endian, Soft-Float, N64 + Select MIPS64 (big endian) core + Select the n64 ABI + Select BR2_SOFT_FLOAT + - MIPS64r2 - Little-Endian, N64 + Select MIPS64 (little endian) core + Select the n64 ABI + Disable BR2_SOFT_FLOAT + - MIPS64r2 - Little-Endian, Soft-Float, N64 + Select MIPS64 (little endian) core + Select the n64 ABI + Select BR2_SOFT_FLOAT + +comment "Sourcery CodeBench toolchains are only available for MIPS/MIPS64 o32 and n64" + depends on BR2_MIPS_NABI32 + depends on !BR2_STATIC_LIBS diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options new file mode 100644 index 00000000..677cc67d --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "mips-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-mips" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash new file mode 100644 index 00000000..2d80338e --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d354447c4c5160439dafd5464fa3a0266dd41e79f973477238e4f0215a6b5397 mips-2016.05-8-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 +sha256 2658e55d5b71bba25d6f77e868e18b200ea5f75c8add7ed3a9266e716d9adfff mips-2016.05-8-mips-linux-gnu.src.tar.bz2 diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk new file mode 100644 index 00000000..5117d475 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# toolchain-external-codesourcery-mips +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION = 2016.05-8 + +TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SITE = http://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SOURCE = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_ACTUAL_SOURCE_TARBALL = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in new file mode 100644 index 00000000..9675c67a --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in @@ -0,0 +1,17 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII + bool "Sourcery CodeBench Nios-II 2016.11" + depends on BR2_nios2 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + select BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405 # based-on binutils-2.26 + help + Sourcery CodeBench toolchain for the Nios-II architecture, + from Mentor Graphics. It uses gcc 6.2, binutils 2.26, + glibc 2.24, gdb 7.11 and kernel headers 4.7. diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options new file mode 100644 index 00000000..07cc5ede --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "nios2-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-niosII" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash new file mode 100644 index 00000000..17130b42 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 97e3b878c67e46430f2b9a42b11bc95b1ef9fef263e6b5ee9103d1239c9e847d sourceryg++-2016.11-32-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 +sha256 ee2c4391137be8fee987411301bbf9f0e4a823400e37c9f8c1cae9900485cbca sourceryg++-2016.11-32-nios2-linux-gnu.src.tar.bz2 diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk new file mode 100644 index 00000000..7381061c --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# toolchain-external-codesourcery-niosII +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2016.11-32 + +TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = http://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in new file mode 100644 index 00000000..a47dab76 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in @@ -0,0 +1,25 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH + bool "Sourcery CodeBench SH 2012.09" + depends on BR2_sh4a || BR2_sh4aeb + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + help + Sourcery CodeBench toolchain for the SuperH architecture, + from Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51, + glibc 2.16, uClibc 0.9.30, gdb 7.4.50 and kernel headers + 3.5.4. It has support for the following variants: + - SH4A, glibc, little endian + Default. + - SH4A, glibc, big endian + Add -mb to BR2_TARGET_OPTIMIZATION + - SH4A, uClibc, little endian + Not usable in Buildroot yet. + - SH4A, uClibc, big endian + Not usable in Buildroot yet. diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options new file mode 100644 index 00000000..90061cef --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "sh-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-sh" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.hash new file mode 100644 index 00000000..ff2ba5f4 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 59d6766fde244931aa52db01433d5acd051998762a931121c5fc109536a1a802 renesas-2012.09-61-sh-linux-gnu-i686-pc-linux-gnu.tar.bz2 +sha256 e2e58c10e52395d5d35157e35f85233f713c6f9223a652dfc56194cfd2eed004 renesas-2012.09-61-sh-linux-gnu.src.tar.bz2 diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.mk new file mode 100644 index 00000000..5370bb22 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# toolchain-external-sourcery-sh +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_VERSION = 2012.09-61 + +TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_SOURCE = renesas-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_ACTUAL_SOURCE_TARBALL = renesas-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in new file mode 100644 index 00000000..bcbdd269 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in @@ -0,0 +1,29 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 + bool "Sourcery CodeBench x86/x86_64 2012.09" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + depends on !BR2_x86_jaguar + depends on !BR2_x86_steamroller + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + help + Sourcery CodeBench toolchain for the x86/x86_64 + architectures, from Mentor Graphics. It uses gcc 4.7.2, + binutils 2.23.51, glibc 2.16, gdb 7.4.50 and kernel headers + 3.5.4. It has support for the following variants: + - Intel Pentium 4, glibc, 32 bits + Default for x86, nothing special to do. + - Intel Atom, glibc, 32 bits + Select an Atom core + - Intel Xeon, glibc, 64 bits + Default for x86_64, nothing special to do. + - Intel Core 2, glibc, 64 bits + Select a Core 2 core + Other architecture variants (beyond Pentium-4/Xeon) are + supported as well, but glibc is not optimised for it. diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options new file mode 100644 index 00000000..65b62f32 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "i686-pc-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-x86" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.hash new file mode 100644 index 00000000..a003f7ab --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ea804cf02014369da52abc4f64e91e96bde2dd2230aca96109459013d4545458 ia32-2012.09-62-i686-pc-linux-gnu-i386-linux.tar.bz2 +sha256 1a9519e415a1e6892c760bf21f7e98f3a633a9d1c5bb8781a96d338e4dd62717 ia32-2012.09-62-i686-pc-linux-gnu.src.tar.bz2 diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.mk new file mode 100644 index 00000000..5ee6991c --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# toolchain-external-codesourcery-x86 +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_VERSION = 2012.09-62 +TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_SOURCE = ia32-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i386-linux.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_ACTUAL_SOURCE_TARBALL = ia32-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in new file mode 100644 index 00000000..a913feb3 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in @@ -0,0 +1,5 @@ +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM + bool "Custom toolchain" + help + Use this option to use a custom toolchain pre-installed on + your system. diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in.options new file mode 100644 index 00000000..ed2b082d --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in.options @@ -0,0 +1,349 @@ +if BR2_TOOLCHAIN_EXTERNAL_CUSTOM + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-custom" + +config BR2_TOOLCHAIN_EXTERNAL_URL + string "Toolchain URL" + depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD + help + URL of the custom toolchain tarball to download and install. + +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX + string "Toolchain prefix" + default "$(ARCH)-linux" + +choice + bool "External toolchain gcc version" + default BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 + help + Set to the gcc version that is used by your external + toolchain. + +config BR2_TOOLCHAIN_EXTERNAL_GCC_6 + bool "6.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_5 + bool "5.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9 + bool "4.9.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8 + bool "4.8.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7 + bool "4.7.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6 + bool "4.6.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5 + bool "4.5.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4 + bool "4.4.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 + bool "4.3.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD + bool "older" + help + Use this option if your GCC version is older than any of the + above. + + Note that the Buildroot community doesn't do any testing with + such old toolchains. Some packages may fail to build in + surprising ways, or the generated root filesystem may not + work at all. Use such old toolchains at your own risk. + +endchoice + +choice + bool "External toolchain kernel headers series" + default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD + help + Set to the kernel headers version that were used to build + this external toolchain. + + This is used to hide/show some packages that have strict + requirements on the version of kernel headers. + + If unsure what version your toolchain is using, you can look + at the value of LINUX_VERSION_CODE in linux/version.h in your + toolchain. The Linux version is M.m.p, with: + M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF + m = ( LINUX_VERSION_CODE >> 8 ) & 0xFF + p = ( LINUX_VERSION_CODE >> 0 ) & 0xFF + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9 + bool "4.9.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8 + bool "4.8.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7 + bool "4.7.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6 + bool "4.6.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5 + bool "4.5.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4 + bool "4.4.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3 + bool "4.3.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2 + bool "4.2.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1 + bool "4.1.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0 + bool "4.0.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19 + bool "3.19.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18 + bool "3.18.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17 + bool "3.17.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16 + bool "3.16.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15 + bool "3.15.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14 + bool "3.14.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13 + bool "3.13.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12 + bool "3.12.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11 + bool "3.11.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10 + bool "3.10.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9 + bool "3.9.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8 + bool "3.8.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7 + bool "3.7.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6 + bool "3.6.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5 + bool "3.5.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4 + bool "3.4.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3 + bool "3.3.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2 + bool "3.2.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1 + bool "3.1.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0 + bool "3.0.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD + bool "2.6.x" + +endchoice + +choice + prompt "External toolchain C library" + default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC + +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC + bool "uClibc/uClibc-ng" + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + # For the time being, we assume that all custom external + # toolchains have shadow password support. + select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS + help + Select this option if your external toolchain uses the + uClibc (available from http://www.uclibc.org/) + or uClibc-ng (available from http://www.uclibc-ng.org) + C library. + +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC + bool "glibc/eglibc" + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Select this option if your external toolchain uses the GNU C + library (available from https://www.gnu.org/software/libc/) + or its variant the eglibc library (http://www.eglibc.org/). + + Note: eglibc is a variant of glibc that (among other things) + can be configured to exclude some of its features. Using a + toolchain with eglibc configured to exclude key features may + cause build failures to some packages. + +comment "(e)glibc only available with shared lib support" + depends on BR2_STATIC_LIBS + +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL + bool "musl (experimental)" + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Select this option if your external toolchain uses the + 'musl' C library, available from http://www.musl-libc.org/. + +endchoice + +if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC + +config BR2_TOOLCHAIN_EXTERNAL_WCHAR + bool "Toolchain has WCHAR support?" + select BR2_USE_WCHAR + help + Select this option if your external toolchain supports + WCHAR. If you don't know, leave the default value, Buildroot + will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_LOCALE + bool "Toolchain has locale support?" + select BR2_TOOLCHAIN_EXTERNAL_WCHAR + select BR2_ENABLE_LOCALE + help + Select this option if your external toolchain has locale + support. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS + bool "Toolchain has threads support?" + select BR2_TOOLCHAIN_HAS_THREADS + default y + help + Select this option if your external toolchain has thread + support. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + +if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS + +config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG + bool "Toolchain has threads debugging support?" + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + default y + help + Select this option if your external toolchain has thread + debugging support. If you don't know, leave the default + value, Buildroot will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL + bool "Toolchain has NPTL threads support?" + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + default y + help + Select this option if your external toolchain uses the NPTL + (Native Posix Thread Library) implementation of Posix + threads. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + +endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS + +endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC + +config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP + bool "Toolchain has SSP support?" + select BR2_TOOLCHAIN_HAS_SSP + default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC + default y if BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Selection this option if your external toolchain has Stack + Smashing Protection support enabled. If you don't know, + leave the default value, Buildroot will tell you if it's + correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_INET_RPC + bool "Toolchain has RPC support?" + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL + default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Select this option if your external toolchain supports + RPC. If you don't know, leave the default value, Buildroot + will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_CXX + bool "Toolchain has C++ support?" + select BR2_INSTALL_LIBSTDCPP + help + Select this option if your external toolchain has C++ + support. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS + string "Extra toolchain libraries to be copied to target" + help + If your external toolchain provides extra libraries that + need to be copied to the target filesystem, enter them + here, separated by spaces. They will be copied to the + target's /lib directory. + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk new file mode 100644 index 00000000..c4ae6125 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# toolchain-external-custom +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CUSTOM_SITE = $(patsubst %/,%,$(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))) +TOOLCHAIN_EXTERNAL_CUSTOM_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL))) + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CUSTOM),y) +# We can't check hashes for custom downloaded toolchains +BR_NO_CHECK_HASH_FOR += $(TOOLCHAIN_EXTERNAL_SOURCE) +endif + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in new file mode 100644 index 00000000..4dc8dacb --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in @@ -0,0 +1,15 @@ +config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 + bool "Linaro AArch64 2016.11" + depends on BR2_aarch64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Toolchain for the AArch64 architecture, from + http://www.linaro.org/engineering/armv8/ diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options new file mode 100644 index 00000000..099c6c0d --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "aarch64-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-linaro-aarch64" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash new file mode 100644 index 00000000..f7f42090 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 057156a47b9cd68cdc0b48adcbe96c8249e3653b082f6c051dd75cb644f64b3a gcc-linaro-6.2.1-2016.11-i686_aarch64-linux-gnu.tar.xz +sha256 539cc29320bd84178cd093aae0b06b1ee5476511cecaba989faf9c6a1d4cdf81 gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu.tar.xz diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk new file mode 100644 index 00000000..fb498fe2 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# toolchain-external-linaro-aarch64 +# +################################################################################ + +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION = 2016.11 +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SITE = https://releases.linaro.org/components/toolchain/binaries/6.2-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)/aarch64-linux-gnu + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-6.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-i686_aarch64-linux-gnu.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-6.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-x86_64_aarch64-linux-gnu.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in new file mode 100644 index 00000000..78aeb8ea --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in @@ -0,0 +1,27 @@ +comment "Linaro toolchains available for Cortex-A + EABIhf" + depends on BR2_arm + depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF + depends on !BR2_STATIC_LIBS + +config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM + bool "Linaro ARM 2016.11" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_ARM_EABIHF + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Linaro toolchain for the ARM architecture. It uses Linaro + GCC 2016.11 (based on gcc 6.2.1), Linaro GDB 2016.11 (based on + GDB 7.12), glibc 2.23, Binutils 2016.11 (based on 2.27). It + generates code that runs on all Cortex-A profile devices, + but tuned for the Cortex-A9. The code generated is Thumb 2, + with the hard floating point calling convention, and uses + the VFPv3-D16 FPU instructions. diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options new file mode 100644 index 00000000..dcbc6599 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "arm-linux-gnueabihf" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-linaro-arm" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash new file mode 100644 index 00000000..d4452c37 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a2a4968bfb8537c1b3280b4f475d90d53a1a0f05f7afc7b43efed266cc4de446 gcc-linaro-6.2.1-2016.11-i686_arm-linux-gnueabihf.tar.xz +sha256 5eb7ab2f8a0b4b960900321505cd6923a072cb3e2412102f5f72a6e74c2f0a55 gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk new file mode 100644 index 00000000..e098f477 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# toolchain-external-linaro-arm +# +################################################################################ + +TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION = 2016.11 +TOOLCHAIN_EXTERNAL_LINARO_ARM_SITE = https://releases.linaro.org/components/toolchain/binaries/6.2-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)/arm-linux-gnueabihf + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-6.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-i686_arm-linux-gnueabihf.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-6.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-x86_64_arm-linux-gnueabihf.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in new file mode 100644 index 00000000..c7f2f5f6 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in @@ -0,0 +1,26 @@ +comment "Linaro toolchains available for Cortex-A + EABIhf" + depends on BR2_armeb + depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF + depends on !BR2_STATIC_LIBS + +config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB + bool "Linaro armeb 2016.11" + depends on BR2_armeb + depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_ARM_EABIHF + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + help + Linaro toolchain for the ARM big endian architecture. It + uses Linaro GCC 2016.11 (based on gcc 6.2.1), Linaro GDB + 2016.11 (based on GDB 7.12), glibc 2.23, Binutils 2016.11 + (based on 2.27). It generates code that runs on all Cortex-A + profile devices, but tuned for the Cortex-A9. The code + generated is Thumb 2, with the hard floating point calling + convention, and uses the VFPv3-D16 FPU instructions. diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options new file mode 100644 index 00000000..225e90f0 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "armeb-linux-gnueabihf" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-linaro-armeb" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash new file mode 100644 index 00000000..a041539b --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 05a34c56da56b9b1e1a61ad1217dc4e751e1d277932dbeaa82b6c242cf0f2ec9 gcc-linaro-6.2.1-2016.11-i686_armeb-linux-gnueabihf.tar.xz +sha256 319cb7c6363a3116357b163d0b4f9e0c27cfcb6153f3c26a34edf892819f12e5 gcc-linaro-6.2.1-2016.11-x86_64_armeb-linux-gnueabihf.tar.xz diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk new file mode 100644 index 00000000..ba138e1b --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# toolchain-external-linaro-armeb +# +################################################################################ + +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION = 2016.11 +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SITE = https://releases.linaro.org/components/toolchain/binaries/6.2-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)/armeb-linux-gnueabihf + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-6.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-i686_armeb-linux-gnueabihf.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-6.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-x86_64_armeb-linux-gnueabihf.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in new file mode 100644 index 00000000..f438ea76 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in @@ -0,0 +1,18 @@ +config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC + bool "Synopsys ARC 2016.09 toolchain" + depends on BR2_arc + depends on BR2_HOSTARCH = "x86_64" + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_ENABLE_LOCALE + select BR2_USE_WCHAR + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + help + Toolchain for the ARC cores, from + https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options new file mode 100644 index 00000000..ceb7dd00 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options @@ -0,0 +1,10 @@ +if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "arc-linux" if BR2_arcle + default "arceb-linux" if BR2_arceb + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-synopsys-arc" + +endif diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash new file mode 100644 index 00000000..c96f53b1 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 9123e35510cc9105e5f9468d5154e0093770d7c11ed771c1a595ecf813692baf arc_gnu_2016.09_prebuilt_uclibc_le_arc700_linux_install.tar.gz +sha256 3140066cdbda2df7ed0fb60424bbd9db740fb25393928e733234b0bf65508df2 arc_gnu_2016.09_prebuilt_uclibc_be_arc700_linux_install.tar.gz +sha256 aa6edb2101b13df3ac59f8d8ccbcfba37a6f7882f0e03baa9d9883480dbed4e7 arc_gnu_2016.09_prebuilt_uclibc_le_archs_linux_install.tar.gz +sha256 4de227bf73536a87784d88e5f10085b91ede62c76ef8fedf53b4bf2e215054cf arc_gnu_2016.09_prebuilt_uclibc_be_archs_linux_install.tar.gz diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk new file mode 100644 index 00000000..f4cb7b73 --- /dev/null +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# toolchain-external-synopsys-arc +# +################################################################################ + +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION = 2016.09 +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_SITE = https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION)-release + +ifeq ($(BR2_arc750d)$(BR2_arc770d),y) +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = arc700 +else +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = archs +endif + +ifeq ($(BR2_arcle),y) +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = le +else +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = be +endif + +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_SOURCE = arc_gnu_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION)_prebuilt_uclibc_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS)_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE)_linux_install.tar.gz + +$(eval $(toolchain-external-package)) diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external.hash b/bsp/buildroot/toolchain/toolchain-external/toolchain-external.hash deleted file mode 100644 index 9d74cb78..00000000 --- a/bsp/buildroot/toolchain/toolchain-external/toolchain-external.hash +++ /dev/null @@ -1,70 +0,0 @@ -###################################### -# Next hashes are all locally computed - -# Blackfin toolchains from Analog Devices -sha256 e424e90d8481d942a40266d78d1488726561fed3ec38403094f98055e61889d0 blackfin-toolchain-2014R1-RC2.i386.tar.bz2 -sha256 c65b1b4b918d5185349d62a3b7bf43b4b21e1175c52598ec047ca56b3f11d857 blackfin-toolchain-uclibc-full-2014R1-RC2.i386.tar.bz2 - -# Mentor's Sourcery CodeBench Lite toolchains -# ARM -sha256 39ee0e789034334ecc89af94e838e3a4815400ac5ff980f808f466b04778532e arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -sha256 e16a5b1e41d7ff1e74161f9405182001bc8d1360d89564e73911032e6966cc0d arm-2014.05-29-arm-none-linux-gnueabi.src.tar.bz2 -# NiosII -sha256 750639290744adda931c81fa2cd2ffc2bde972488047824dcfaa53c42562191d sourceryg++-2016.05-10-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 -sha256 3dc1c2685c0472059547dd7becb5dc991541b8176af39fa7aa5f601d38b9879a sourceryg++-2016.05-10-nios2-linux-gnu.src.tar.bz2 -# SuperH -sha256 59d6766fde244931aa52db01433d5acd051998762a931121c5fc109536a1a802 renesas-2012.09-61-sh-linux-gnu-i686-pc-linux-gnu.tar.bz2 -sha256 e2e58c10e52395d5d35157e35f85233f713c6f9223a652dfc56194cfd2eed004 renesas-2012.09-61-sh-linux-gnu.src.tar.bz2 -# x86 -sha256 ea804cf02014369da52abc4f64e91e96bde2dd2230aca96109459013d4545458 ia32-2012.09-62-i686-pc-linux-gnu-i386-linux.tar.bz2 -sha256 1a9519e415a1e6892c760bf21f7e98f3a633a9d1c5bb8781a96d338e4dd62717 ia32-2012.09-62-i686-pc-linux-gnu.src.tar.bz2 -# AMD64 -sha256 3c31206c8b9277f409ee00e4777ba82dfa6da2a4ca0926501cd5fb6bbd1b407e amd-2015.11-139-x86_64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2 -sha256 0b673f5035f97d5d03c31272cddab0f117d39ad76a5ad2a3bc98c156571527de amd-2015.11-139-x86_64-amd-linux-gnu.src.tar.bz2 -# Aarch64 -sha256 405aada821146755c5f2df566375c2a682456d6b8451ee47b88cf1a52b093676 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2 -sha256 3f50dd6ee433eb5b6992a1071b988e50379a738f54f58722bc60081613764716 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu.src.tar.bz2 -# MIPS -sha256 d354447c4c5160439dafd5464fa3a0266dd41e79f973477238e4f0215a6b5397 mips-2016.05-8-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 -sha256 2658e55d5b71bba25d6f77e868e18b200ea5f75c8add7ed3a9266e716d9adfff mips-2016.05-8-mips-linux-gnu.src.tar.bz2 - -# ARM toolchains from Texas Instrument's Arago project -# There is one source file that covers both binary distributions. -sha256 f2febf3b3c565536461ad4405f1bcb835d75a6afb2a8bec958a1248cb4b81fc7 arago-2011.09-armv7a-linux-gnueabi-sdk.tar.bz2 -sha256 254af7d02eb3bcc8345c78e131700bc995d65b68232caaed21150a5fd1456070 arago-2011.09-armv5te-linux-gnueabi-sdk.tar.bz2 -sha256 25fbf0513ad7322b15cbaae964cafadcbb4c939f2708f57f40b8f9f2d601122b arago-toolchain-2011.09-sources.tar.bz2 - -# ARM and Aarch64 toolchains from Linaro -sha256 0cffac0caea0eb3c8bdddfa14be011ce366680f40aeddbefc7cf23cb6d4f1891 gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz -sha256 eafeb3a5247e9ce31aa35d812e296fba5d5f1443e106d9bef9e38d3ee3ade006 gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_src.tar.bz2 -sha256 dd66f07662e1f3b555eaa0d076f133b6db702ab0b9ab18f7dfc91a23eab653c5 gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz -sha256 4bc9d86390f8fa67a693ba4768ba5b12faaf7dd37c706c05ccd9321e765226e4 gcc-linaro-armeb-linux-gnueabihf-4.9-2014.09_linux.tar.xz -sha256 bf5d3111dad5aa9aef0e955875fb7fc9e918cb24519af7014dd67a9e581a49b1 gcc-linaro-armeb-linux-gnueabihf-4.9-2014.09_src.tar.bz2 -sha256 f488caf46680b0c0a16b66b43fbfd157e3d6389df18e957983132e89529a9804 gcc-linaro-5.3-2016.02-x86_64_armeb-linux-gnueabihf.tar.xz -sha256 3954f496ab01de67241109e82abfaa9b7625fdab4f05e79e7902e9814a07b832 gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.xz -sha256 a7b8f842fdc9d9be22ca4e0c999429780fc6f16ea798b032421b5ec0cfa53b3e gcc-linaro-aarch64-linux-gnu-4.9-2014.09_src.tar.bz2 -sha256 1c85af550bedd378be583317b4abbdc96342b42c19fb19873c13d3093ff694ad gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz - -# Codescape toolchains from Imagination Technologies -# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-03/downloads.html -sha256 e3c1f292ac6a9f12480af431c85a7ed9dfa011a52fd62a50be3363ec6b9bc872 Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz -sha256 10b8ab6d7c492abc19ecabafedc6bc5f12ff88107a3cb76dc452b3a9522d9c56 Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz - -# Synopsys DesignWare ARC toolchains -sha256 1fa4ea2c8616623205f1c7beca02ea31b019099528a7433e5b020b0876b93bf3 arc_gnu_2014.12_prebuilt_uclibc_le_arc700_linux_install.tar.gz -sha256 1080f07fcae2bfc176a3ea8d30b9ed8eaecab70fb786639d6ec70cae8322df10 arc_gnu_2014.12_prebuilt_uclibc_be_arc700_linux_install.tar.gz -sha256 aaaf6facd1f60a3cd2a537154ea39cd7d70501c175e30e01a97e8df6cb8226c7 arc_gnu_2014.12_prebuilt_uclibc_le_archs_linux_install.tar.gz -sha256 30711c5f15762764d4cd5ec1e6ced5b1fddd03aac41c424b0c4ec8a45d5d79cd arc_gnu_2014.12_prebuilt_uclibc_be_archs_linux_install.tar.gz - -# Prebuilt musl toolchains from musl-cross -sha256 e32c23d0b83639fc10ad06666ec086b66453b9be44415fe1a818c3c3b526dfb1 crossx86-armeb-linux-musleabi-1.1.12.tar.xz -sha256 eb81bd5d6ada454c6e854b18bfa8dc801333782152166f6cab9fb7cd11692987 crossx86-arm-linux-musleabi-1.1.12.tar.xz -sha256 a050da284ff22d291ae71dfc249ebdedb18334b8d626804760ce7d5963e392e6 crossx86-arm-linux-musleabihf-1.1.12.tar.xz -sha256 18d07f5c8f4cfe373461cf21cf7b1bfefa820a37e96a69b68e0f315d528b4286 crossx86-i486-linux-musl-1.1.12.tar.xz -sha256 1c1480c2618097e402fe804c1431fbd49b0d43520af81d4c1a695a2fa13a3922 crossx86-mipsel-linux-musl-1.1.12.tar.xz -sha256 f0a8b3eb0566138ab3cc77bc09648be15bc325da974ec98b9e67f2fb82be3295 crossx86-mipsel-sf-linux-musl-1.1.12.tar.xz -sha256 6a99989c3dff56776981f6760b2c54dcb9e4032be1d649968bb06c04f2e64177 crossx86-mips-linux-musl-1.1.12.tar.xz -sha256 c082adc3e8b0750bb22ca82628524fd525fd77f534517ac5a66e7ac5a297ee6e crossx86-powerpc-linux-musl-1.1.12.tar.xz -sha256 8c6c9ebb54040e47947b4d3af6823d01fef2bb6ee81b18903c801030c066092b crossx86-sh4eb-linux-musl-1.1.12.tar.xz -sha256 ae9a0a5a60226aa086a56628cfd5c1d283c9dffdca37891d7e6adc2bd21ac2e0 crossx86-sh4-linux-musl-1.1.12.tar.xz -sha256 27e0ea1043a58aebeadf1dacd67e47fd0b5c19fc36f42c9374e5fa3308df09c6 crossx86-x86_64-linux-musl-1.1.12.tar.xz diff --git a/bsp/buildroot/toolchain/toolchain-external/toolchain-external.mk b/bsp/buildroot/toolchain/toolchain-external/toolchain-external.mk index ad258b86..48de1e71 100644 --- a/bsp/buildroot/toolchain/toolchain-external/toolchain-external.mk +++ b/bsp/buildroot/toolchain/toolchain-external/toolchain-external.mk @@ -4,249 +4,7 @@ # ################################################################################ -# -# This package implements the support for external toolchains, i.e -# toolchains that are available pre-built, ready to use. Such toolchain -# may either be readily available on the Web (Linaro, Sourcery -# CodeBench, from processor vendors) or may be built with tools like -# Crosstool-NG or Buildroot itself. So far, we have tested this -# with: -# -# * Toolchains generated by Crosstool-NG -# * Toolchains generated by Buildroot -# * Toolchains provided by Linaro for the ARM and AArch64 -# architectures -# * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, -# MIPS, PowerPC, x86, x86_64 and NIOS 2 architectures. For the MIPS -# toolchain, the -muclibc variant isn't supported yet, only the -# default glibc-based variant is. -# * Analog Devices toolchains for the Blackfin architecture -# * Xilinx toolchains for the Microblaze architecture -# * Synopsys DesignWare toolchains for ARC cores -# -# The basic principle is the following -# -# 1. If the toolchain is not pre-installed, download and extract it -# in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR). Otherwise, -# $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) points to were the toolchain has -# already been installed by the user. -# -# 2. For all external toolchains, perform some checks on the -# conformity between the toolchain configuration described in the -# Buildroot menuconfig system, and the real configuration of the -# external toolchain. This is for example important to make sure that -# the Buildroot configuration system knows whether the toolchain -# supports RPC, IPv6, locales, large files, etc. Unfortunately, these -# things cannot be detected automatically, since the value of these -# options (such as BR2_TOOLCHAIN_HAS_NATIVE_RPC) are needed at -# configuration time because these options are used as dependencies -# for other options. And at configuration time, we are not able to -# retrieve the external toolchain configuration. -# -# 3. Copy the libraries needed at runtime to the target directory, -# $(TARGET_DIR). Obviously, things such as the C library, the dynamic -# loader and a few other utility libraries are needed if dynamic -# applications are to be executed on the target system. -# -# 4. Copy the libraries and headers to the staging directory. This -# will allow all further calls to gcc to be made using --sysroot -# $(STAGING_DIR), which greatly simplifies the compilation of the -# packages when using external toolchains. So in the end, only the -# cross-compiler binaries remains external, all libraries and headers -# are imported into the Buildroot tree. -# -# 5. Build a toolchain wrapper which executes the external toolchain -# with a number of arguments (sysroot/march/mtune/..) hardcoded, -# so we're sure the correct configuration is always used and the -# toolchain behaves similar to an internal toolchain. -# This toolchain wrapper and symlinks are installed into -# $(HOST_DIR)/usr/bin like for the internal toolchains, and the rest -# of Buildroot is handled identical for the 2 toolchain types. - -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y) -TOOLCHAIN_EXTERNAL_LIBS += libatomic.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.* -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_ARM_EABIHF),yy) -TOOLCHAIN_EXTERNAL_LIBS += ld-linux-armhf.so.* -else -TOOLCHAIN_EXTERNAL_LIBS += ld*.so.* -endif -ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) -TOOLCHAIN_EXTERNAL_LIBS += libpthread.so.* -ifneq ($(BR2_PACKAGE_GDB)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),) -TOOLCHAIN_EXTERNAL_LIBS += libthread_db.so.* -endif # gdbserver -endif # ! no threads -endif - -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y) -TOOLCHAIN_EXTERNAL_LIBS += libnss_files.so.* libnss_dns.so.* -endif - -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y) -TOOLCHAIN_EXTERNAL_LIBS += libc.so libgcc_s.so.* -endif - -ifeq ($(BR2_INSTALL_LIBSTDCPP),y) -TOOLCHAIN_EXTERNAL_LIBS += libstdc++.so.* -endif - -ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y) -TOOLCHAIN_EXTERNAL_LIBS += libgfortran.so.* -# fortran needs quadmath on x86 and x86_64 -ifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y) -TOOLCHAIN_EXTERNAL_LIBS += libquadmath.so* -endif -endif - -TOOLCHAIN_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) - -# Details about sysroot directory selection. -# -# To find the sysroot directory, we use the trick of looking for the -# 'libc.a' file with the -print-file-name gcc option, and then -# mangling the path to find the base directory of the sysroot. -# -# Note that we do not use the -print-sysroot option, because it is -# only available since gcc 4.4.x, and we only recently dropped support -# for 4.2.x and 4.3.x. -# -# When doing this, we don't pass any option to gcc that could select a -# multilib variant (such as -march) as we want the "main" sysroot, -# which contains all variants of the C library in the case of multilib -# toolchains. We use the TARGET_CC_NO_SYSROOT variable, which is the -# path of the cross-compiler, without the --sysroot=$(STAGING_DIR), -# since what we want to find is the location of the original toolchain -# sysroot. This "main" sysroot directory is stored in SYSROOT_DIR. -# -# Then, multilib toolchains are a little bit more complicated, since -# they in fact have multiple sysroots, one for each variant supported -# by the toolchain. So we need to find the particular sysroot we're -# interested in. -# -# To do so, we ask the compiler where its sysroot is by passing all -# flags (including -march and al.), except the --sysroot flag since we -# want to the compiler to tell us where its original sysroot -# is. ARCH_SUBDIR will contain the subdirectory, in the main -# SYSROOT_DIR, that corresponds to the selected architecture -# variant. ARCH_SYSROOT_DIR will contain the full path to this -# location. -# -# One might wonder why we don't just bother with ARCH_SYSROOT_DIR. The -# fact is that in multilib toolchains, the header files are often only -# present in the main sysroot, and only the libraries are available in -# each variant-specific sysroot directory. - - -TOOLCHAIN_EXTERNAL_PREFIX = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX)) -TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR = $(HOST_DIR)/opt/ext-toolchain - -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) -TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) -else -TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH)) -endif - -ifeq ($(TOOLCHAIN_EXTERNAL_INSTALL_DIR),) -ifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),) -# if no path set, figure it out from path -TOOLCHAIN_EXTERNAL_BIN := $(shell dirname $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc)) -endif -else -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX),y) -TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/$(TOOLCHAIN_EXTERNAL_PREFIX)/bin -else -TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/bin -endif -endif - -# If this is a buildroot toolchain, it already has a wrapper which we want to -# bypass. Since this is only evaluated after it has been extracted, we can use -# $(wildcard ...) here. -TOOLCHAIN_EXTERNAL_SUFFIX = \ - $(if $(wildcard $(TOOLCHAIN_EXTERNAL_BIN)/*.br_real),.br_real) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ - -DBR_CROSS_PATH_SUFFIX='"$(TOOLCHAIN_EXTERNAL_SUFFIX)"' - -TOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)- -TOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX) -TOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX) -TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX) -TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf$(TOOLCHAIN_EXTERNAL_SUFFIX) - -ifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),) -# TOOLCHAIN_EXTERNAL_BIN points outside HOST_DIR => absolute path -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ - -DBR_CROSS_PATH_ABS='"$(TOOLCHAIN_EXTERNAL_BIN)"' -else -# TOOLCHAIN_EXTERNAL_BIN points inside HOST_DIR => relative path -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ - -DBR_CROSS_PATH_REL='"$(TOOLCHAIN_EXTERNAL_BIN:$(HOST_DIR)/%=%)"' -endif - -ifeq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),) -CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU)) -else -CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION)) -endif -CC_TARGET_ARCH_ := $(call qstrip,$(BR2_GCC_TARGET_ARCH)) -CC_TARGET_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_ABI)) -CC_TARGET_FPU_ := $(call qstrip,$(BR2_GCC_TARGET_FPU)) -CC_TARGET_FLOAT_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) -CC_TARGET_MODE_ := $(call qstrip,$(BR2_GCC_TARGET_MODE)) - -# march/mtune/floating point mode needs to be passed to the external toolchain -# to select the right multilib variant -ifeq ($(BR2_x86_64),y) -TOOLCHAIN_EXTERNAL_CFLAGS += -m64 -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_64 -endif -ifneq ($(CC_TARGET_ARCH_),) -TOOLCHAIN_EXTERNAL_CFLAGS += -march=$(CC_TARGET_ARCH_) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='"$(CC_TARGET_ARCH_)"' -endif -ifneq ($(CC_TARGET_CPU_),) -TOOLCHAIN_EXTERNAL_CFLAGS += -mcpu=$(CC_TARGET_CPU_) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='"$(CC_TARGET_CPU_)"' -endif -ifneq ($(CC_TARGET_ABI_),) -TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(CC_TARGET_ABI_) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='"$(CC_TARGET_ABI_)"' -endif -ifneq ($(CC_TARGET_FPU_),) -TOOLCHAIN_EXTERNAL_CFLAGS += -mfpu=$(CC_TARGET_FPU_) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='"$(CC_TARGET_FPU_)"' -endif -ifneq ($(CC_TARGET_FLOAT_ABI_),) -TOOLCHAIN_EXTERNAL_CFLAGS += -mfloat-abi=$(CC_TARGET_FLOAT_ABI_) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='"$(CC_TARGET_FLOAT_ABI_)"' -endif -ifneq ($(CC_TARGET_MODE_),) -TOOLCHAIN_EXTERNAL_CFLAGS += -m$(CC_TARGET_MODE_) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='"$(CC_TARGET_MODE_)"' -endif -ifeq ($(BR2_BINFMT_FLAT),y) -TOOLCHAIN_EXTERNAL_CFLAGS += -Wl,-elf2flt -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_BINFMT_FLAT -endif -ifeq ($(BR2_mipsel)$(BR2_mips64el),y) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_LITTLE_ENDIAN -TOOLCHAIN_EXTERNAL_CFLAGS += -EL -endif -ifeq ($(BR2_mips)$(BR2_mips64),y) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_BIG_ENDIAN -TOOLCHAIN_EXTERNAL_CFLAGS += -EB -endif -ifeq ($(BR2_arceb),y) -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARC_TARGET_BIG_ENDIAN -TOOLCHAIN_EXTERNAL_CFLAGS += -EB -endif - -TOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION)) - -ifeq ($(BR2_SOFT_FLOAT),y) -TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float -TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_SOFTFLOAT=1 -endif +TOOLCHAIN_EXTERNAL_ADD_TOOLCHAIN_DEPENDENCY = NO # musl does not provide an implementation for sys/queue.h or sys/cdefs.h. # So, add the musl-compat-headers package that will install those files, @@ -257,557 +15,14 @@ ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) TOOLCHAIN_EXTERNAL_DEPENDENCIES += musl-compat-headers endif -# The Linaro toolchain expects the libraries in -# {/usr,}/lib/, but Buildroot copies them to -# {/usr,}/lib, so we need to create a symbolic link. -define TOOLCHAIN_EXTERNAL_LINARO_SYMLINK - ln -snf . $(TARGET_DIR)/lib/$(TOOLCHAIN_EXTERNAL_PREFIX) - ln -snf . $(TARGET_DIR)/usr/lib/$(TOOLCHAIN_EXTERNAL_PREFIX) -endef +$(eval $(virtual-package)) -# The Codescape toolchain uses a sysroot layout that places them -# side-by-side instead of nested like multilibs. A symlink is needed -# much like for the nested sysroots which are handled in -# copy_toolchain_sysroot but there is not enough information in there -# to determine whether the sysroot layout was nested or side-by-side. -# Add the symlink here for now. -define TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_SYMLINK - $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \ - ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \ - ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR} -endef - -# Special fixup for Codescape MIPS toolchains, that have bin- and -# sbin- directories. We create symlinks bin -> bin- and sbin -# -> sbin- so that the rest of Buildroot can find the toolchain -# tools in the appropriate location. -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS)$(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS),y) -ifeq ($(BR2_MIPS_OABI32),y) -TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX = o32 -else ifeq ($(BR2_MIPS_NABI32),y) -TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX = n32 -else ifeq ($(BR2_MIPS_NABI64),y) -TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX = n64 +# Ensure the external-toolchain package has a prefix defined. +# This comes after the virtual-package definition, which checks the provider. +ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +ifeq ($(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX)),) +$(error No prefix selected for external toolchain package $(BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL). Configuration error) +endif endif -define TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_STAGING_FIXUPS - rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin - ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin - ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin -endef -endif - -# Special handling for Blackfin toolchain, because of the split in two -# tarballs, and the organization of tarball contents. The tarballs -# contain ./opt/uClinux/{bfin-uclinux,bfin-linux-uclibc} directories, -# which themselves contain the toolchain. This is why we strip more -# components than usual. -define TOOLCHAIN_EXTERNAL_BLACKFIN_UCLIBC_EXTRA_EXTRACT - $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS) | \ - $(TAR) --strip-components=3 --hard-dereference -C $(@D) $(TAR_OPTIONS) - -endef - -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y) -TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi -TOOLCHAIN_EXTERNAL_SOURCE = arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A),y) -TOOLCHAIN_EXTERNAL_SITE = http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/exports -TOOLCHAIN_EXTERNAL_SOURCE = arago-2011.09-armv7a-linux-gnueabi-sdk.tar.bz2 -TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = arago-toolchain-2011.09-sources.tar.bz2 -define TOOLCHAIN_EXTERNAL_FIXUP_CMDS - mv $(@D)/arago-2011.09/armv7a/* $(@D)/ - rm -rf $(@D)/arago-2011.09/ -endef -TOOLCHAIN_EXTERNAL_POST_EXTRACT_HOOKS += TOOLCHAIN_EXTERNAL_FIXUP_CMDS -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE),y) -TOOLCHAIN_EXTERNAL_SITE = http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/exports -TOOLCHAIN_EXTERNAL_SOURCE = arago-2011.09-armv5te-linux-gnueabi-sdk.tar.bz2 -TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = arago-toolchain-2011.09-sources.tar.bz2 -define TOOLCHAIN_EXTERNAL_FIXUP_CMDS - mv $(@D)/arago-2011.09/armv5te/* $(@D)/ - rm -rf $(@D)/arago-2011.09/ -endef -TOOLCHAIN_EXTERNAL_POST_EXTRACT_HOOKS += TOOLCHAIN_EXTERNAL_FIXUP_CMDS -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM),y) -ifeq ($(HOSTARCH),x86) -TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/14.09/components/toolchain/binaries -TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz -TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_src.tar.bz2 -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_SYMLINK -else -TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf -TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz -endif -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB),y) -ifeq ($(HOSTARCH),x86) -TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/14.09/components/toolchain/binaries -TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-armeb-linux-gnueabihf-4.9-2014.09_linux.tar.xz -TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = gcc-linaro-armeb-linux-gnueabihf-4.9-2014.09_src.tar.bz2 -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_SYMLINK -else -TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/armeb-linux-gnueabihf -TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.3-2016.02-x86_64_armeb-linux-gnueabihf.tar.xz -endif -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS),y) -TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu -TOOLCHAIN_EXTERNAL_SOURCE = mips-2016.05-8-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII),y) -TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/nios2-linux-gnu -TOOLCHAIN_EXTERNAL_SOURCE = sourceryg++-2016.05-10-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH),y) -TOOLCHAIN_EXTERNAL_SITE = https://sourcery.mentor.com/public/gnu_toolchain/sh-linux-gnu -TOOLCHAIN_EXTERNAL_SOURCE = renesas-2012.09-61-sh-linux-gnu-i686-pc-linux-gnu.tar.bz2 -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86),y) -TOOLCHAIN_EXTERNAL_SITE = https://sourcery.mentor.com/public/gnu_toolchain/i686-pc-linux-gnu -TOOLCHAIN_EXTERNAL_SOURCE = ia32-2012.09-62-i686-pc-linux-gnu-i386-linux.tar.bz2 -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64),y) -TOOLCHAIN_EXTERNAL_SITE = https://sourcery.mentor.com/public/gnu_toolchain/x86_64-amd-linux-gnu -TOOLCHAIN_EXTERNAL_SOURCE = amd-2015.11-139-x86_64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2 -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS),y) -TOOLCHAIN_EXTERNAL_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-03 -TOOLCHAIN_EXTERNAL_SOURCE = Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_SYMLINK -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_STAGING_FIXUPS -TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 2 -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS),y) -TOOLCHAIN_EXTERNAL_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-03 -TOOLCHAIN_EXTERNAL_SOURCE = Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_SYMLINK -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_STAGING_FIXUPS -TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 2 -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX),y) -TOOLCHAIN_EXTERNAL_SITE = http://downloads.sourceforge.net/project/adi-toolchain/2014R1/2014R1-RC2/i386 -TOOLCHAIN_EXTERNAL_SOURCE = blackfin-toolchain-2014R1-RC2.i386.tar.bz2 -TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS = blackfin-toolchain-uclibc-full-2014R1-RC2.i386.tar.bz2 -TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 3 -TOOLCHAIN_EXTERNAL_POST_EXTRACT_HOOKS += TOOLCHAIN_EXTERNAL_BLACKFIN_UCLIBC_EXTRA_EXTRACT -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64),y) -ifeq ($(HOSTARCH),x86) -TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/14.09/components/toolchain/binaries -TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.xz -TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = gcc-linaro-aarch64-linux-gnu-4.9-2014.09_src.tar.bz2 -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_SYMLINK -else -TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu -TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz -endif -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64),y) -TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/aarch64-amd-linux-gnu -TOOLCHAIN_EXTERNAL_SOURCE = aarch64-amd-2014.11-95-aarch64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2 -define TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_STAGING_FIXUP - ln -sf ld-2.20.so $(STAGING_DIR)/lib/ld-linux-aarch64.so.1 -endef -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_STAGING_FIXUP -define TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_TARGET_FIXUP - ln -sf ld-2.20.so $(TARGET_DIR)/lib/ld-linux-aarch64.so.1 -endef -TOOLCHAIN_EXTERNAL_POST_INSTALL_TARGET_HOOKS += TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_TARGET_FIXUP -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS),y) -TOOLCHAIN_EXTERNAL_VERSION = 1.1.12 -TOOLCHAIN_EXTERNAL_SITE = https://googledrive.com/host/0BwnS5DMB0YQ6bDhPZkpOYVFhbk0/musl-$(TOOLCHAIN_EXTERNAL_VERSION) -ifeq ($(BR2_arm)$(BR2_ARM_EABI),yy) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-arm-linux-musleabi-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_arm)$(BR2_ARM_EABIHF),yy) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-arm-linux-musleabihf-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_armeb),y) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-armeb-linux-musleabi-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_i386),y) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-i486-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_mips),y) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-mips-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_mipsel):$(BR2_SOFT_FLOAT),y:) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-mipsel-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_mipsel):$(BR2_SOFT_FLOAT),y:y) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-mipsel-sf-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_powerpc),y) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-powerpc-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_sh4),y) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-sh4-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_sh4eb),y) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-sh4eb-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -else ifeq ($(BR2_x86_64),y) -TOOLCHAIN_EXTERNAL_SOURCE = crossx86-x86_64-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz -endif -else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC),y) -TOOLCHAIN_EXTERNAL_SITE = https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-2014.12 -ifeq ($(BR2_arc750d)$(BR2_arc770d),y) -TOOLCHAIN_EXTERNAL_SYNOPSYS_CORE = arc700 -else -TOOLCHAIN_EXTERNAL_SYNOPSYS_CORE = archs -endif -ifeq ($(BR2_arcle),y) -TOOLCHAIN_EXTERNAL_SYNOPSYS_ENDIANESS = le -else -TOOLCHAIN_EXTERNAL_SYNOPSYS_ENDIANESS = be -endif -TOOLCHAIN_EXTERNAL_SOURCE = arc_gnu_2014.12_prebuilt_uclibc_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ENDIANESS)_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_CORE)_linux_install.tar.gz -else -# Custom toolchain -TOOLCHAIN_EXTERNAL_SITE = $(patsubst %/,%,$(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))) -TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL))) -# We can't check hashes for custom downloaded toolchains -BR_NO_CHECK_HASH_FOR += $(TOOLCHAIN_EXTERNAL_SOURCE) -endif - -# Some toolchain vendors have a regular file naming pattern. -# For them, mass-define _ACTUAL_SOURCE_TARBALL based _SITE. -ifneq ($(findstring sourcery.mentor.com/public/gnu_toolchain,$(TOOLCHAIN_EXTERNAL_SITE)),) -TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL ?= \ - $(subst -i686-pc-linux-gnu.tar.bz2,.src.tar.bz2,$(subst -i686-pc-linux-gnu-i386-linux.tar.bz2,-i686-pc-linux-gnu.src.tar.bz2,$(TOOLCHAIN_EXTERNAL_SOURCE))) -endif - -# In fact, we don't need to download the toolchain, since it is already -# available on the system, so force the site and source to be empty so -# that nothing will be downloaded/extracted. -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED),y) -TOOLCHAIN_EXTERNAL_SITE = -TOOLCHAIN_EXTERNAL_SOURCE = -endif - -TOOLCHAIN_EXTERNAL_ADD_TOOLCHAIN_DEPENDENCY = NO - -TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES - -# Normal handling of downloaded toolchain tarball extraction. -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) -TOOLCHAIN_EXTERNAL_EXCLUDES = usr/lib/locale/* - -# As a regular package, the toolchain gets extracted in $(@D), but -# since it's actually a fairly special package, we need it to be moved -# into TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR. -define TOOLCHAIN_EXTERNAL_MOVE - rm -rf $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) - mkdir -p $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) - mv $(@D)/* $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)/ -endef -TOOLCHAIN_EXTERNAL_POST_EXTRACT_HOOKS += \ - TOOLCHAIN_EXTERNAL_MOVE -endif - -# Returns the location of the libc.a file for the given compiler + flags -define toolchain_find_libc_a -$$(readlink -f $$(LANG=C $(1) -print-file-name=libc.a)) -endef - -# Returns the sysroot location for the given compiler + flags. We need -# to handle cases where libc.a is in: -# -# - lib/ -# - usr/lib/ -# - lib32/ -# - lib64/ -# - lib32-fp/ (Cavium toolchain) -# - lib64-fp/ (Cavium toolchain) -# - usr/lib// (Linaro toolchain) -# -# And variations on these. -define toolchain_find_sysroot -$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\.a::') -endef - -# Returns the lib subdirectory for the given compiler + flags (i.e -# typically lib32 or lib64 for some toolchains) -define toolchain_find_libdir -$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:.*/(usr/)?(lib(32|64)?([^/]*)?)/([^/]*/)?libc.a:\2:') -endef - -# Checks for an already installed toolchain: check the toolchain -# location, check that it is usable, and then verify that it -# matches the configuration provided in Buildroot: ABI, C++ support, -# kernel headers version, type of C library and all C library features. -define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS - $(Q)$(call check_cross_compiler_exists,$(TOOLCHAIN_EXTERNAL_CC)) - $(Q)$(call check_unusable_toolchain,$(TOOLCHAIN_EXTERNAL_CC)) - $(Q)SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC))" ; \ - $(call check_kernel_headers_version,\ - $(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC)),\ - $(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST))); \ - $(call check_gcc_version,$(TOOLCHAIN_EXTERNAL_CC),\ - $(call qstrip,$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \ - if test "$(BR2_arm)" = "y" ; then \ - $(call check_arm_abi,\ - "$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS)",\ - $(TOOLCHAIN_EXTERNAL_READELF)) ; \ - fi ; \ - if test "$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \ - $(call check_cplusplus,$(TOOLCHAIN_EXTERNAL_CXX)) ; \ - fi ; \ - if test "$(BR2_TOOLCHAIN_HAS_FORTRAN)" = "y" ; then \ - $(call check_fortran,$(TOOLCHAIN_EXTERNAL_FC)) ; \ - fi ; \ - if test "$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \ - $(call check_uclibc,$${SYSROOT_DIR}) ; \ - elif test "$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \ - $(call check_musl,$${SYSROOT_DIR}) ; \ - else \ - $(call check_glibc,$${SYSROOT_DIR}) ; \ - fi - $(Q)$(call check_toolchain_ssp,$(TOOLCHAIN_EXTERNAL_CC)) -endef - -# With the musl C library, the libc.so library directly plays the role -# of the dynamic library loader. We just need to create a symbolic -# link to libc.so with the appropriate name. -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y) -ifeq ($(BR2_i386),y) -MUSL_ARCH = i386 -else ifeq ($(BR2_ARM_EABIHF),y) -MUSL_ARCH = armhf -else ifeq ($(BR2_mipsel):$(BR2_SOFT_FLOAT),y:y) -MUSL_ARCH = mipsel-sf -else ifeq ($(BR2_sh),y) -MUSL_ARCH = sh -else -MUSL_ARCH = $(ARCH) -endif -define TOOLCHAIN_EXTERNAL_MUSL_LD_LINK - ln -sf libc.so $(TARGET_DIR)/lib/ld-musl-$(MUSL_ARCH).so.1 -endef -TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_MUSL_LD_LINK -endif - -# Create a symlink from (usr/)$(ARCH_LIB_DIR) to lib. -# Note: the skeleton package additionally creates lib32->lib or lib64->lib -# (as appropriate) -# -# $1: destination directory (TARGET_DIR / STAGING_DIR) -create_lib_symlinks = \ - $(Q)DESTDIR="$(strip $1)" ; \ - ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ - if [ ! -e "$${DESTDIR}/$${ARCH_LIB_DIR}" -a ! -e "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ]; then \ - ln -snf lib "$${DESTDIR}/$${ARCH_LIB_DIR}" ; \ - ln -snf lib "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ; \ - fi - -define TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK - $(call create_lib_symlinks,$(STAGING_DIR)) -endef - -define TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK - $(call create_lib_symlinks,$(TARGET_DIR)) -endef - -# Integration of the toolchain into Buildroot: find the main sysroot -# and the variant-specific sysroot, then copy the needed libraries to -# the $(TARGET_DIR) and copy the whole sysroot (libraries and headers) -# to $(STAGING_DIR). -# -# Variables are defined as follows: -# -# LIBC_A_LOCATION: location of the libc.a file in the default -# multilib variant (allows to find the main -# sysroot directory) -# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/usr/lib/libc.a -# -# SYSROOT_DIR: the main sysroot directory, deduced from -# LIBC_A_LOCATION by removing the -# usr/lib[32|64]/libc.a part of the path. -# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/ -# -# ARCH_LIBC_A_LOCATION: location of the libc.a file in the selected -# multilib variant (taking into account the -# CFLAGS). Allows to find the sysroot of the -# selected multilib variant. -# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/usr/lib/libc.a -# -# ARCH_SYSROOT_DIR: the sysroot of the selected multilib variant, -# deduced from ARCH_LIBC_A_LOCATION by removing -# usr/lib[32|64]/libc.a at the end of the path. -# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/ -# -# ARCH_LIB_DIR: 'lib', 'lib32' or 'lib64' depending on where libraries -# are stored. Deduced from ARCH_LIBC_A_LOCATION by -# looking at usr/lib??/libc.a. -# Ex: lib -# -# ARCH_SUBDIR: the relative location of the sysroot of the selected -# multilib variant compared to the main sysroot. -# Ex: mips16/soft-float/el -# -# SUPPORT_LIB_DIR: some toolchains, such as recent Linaro toolchains, -# store GCC support libraries (libstdc++, -# libgcc_s, etc.) outside of the sysroot. In -# this case, SUPPORT_LIB_DIR is set to a -# non-empty value, and points to the directory -# where these support libraries are -# available. Those libraries will be copied to -# our sysroot, and the directory will also be -# considered when searching libraries for copy -# to the target filesystem. -# -# Please be very careful to check the major toolchain sources: -# Buildroot, Crosstool-NG, CodeSourcery and Linaro -# before doing any modification on the below logic. - -ifeq ($(BR2_STATIC_LIBS),) -define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS - $(Q)$(call MESSAGE,"Copying external toolchain libraries to target...") - $(Q)for libs in $(TOOLCHAIN_EXTERNAL_LIBS); do \ - $(call copy_toolchain_lib_root,$$libs); \ - done -endef -endif - -ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),y) -define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER - $(Q)$(call MESSAGE,"Copying gdbserver") - $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ - ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ - gdbserver_found=0 ; \ - for d in $${ARCH_SYSROOT_DIR}/usr \ - $${ARCH_SYSROOT_DIR}/../debug-root/usr \ - $${ARCH_SYSROOT_DIR}/usr/$${ARCH_LIB_DIR} \ - $(TOOLCHAIN_EXTERNAL_INSTALL_DIR); do \ - if test -f $${d}/bin/gdbserver ; then \ - install -m 0755 -D $${d}/bin/gdbserver $(TARGET_DIR)/usr/bin/gdbserver ; \ - gdbserver_found=1 ; \ - break ; \ - fi ; \ - done ; \ - if [ $${gdbserver_found} -eq 0 ] ; then \ - echo "Could not find gdbserver in external toolchain" ; \ - exit 1 ; \ - fi -endef -endif - -define TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS - $(Q)SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC))" ; \ - ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ - ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ - SUPPORT_LIB_DIR="" ; \ - if test `find $${ARCH_SYSROOT_DIR} -name 'libstdc++.a' | wc -l` -eq 0 ; then \ - LIBSTDCPP_A_LOCATION=$$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libstdc++.a) ; \ - if [ -e "$${LIBSTDCPP_A_LOCATION}" ]; then \ - SUPPORT_LIB_DIR=`readlink -f $${LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\+\+\.a::'` ; \ - fi ; \ - fi ; \ - ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR}(.*)/$$:\1:"` ; \ - $(call MESSAGE,"Copying external toolchain sysroot to staging...") ; \ - $(call copy_toolchain_sysroot,$${SYSROOT_DIR},$${ARCH_SYSROOT_DIR},$${ARCH_SUBDIR},$${ARCH_LIB_DIR},$${SUPPORT_LIB_DIR}) -endef - -# Special installation target used on the Blackfin architecture when -# FDPIC is not the primary binary format being used, but the user has -# nonetheless requested the installation of the FDPIC libraries to the -# target filesystem. -ifeq ($(BR2_BFIN_INSTALL_FDPIC_SHARED),y) -define TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS_BFIN_FDPIC - $(Q)$(call MESSAGE,"Install external toolchain FDPIC libraries to staging...") - $(Q)FDPIC_EXTERNAL_CC=$(dir $(TOOLCHAIN_EXTERNAL_CC))/../../bfin-linux-uclibc/bin/bfin-linux-uclibc-gcc ; \ - FDPIC_SYSROOT_DIR="$(call toolchain_find_sysroot,$${FDPIC_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ - FDPIC_LIB_DIR="$(call toolchain_find_libdir,$${FDPIC_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ - FDPIC_SUPPORT_LIB_DIR="" ; \ - if test `find $${FDPIC_SYSROOT_DIR} -name 'libstdc++.a' | wc -l` -eq 0 ; then \ - FDPIC_LIBSTDCPP_A_LOCATION=$$(LANG=C $${FDPIC_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libstdc++.a) ; \ - if [ -e "$${FDPIC_LIBSTDCPP_A_LOCATION}" ]; then \ - FDPIC_SUPPORT_LIB_DIR=`readlink -f $${FDPIC_LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\+\+\.a::'` ; \ - fi ; \ - fi ; \ - $(call copy_toolchain_sysroot,$${FDPIC_SYSROOT_DIR},$${FDPIC_SYSROOT_DIR},,$${FDPIC_LIB_DIR},$${FDPIC_SUPPORT_LIB_DIR}) -endef -define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_BFIN_FDPIC - $(Q)$(call MESSAGE,"Install external toolchain FDPIC libraries to target...") - $(Q)for libs in $(TOOLCHAIN_EXTERNAL_LIBS); do \ - $(call copy_toolchain_lib_root,$$libs); \ - done -endef -endif - -# Special installation target used on the Blackfin architecture when -# shared FLAT is not the primary format being used, but the user has -# nonetheless requested the installation of the shared FLAT libraries -# to the target filesystem. The flat libraries are found and linked -# according to the index in name "libN.so". Index 1 is reserved for -# the standard C library. Customer libraries can use 4 and above. -ifeq ($(BR2_BFIN_INSTALL_FLAT_SHARED),y) -define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_BFIN_FLAT - $(Q)$(call MESSAGE,"Install external toolchain FLAT libraries to target...") - $(Q)FLAT_EXTERNAL_CC=$(dir $(TOOLCHAIN_EXTERNAL_CC))../../bfin-uclinux/bin/bfin-uclinux-gcc ; \ - FLAT_LIBC_A_LOCATION=`$${FLAT_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS) -mid-shared-library -print-file-name=libc`; \ - if [ -f $${FLAT_LIBC_A_LOCATION} -a ! -h $${FLAT_LIBC_A_LOCATION} ] ; then \ - $(INSTALL) -D $${FLAT_LIBC_A_LOCATION} $(TARGET_DIR)/lib/lib1.so; \ - fi -endef -endif - -# Build toolchain wrapper for preprocessor, C, C++ and Fortran compilers -# and setup symlinks for everything else. Skip gdb symlink when we are -# building our own gdb to prevent two gdb's in output/host/usr/bin. -# The LTO support in gcc creates wrappers for ar, ranlib and nm which load -# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and -# *-gcc-nm and should be used instead of the real programs when -flto is -# used. However, we should not add the toolchain wrapper for them, and they -# match the *cc-* pattern. Therefore, an additional case is added for *-ar, -# *-ranlib and *-nm. -define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER - $(Q)cd $(HOST_DIR)/usr/bin; \ - for i in $(TOOLCHAIN_EXTERNAL_CROSS)*; do \ - base=$${i##*/}; \ - case "$$base" in \ - *-ar|*-ranlib|*-nm) \ - ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \ - ;; \ - *cc|*cc-*|*++|*++-*|*cpp|*-gfortran) \ - ln -sf toolchain-wrapper $$base; \ - ;; \ - *gdb|*gdbtui) \ - if test "$(BR2_PACKAGE_HOST_GDB)" != "y"; then \ - ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \ - fi \ - ;; \ - *) \ - ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \ - ;; \ - esac; \ - done -endef - -# -# Generate gdbinit file for use with Buildroot -# -define TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT - $(Q)if test -f $(TARGET_CROSS)gdb ; then \ - $(call MESSAGE,"Installing gdbinit"); \ - $(gen_gdbinit_file); \ - fi -endef - -# uClibc-ng dynamic loader is called ld-uClibc.so.1, but gcc is not -# patched specifically for uClibc-ng, so it continues to generate -# binaries that expect the dynamic loader to be named ld-uClibc.so.0, -# like with the original uClibc. Therefore, we create an additional -# symbolic link to make uClibc-ng systems work properly. -define TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO - $(Q)if test -e $(TARGET_DIR)/lib/ld-uClibc.so.1; then \ - ln -sf ld-uClibc.so.1 $(TARGET_DIR)/lib/ld-uClibc.so.0 ; \ - fi - $(Q)if test -e $(TARGET_DIR)/lib/ld64-uClibc.so.1; then \ - ln -sf ld64-uClibc.so.1 $(TARGET_DIR)/lib/ld64-uClibc.so.0 ; \ - fi -endef - -TOOLCHAIN_EXTERNAL_BUILD_CMDS = $(TOOLCHAIN_BUILD_WRAPPER) - -define TOOLCHAIN_EXTERNAL_INSTALL_STAGING_CMDS - $(TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK) - $(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS) - $(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS_BFIN_FDPIC) - $(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER) - $(TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT) -endef - -# Even though we're installing things in both the staging, the host -# and the target directory, we do everything within the -# install-staging step, arbitrarily. -define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_CMDS - $(TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK) - $(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS) - $(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER) - $(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_BFIN_FDPIC) - $(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_BFIN_FLAT) - $(TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO) -endef - -$(eval $(generic-package)) - +include toolchain/toolchain-external/*/*.mk diff --git a/bsp/buildroot/toolchain/toolchain-wrapper.c b/bsp/buildroot/toolchain/toolchain-wrapper.c index 887058f6..100aa181 100644 --- a/bsp/buildroot/toolchain/toolchain-wrapper.c +++ b/bsp/buildroot/toolchain/toolchain-wrapper.c @@ -66,6 +66,9 @@ static char *predef_args[] = { #ifdef BR_OMIT_LOCK_PREFIX "-Wa,-momit-lock-prefix=yes", #endif +#ifdef BR_NO_FUSED_MADD + "-mno-fused-madd", +#endif #ifdef BR_BINFMT_FLAT "-Wl,-elf2flt", #endif @@ -80,22 +83,77 @@ static char *predef_args[] = { #endif }; -static void check_unsafe_path(const char *path, int paranoid) -{ - char **c; - static char *unsafe_paths[] = { - "/lib", "/usr/include", "/usr/lib", "/usr/local/include", "/usr/local/lib", NULL, - }; +/* A {string,length} tuple, to avoid computing strlen() on constants. + * - str must be a \0-terminated string + * - len does not account for the terminating '\0' + */ +struct str_len_s { + const char *str; + size_t len; +}; - for (c = unsafe_paths; *c != NULL; c++) { - if (!strncmp(path, *c, strlen(*c))) { - fprintf(stderr, "%s: %s: unsafe header/library path used in cross-compilation: '%s'\n", - program_invocation_short_name, - paranoid ? "ERROR" : "WARNING", path); - if (paranoid) - exit(1); +/* Define a {string,length} tuple. Takes an unquoted constant string as + * parameter. sizeof() on a string literal includes the terminating \0, + * but we don't want to count it. + */ +#define STR_LEN(s) { #s, sizeof(#s)-1 } + +/* List of paths considered unsafe for cross-compilation. + * + * An unsafe path is one that points to a directory with libraries or + * headers for the build machine, which are not suitable for the target. + */ +static const struct str_len_s unsafe_paths[] = { + STR_LEN(/lib), + STR_LEN(/usr/include), + STR_LEN(/usr/lib), + STR_LEN(/usr/local/include), + STR_LEN(/usr/local/lib), + { NULL, 0 }, +}; + +/* Unsafe options are options that specify a potentialy unsafe path, + * that will be checked by check_unsafe_path(), below. + */ +static const struct str_len_s unsafe_opts[] = { + STR_LEN(-I), + STR_LEN(-idirafter), + STR_LEN(-iquote), + STR_LEN(-isystem), + STR_LEN(-L), + { NULL, 0 }, +}; + +/* Check if path is unsafe for cross-compilation. Unsafe paths are those + * pointing to the standard native include or library paths. + * + * We print the arguments leading to the failure. For some options, gcc + * accepts the path to be concatenated to the argument (e.g. -I/foo/bar) + * or separated (e.g. -I /foo/bar). In the first case, we need only print + * the argument as it already contains the path (arg_has_path), while in + * the second case we need to print both (!arg_has_path). + * + * If paranoid, exit in error instead of just printing a warning. + */ +static void check_unsafe_path(const char *arg, + const char *path, + int paranoid, + int arg_has_path) +{ + const struct str_len_s *p; + + for (p=unsafe_paths; p->str; p++) { + if (strncmp(path, p->str, p->len)) continue; - } + fprintf(stderr, + "%s: %s: unsafe header/library path used in cross-compilation: '%s%s%s'\n", + program_invocation_short_name, + paranoid ? "ERROR" : "WARNING", + arg, + arg_has_path ? "" : "' '", /* close single-quote, space, open single-quote */ + arg_has_path ? "" : path); /* so that arg and path are properly quoted. */ + if (paranoid) + exit(1); } } @@ -222,24 +280,23 @@ int main(int argc, char **argv) /* Check for unsafe library and header paths */ for (i = 1; i < argc; i++) { - - /* Skip options that do not start with -I and -L */ - if (strncmp(argv[i], "-I", 2) && strncmp(argv[i], "-L", 2)) - continue; - - /* We handle two cases: first the case where -I/-L and - * the path are separated by one space and therefore - * visible as two separate options, and then the case - * where they are stuck together forming one single - * option. - */ - if (argv[i][2] == '\0') { - i++; - if (i == argc) + const struct str_len_s *opt; + for (opt=unsafe_opts; opt->str; opt++ ) { + /* Skip any non-unsafe option. */ + if (strncmp(argv[i], opt->str, opt->len)) continue; - check_unsafe_path(argv[i], paranoid); - } else { - check_unsafe_path(argv[i] + 2, paranoid); + + /* Handle both cases: + * - path is a separate argument, + * - path is concatenated with option. + */ + if (argv[i][opt->len] == '\0') { + i++; + if (i == argc) + break; + check_unsafe_path(argv[i-1], argv[i], paranoid, 0); + } else + check_unsafe_path(argv[i], argv[i] + opt->len, paranoid, 1); } } diff --git a/bsp/buildroot/toolchain/toolchain-wrapper.mk b/bsp/buildroot/toolchain/toolchain-wrapper.mk index af39071c..c7b50195 100644 --- a/bsp/buildroot/toolchain/toolchain-wrapper.mk +++ b/bsp/buildroot/toolchain/toolchain-wrapper.mk @@ -26,15 +26,23 @@ ifeq ($(BR2_x86_x1000),y) TOOLCHAIN_WRAPPER_ARGS += -DBR_OMIT_LOCK_PREFIX endif +# Avoid FPU bug on XBurst CPUs +ifeq ($(BR2_mips_xburst),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_NO_FUSED_MADD +endif + ifeq ($(BR2_CCACHE_USE_BASEDIR),y) TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_BASEDIR='"$(BASE_DIR)"' endif -# For simplicity, build directly into the install location -define TOOLCHAIN_BUILD_WRAPPER - $(Q)mkdir -p $(HOST_DIR)/usr/bin +define TOOLCHAIN_WRAPPER_BUILD $(HOSTCC) $(HOST_CFLAGS) $(TOOLCHAIN_WRAPPER_ARGS) \ -s -Wl,--hash-style=$(TOOLCHAIN_WRAPPER_HASH_STYLE) \ toolchain/toolchain-wrapper.c \ - -o $(HOST_DIR)/usr/bin/toolchain-wrapper + -o $(@D)/toolchain-wrapper +endef + +define TOOLCHAIN_WRAPPER_INSTALL + $(INSTALL) -D -m 0755 $(@D)/toolchain-wrapper \ + $(HOST_DIR)/usr/bin/toolchain-wrapper endef diff --git a/bsp/buildroot/toolchain/toolchain/toolchain.mk b/bsp/buildroot/toolchain/toolchain/toolchain.mk index c22713bf..b16db015 100644 --- a/bsp/buildroot/toolchain/toolchain/toolchain.mk +++ b/bsp/buildroot/toolchain/toolchain/toolchain.mk @@ -12,6 +12,29 @@ endif TOOLCHAIN_ADD_TOOLCHAIN_DEPENDENCY = NO +# Apply a hack that Rick Felker suggested[1] to avoid conflicts between libc +# headers and kernel headers. This is a temporary measure until musl finds a +# better solution. +# +# Augment the original suggestion with __USE_MISC since recent kernels +# require this glibc internal macro. Also, as musl defines IFF_LOWER_UP, +# IFF_DORMANT and IFF_ECHO, add another macro to suppress them in the +# kernel header, and avoid macro/enum conflict. +# +# [1] http://www.openwall.com/lists/musl/2015/10/08/2 +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +define TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK + $(SED) 's/^#if defined(__GLIBC__)$$/#if 1/' \ + $(STAGING_DIR)/usr/include/linux/libc-compat.h + $(SED) '1s/^/#define __USE_MISC\n/' \ + $(STAGING_DIR)/usr/include/linux/libc-compat.h + $(SED) '1s/^/#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0\n/' \ + $(STAGING_DIR)/usr/include/linux/libc-compat.h +endef +TOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK +TOOLCHAIN_INSTALL_STAGING = YES +endif + $(eval $(virtual-package)) toolchain: $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake

    tm|R<>is zm0-p;v8togX~~|^#_#E+LJ6*+OFui`zh=>Y?)4q<$W^MzEI?E_!N&mKY>(nCkPPcO znVy5lLWIY@`T(-GnPW!OBU7k#X} z!FAP>SnDhD6R%Zj7t4O)Y&jiC6m!e07vE{cnwI1SrL<8+vNWvO?}qBDL6gOGl8Ok= zE6|xx47BpxMov0j^GAh9Xc)SX?9m9jJI~esjC&p$lYm^_ZBts3Q7js151>;=*M$!11X8JBjq=9)0RQLSi;4g0x z%1+*&{&f_?fy0;dfXtde2ToGkI|s8por$ zP(CV8Y-Y=9)3_Bf18`8O{`L6JZu-Rx*szC*@0h9sU2%geZ3thH2ph$!zSDr$Z%E(u z@YqyfXORD(H2=pVLWB*%2S{P?+SoE*V9l1wyjDq+6*mOVVN0=zO!)l3*Gi~|>tr(W z6dse1$eocJ&8=^Ju6ubtzP>a6MkLb@NQevBKA12ef#P(r6W7td^yL4#fBpC*8qtS67dEK;RRA^2A3TjM2M_|eSK>|2BnTks zK0cm4nC|5O3#yZVhoY=9-FEhQIQ#Xi?D^aosuVZ0-4nm*9c3u`g*ejw@-l6}(dJW; z=1D3}3oUh`=}0OHy7Q-f=T@1GVootlOo3NAKGvin)yQE4GXmKr%qQJ^c%8Ov=|wk< zjSqAnA&wY5$b3BX2T&3uCp!G_nOvW|9=5*ja`xE2dTJB0M32#obw4p<7lcD~W_~{( z)ibI0gQTFsLOGPwFuwiy7R6+TW-%<4Dt$30T~z{xN|&68^p3mJpxqp1Mr2(?mp3a* zob)F*lciS&&T+}BWxMRN6Aqp8X(Gm^9c}iE!xKThv9Gnb3V_Oxl<9EP*x?XN;RixA z;U7>;YrQItD$`v!Or!x?{w2=s@#whd?ASuapwA(6S)ia3$ed(|W1dT8=I5`#5(2CR zk*Rf1W12G=Q>l$v43&0qNHv-o-AnqOC&knbYsb=x+O4+$m&m6a%nba#|l&? z&8e6S$5H^E1Gwy|=SC3DkGNnrMe_&&ThK`NX>f+$dsAOt1_X3j5_cwI=Lyp2-ca{A5;>~^ z%hJ!%!YBS^4{_k}(OI$e-T9JnuqzH4(KVJ*j-tO)7`#8QJxVgsX z_dTussBhh4h6i!x^LTtRIE{RuT()0am%b97FWfM8TA7ES1$3`2`gr7>)@LC?#(fM_<83ltp zR0iN%dHVPIj>!I;J#GjFlp*)K=CNVruOb=#oC{=2I!(`Ep3>SM;Z$ANXV_FQu;Hm^ zvFXmK^pIjC7^cn~qmOq6*2`f-3CtA4FK^hCC#DFLo$gKxlFCI*E`E8~^;f#4$b+CI zKuBy7>dpkN_FlZ^OW{*a8_TFROjXp#cJl2UEMjexeh;s|F*WW&oo|k%z{d#X*0g`?5rKriOB+x%I%!k zjo0iazl^2w>5j?jftb4pO7>{&J*y}%faH33^XVYat}He|{dftQ4j8uv&GE{lln-|x zM28thf`<2z6_n4h@T1C%-7`LC4(vDA{^>Fj;FP2oM1GG`MSU^~7^4S;OrlFNir9_t@C)8xx*HqS*8A7ub7&B1_{R^u}{i z;p9Iq0kPgf038JFC#0FkW)=}qz{5|VM=563S}o-+&4@pu!=XEFEiPpR#sPCIwwR1Y zE03OWKdE3k_D+46z)y8m0j5m=;3B_u2Rc*RI7GrtIkVJTr6^#r5TVO&Q#}Zx^r$df zVQ-lWb8YFQUuRthIN!F$N-5 z3J&Aa8Y-p->2_@jxW$DqUqsgZn8Tf9pd4I{vfdEoTU$bef>v*U-$zdW@tKAFmwdE@ z(`!|6IzqXvE;rb|%436pUvVG>9;$BvIAj%I|9fZw>kI;&ic|uQn);UtWEh6D|9Rcj zBk~s+cWWLsNB|^QhH}-(e@{*J#CQ;tRC#8QG5~UEiN0uz1%mX@V&Jv$V@Melv0yJ6 zC$ie_>Kb8*ALD6{^W5x2G0n5x!zcD0lxY=A$TcN(fJ z89*vmJsG%No#O~*i7k9Y#d^OKL}sV;lPA?#f=)mMHrq&>UaKatLLZED)_U%zp!kOo zf5(AVJr#o{TfH|wMZ0&~d;1>)ZwznqutQZVRwZ~t!J+u^n6EJ21-pWFwAlWf1`WQ) z^VKRFq!E<#b&}l=xZQsk@Bd%7RA^@qSYY=5(d?(9vVye1NI~6eU2o5m+_JPTvw{eL zf9+X93ZGS^qzfXCkly6`)y5$K{{}{y!Y=ED9fTBTuA%UwSFu znAqa7-Z<^G?#|sHx?ydmlzeFZaDyPJs6i9$!s}IU2?Hjy3koH;xZ$<<;rn!VcmB*D z)txp3jLHVyY=;DwG3M#w1}5{_`P)$ z@GlaR;`}N&pRV6m zv^Q4Q$9CaREXmEdGCuD(q2BmS$zie?JN zf*^VCV<&mA=r%3!ZX7BpOdhdKGaGRYfR_HXqf+^@Y)#IsLUNIfyas?g1OjSTgYC6q z=~eU#i@H#xb4T>8POmTgF;M=d-3YN>t#F=wrT9%mqgZ7gtnm$Ct0cW!(=eHGwwU}&7#+FNbI%Q9Sz8AoLQ#cklRtQ9x; z5{_6C`+a-?=F%blWzDgrk_*WI>m_eY0~TOLe=ma_hx=|bSv|BED9aHBP#i$ z82bL+X(yKjnxnyia!yL_ON6KBdTw1#lvpWLF}$TG5CSRFQx7mevvW9f86iARM$uGC z5-#%J3;UI(KSiK~M@i|Z077?G%eRqKGvHvJHD@C;DK7Pp zIuP>(ap2^`L+8w_cL98rZPNdmnYM}F@AGS*chwOSt2xkLWz=9C2-vTVa5&sOJ z*qhd77C#aplZFLI0Z=pjLlY30iA8({sYqCp{tyAzE5H(FY>BnLz`_S*)N#ct*qOKa z4xNz;L5<52lx2m>A3#0p*yB_q~ncr@*Ro!1DOBNG)eKN>T8^0gb=I9 zX`i?cI8~_mbEW7N#!m@;s(#|&gY8Z@!|bKj_CgVRB4pjUZ3MRuk->X{u&kH$KsjLGP8<`0x;JPFmZxdAdNAuRo`}3<&$lvo6WIDbPhBeC3s^N@ul*q(kZ#@>^RAS z8>s?9=Izl{ovhvV;(Xmdr|Zk5`}kC99~O~hvJ9$|u11hEo}{8_YXT8`8fEx=$-UwK za(sE~+yVH$dj2dZEV$L;@ct2I@RSIYeKW9(j|}D;1duw(3R4bw?QW#m$~6GzW}d)` zfBiTomM&ur$Nep^@4qmQN42)O`)!_n-#bT(@#_Pk@lQZeemWG(phl+^lW&3$JHhk-d%j zHgBC&W*yAn@JM|nw5T%8a9o@~$9F|Tm7+MrObad&esrXIt&PkpU8qdm{-d;O%cHr( zc`9*wy;Sq;EgQQV=b@X}9bAKvn`M!v4&oz;?t5}W98CuoK@8r54UHh&@H-#MJSdtW z96-G4U)lcJ#z&;y(i!VVZ|}CAb**;p-eHwLiO234{cW2|AWk%DQ4x8NFPdY#%I+bn z80`+0fOAFPtk?l^t7(*q`1AEL8M{#9s-Us-j*#3^WWjDdw9S@i&W5>;37%|!uHvM3@$p$SPH|T9o@07`8jhDMHJDz%2Y^SHzXe| z@H?{+t!?U!-b&ann@VN=yk$d45n63A0FSDJUo%!(?VQj1>qg70Ms=`!W@#T)6RapJ zLhQ+z)yD`FmR=>p;8p-ac^R0qEjk*mDr2BU#1m8g^W$s!MKHBYSNK2EqJQx4|Ef_q zSpTmYg^7(lHJ=rN8lb7?pu+*{_fk7&@}a2b7nj5e20o9z1!LPc=i1joh){k&Ca&D+ zXxp?=yF-)+E5E<&JP+p+HaO`cs*EZX&jC?R--c=3ub^7cj(T_=o5(E4>bFraNk$Wo zms|nHB@brnL@S4NNjeWD>NqfBRTF0vSsAR`HBSs)*%!k^1Nh}ltWj4-3U0DTaW;Ti zN6B_jAIY_XL{*j^hRsrE2147ZE2qqLRMkx%Pk9dgmz5fv#J)ZQHhOPus?{ZJWQg z-P5*hP21+QZQI7}_j#Z1yZ_v^Qdujjl1d7vlAPLmpW;8R)n1h7x|u7*S<#STW=i> zU(o(^S71$(tKnBxM=WA_p|n;*j7A>9OhXQH(n8ILNn}qtjf}j`v=W%?A-3JoHu3$w zg7M)XKm|s>g}psnXUE;*XK*@O%|ddW|D**eo2QMU(o6+T$k zrDJ0cFGC-Vyl@5%#Tjj3HQQNauUttq$<5Gpb-j!D&MJ&1VVNj@QC5en8XTtGE*-jqbfT*N0}o zNYU+h;cbHG-VknA35D9QgZ%-f(7L|MM`1g{C-X+`U;@2O1FI$cO9(7@#-pgDvHoB{ zXyIt?G8uKuML)c3w43_m{yu1VL>9qE}8dP1-;ybx0f}p(l@xa$s4mH-( z$i%4+2OeBcr*9!ZVLD|Z?q?Fn8y9>8K|rv$HVLU;=`T^7vYRK zKvp4F7jH&h<0etxPfsA^u@#~IGEoO`esX#Hk7E$>%lrydCE#Gr62kNjp1dA5%kj!f z%{}mz(6s?kXH};4K%~298s2QI`vK@@n`7Hy!ad+$z^iyR zuBdj9iI+$EzhPOb4Mv{x)V&~BMY?C0csKgEs`s_Tr{z!W6WekxSh`Vo7xfT;;qQuU z1Crb#*FfhdZZ{*9yL9h92Wh+V8SFrxx%_;Y1}M)IJtlL;{CnBI9B~EzD6w^OYDKem z0yB%X8+O#C=b+6@w$<%7(9D)d>ZYPW#zv*Uk9BzZRDBt$QKKV;%TY52_x-NGB%ZL4 zdHR4IMcZbav4vA{9;KGfg)>|LfsTTIs_nWtKnKXLE~ZyB98Tb7gPqW<%7tHldOK^WW-HfJ-^k|o9J+1C#Sj1%jSPFV4u-sre zvu6=V>y#94qlx0mFZs-T-X6vPX>>D3l&OAv&y78y`xCb=6{I6;WVb-1%*U|exeE)! z(Je)NW%r@|A#6z=v2W}+&B}rz z1%w484Gpw`YS-wX)GetClBHjpW&Fief36U zr);EZw&7NcnjJTD&A=>t(D`<-!V|DZIW4~V{+KJtU-Uf8fdd& zPFc{3;DeP!a+kYlBF16w2-xr^#AYq;Fr28+Lribmk!D4uwIG|ckW$VvXtfi8sLUca{v9p*n+IDz4 zdbYhoK)~L4xH&^l>iEr@pWHpI)fnj>9aev5MUl|kx74LqeRkmgc7#F+Pb1d$&P=sb z@^4HK*8(3Lj>I~KVH+ zGS{g)0aKbb0W44>oL+Q^dX}Xt-pVh#XfD2>FTq@J7QHy<6nM9nTcJR6rHSbUXOtGz{uc zWub)gabLIXIMkAq6rI*V6qqtNrep{kbnu+Nu)SwH*BtQ(oKRW2f(Vy)4o%r6N?xGT zgSlit0WuFZgm89nhgxI?2i!4OYYG zL5=3S-XFlti8U$c{e#=^eQA7y4N2b!obVe(a#IW=B)dTxV-0*!4fZknJ$AzI4pjNU ztb;*pl0Dv6mhNq$Gw6mr#Iudtc`-RMz*io30B|lvacTZrj(h?5IsSf4f-kG}k)y^! zPJ3u_d^axINX{Jz3G#1R!Li&?s3O%!8@)%67y8|YBH$;g!7`X4sjkt6FxqPHeaE{z ze1Bve*+ppIm*Ba6_bprZHr_no`Bp9cDttQ0vlsntT zt}fZ!IfrA_+2(gqW1N609D+|6`GtnQBH$)c2zuY}f`oQ64p_R3U=;i6B>q(1^2@d6 zu`1nwdN*%Um&)hyE>&T>^YwM=-F~YR@VS{8r$R()=7U*uHNSaY^yMEtEa1}m z>=#!v^_}My&u7!V4vL(?W^D1-(tPPYlm-2{6~9-T%!f}4P`3YKD?+kZnbS`U1#aFT z)oHUBd6*UcC!#}IrAaOZD_XZzApokZ-KsFe6<(sFTX-)VYSSTk^VMYPSb+06f zN=C1b`9#s0V1hj$RJRZCy)}wHz5qodw*An!)ARVo(LsGEX?gP}D8)T&NPV;+FzKWB zJ^;pQLntBNY!U*2*g4sIf3z4Ygaz zKPT|7yZl-Hp);}Unx<(Gl;0-aoJD}Wt?bE*Tkld7jCW%z_mo%3%=irKd_b;z&967g z@kbN0xCGi(TTNI3owxh%PHy?3IQ&!sP8+@IP2?-3AYC0kD-(!OlBo$&&rct=&H8|C z);fWw%!Yjkg6j}*?IsycLJo}4>}X~MbGn}baVCJ4(3nnl4gX-_2%&3yr3O?IK-f!3sKaW zpv2MC$+^~CD7|O?4XpB6T@w%JrUj*kohI^>pVfE3*;a$zz+N6u1Mzl| zP~mOnQH>g>mJ)~OCX1#M%+xySw>=<&HW$jXm*#Z&xriO+-TK?G*P~|j^3b_?*KSlN5wpuGt zSwdg}aRaNHp@I4TSiNs>C;CD-)0%Ag@ZsQQHPwf>bJ3H7h??B{z()lTB#_&;L@d4= zjHYYhtAE-)#Vv;5P4-)*Wy9p3RS}bXRpTS>jxHO;vmtELqsh zJiqlzU9MxsAxwYCg)y1%iKl+D^x0l-C1hVnyK_|nRG2vhY$aGF+9{0ZnroZ_#xXKh zwL2Wto@w!~KvtXqptdN6TJPJNYe4neO|3>&xxX;1*hNZo157I9!8OI68KzA`M$(_I zN(j`Zk1h{3JKb+Mhv38F`$O;+7J7e#3cz|KYo0hz)%EibAI}f~FY*oU7LSt}l|ea@ z?UBy_AAwyNuRQo|Ð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